From c2602b19ddea21cbe64aefca16b53432b39c7ec4 Mon Sep 17 00:00:00 2001 From: wiz Date: Sat, 6 May 2023 09:09:11 +0000 Subject: [PATCH] py-sphobjinv: update to 2.3.1. ### [2.3.1] - 2022-11-29 #### Changed * The printout of the inferred `intersphinx_mapping` item for inventories retrieved by URL (`--url`) in the 'suggest' CLI mode is now relocated to fall immediately below the inventory-search output. It also now is displayed even if no objects in the `objects.inv` satisfy the score threshold. ([#262](https://github.com/bskinn/sphobjinv/issues/262)) * The 'suggest' CLI mode output now includes dividers for improved readability. #### Tests * The plaintext `tests/resource/objects_attrs.txt` was converted to POSIX EOLs and declared as binary to git, in order to provide a consistent state for sdist packaging, regardless of platform (POSIX vs Windows). * As a result, it was necessary to modify the `scratch_path` fixture to "`unix2dos`" this file on Windows systems, in order to provide a consistent test state. * Similarly, the `decomp_cmp_test` fixture was modified to "`unix2dos`" the `objects_attrs.txt` resource before comparisons, again in order to provide a consistent reference artifact. Implementing required direct manipulation of the bytes contents of the file, instead of the `filecmp.cmp` method that had been used previously. * The README doctests and shell tests have been removed from the default pytest suite. They must be explicitly opted-in with the `--readme` and `--doctest-glob="README.rst"` flags to pytest. * A new job, `readme`, has been added to the `aux_tests` stage of the Azure Pipelines CI to run these tests for PRs and release branches. * The constraint for `pytest-check` was bumped to `>=1.1.2` and all uses of the `check` fixture were revised from `with check.check(...):` to `with check(...):`. ([#265](https://github.com/bskinn/sphobjinv/issues/265)) * Azure Pipelines now has Python 3.11 available for all of Ubuntu, Windows and MacOS, so it was added to the core text matrix for all platforms. * A new CI job was created on Azure Pipelines that creates an sdist from the current project, extracts it into a sandboxed environment, installs the dev dependencies, and runs the pytest suite (`azure-sdisttest.yml`). * All uses of `pytest-check` were updated to use the [v1.1.2 syntax](https://github.com/okken/pytest-check/blob/main/changelog.md#110---2022-nov-21) (`check` fixture, or `from pytest_check import check`). #### Internal * The `sys.exit()` in the case of no objects falling above the 'suggest' search threshold was refactored into the main `do_suggest()` body, to minimize the surprise of an `exit()` call coming in a subfunction. ([#263](https://github.com/bskinn/sphobjinv/issues/263)) #### Packaging * `MANIFEST.in` was revised in order to provide a testable (`pytest --nonloc`) sdist, in order to streamline packaging of `sphobjinv` for conda-forge. (Thanks very much to [@anjos](https://github.com/anjos) for getting the recipes for `sphobjinv` and its dependencies in place! See [#264](https://github.com/bskinn/sphobjinv/issues/264).) #### Administrative * `sphobjinv` is now available via conda-forge! A note was added to the docs to indicate this. * The version bump on `pytest-check` no longer permits the use of Python 3.6 in CI. As Python 3.6 is nearly a year beyond EOL, this seems a reasonable time to officially drop support for it. `python_requires` will still be at `>=3.6` for now; it *should* still work for 3.6...but, no guarantees. * The hook versions for `pre-commit-hooks`, `black`, and `pyproject-fmt` were updated to v4.3, v22.10, and v0.3.5, respectively. * `CONTENT_LICENSE.txt` was created, to specifically house the full content/documentation license information. * `LICENSE.txt` was revised to only hold the MIT License for the code, primarily so that Github's automatic systems will recognize the project as MIT licensed. * Caching of pip downloads was added to all of the Azure Pipelines jobs. * The version constraint for `pytest-check` was raised to `>=1.1.2`. * A temporary upper bound was placed on the `flake8` version (now `>=5,<6`, instead of `>=5`) to avoid pip resolver failures likely due to conflicts with constraints declared by plugins. * The older versions of `jsonschema` tested in the `tox` matrix were streamlined down to 3.0 (`==3.0`), 3.x (`<4`), 4.0 (`<4.1`) and 4.8 (`<4.9`). * The pin of `sphinx-issues==0.4.0` in the `tox` matrix was removed, to match the unpinned package in the `requirements-xxx.txt` files. ### [2.3] - 2022-11-08 #### Added * The CLI now prints the project name and version for the `objects.inv` as part of the 'suggest' mode output. * The CLI now prints an inferred `intersphinx_mapping` entry for a remote docset as part of the 'suggest' mode output, where such inference is possible. The output from this mapping inference was added to the relevant tests, and a couple of unit tests on some basic pieces of functionality were written. ([#149](https://github.com/bskinn/sphobjinv/issues/149)) * The CLI now provides considerably more information about what is happening with the URLs it checks when trying to retrieve a remote inventory. ([#99](https://github.com/bskinn/sphobjinv/issues/99), plus more) * CLI 'suggest' results output now displays more information about the total number of objects in the inventory, the search score threshold, and the number of results falling at/above that threshold. ([#232](https://github.com/bskinn/sphobjinv/issues/232)) * A new CLI option, `-p`/`--paginate`, enables paging of the results from the `suggest` feature. ([#70](https://github.com/bskinn/sphobjinv/issues/70)) #### Fixed * The regex for parsing object lines from decompressed inventories now correctly processes `{role}` values that contain internal colons. * CLI corner case where options are passed but no subparser is specified now results in a clean error-exit, instead of an exception. ([#239](https://github.com/bskinn/sphobjinv/issues/239)) #### Documentation * Updated doctests to reflect the new v22.1 attrs `objects.inv` used for demonstration purposes. * Updated `syntax.rst` to indicate that the `{role}` in an inventory object MAY contain a colon. * Added new 'CLI implementation' pages for the new modules, downstream of the refactoring of the CLI 'convert' and 'suggest' code. * Revised the intro paragraph of the 'CLI usage' page to more clearly emphasize the two CLI subcommands and the links to their respective docs pages. * Fixed a mistake in the CLI help info for the `--url` argument to `convert`. #### Tests * Various tests were updated to reflect the contents of the new v22.1 attrs `objects.inv` introduced to replace the previous v17.2 inventory. * A modern Sphinx `objects.inv` (v6.0.0b) was added to `tests/resource` as `objects_sphinx.inv`, and the previous v1.6.6 was renamed to `objects_sphinx_1_6_6.inv`. * The 'valid objects' test cases were updated to reflect the possibility for a colon within `{role}`: * The colon-within-`{role}` test case was moved from 'invalid' to 'valid'. * The colon-within-`{domain}` test case was also moved from 'invalid' to 'valid', but with an annotation added to indicate that it's not actually viable---it will actually be interpreted incorrectly, with the first portion of the colon-containing `{domain}` imported as `{domain}`, and the remainder imported as part of `{role}`. #### Internal * Refactor CLI code to place the 'convert' and 'suggest' implementations in their own modules. * Refactor CLI 'suggest' code to the main `do_suggest()` function and a handful of sub-functions. * Rename the `log_print()` CLI helper function to the more-descriptive `print_stderr()`. * Bump development Sphinx version to v5.3. * Bump flake8 version to >=5, due to the absorption of flake8-colors colorization functionality. The flake8/tox config was updated accordingly. * Bump pre-commit black hook to v22.3.0. * Remove PyPy and Python 3.6 from Azure Pipelines test matrix. * Revise `__version__` retrieval in `setup.py` to use an intermediate dictionary with `exec()`. * Update `setup.cfg` to use `license_files`, instead of the deprecated `license_file`. #### Administrative * Apply CC BY 4.0 to documentation and docstrings and update project files to reflect. ### [2.2.2] - 2022-03-22 #### Fixed * UnicodeDecodeErrors are ignored within the vendored `fuzzywuzzy` package during `suggest` operations, using the `errors=replace` mode within bytes.decode(). * This misbehavior emerged after vendoring `fuzzywuzzy`, suggesting that it was a bug fixed later on in that project's development, after the point from which it was vendored. * This change may alter `suggest` behavior for those inventory objects with pathological characters. But, given their rarity, user experience is not expected to be noticeably affected. #### Internal * The `pyproject-fmt` formatted was added as a pre-commit hook. * The `flake8-raise` plugin was added to the linting suite. #### Testing * A smoke test for error-free `suggest` execution was added for all of the inventory files in `tests/resource`. ### [2.2.1] - 2022-02-05 #### Internal * The `benchmarks.py` file within the vendored version of `fuzzywuzzy` was removed. This *should* have no effect on `sphobjinv` functionality. * Per [#223](https://github.com/bskinn/sphobjinv/issues/223), the Python 2 code within `benchmarks.py` breaks a full-source compilation done as part of an RPM packaging workflow. ### [2.2] - 2022-01-30 #### Administrative * The project documentation has been updated to reflect the deprecation of the `python-Levenshtein` speedup. * `pre-commit` has been added to the project, primarily to automate `black` code formatting on every commit. * The default trailing-whitespace, end-of-file, YAML syntax, and large-file-prevention hooks have also been added. #### Internal * `sphinx-removed-in` was added as a dev and RTD dependency, to provide the `versionremoved` Sphinx directive. ### [2.2b1] - 2021-12-23 #### Removed * Acceleration of the `suggest` functionality via use of `python-Levenshtein` is no longer possible due to the vendoring of an early, MIT-licensed version of `fuzzywuzzy`, as noted below. The `speedup` install extra is now obsolete, and has been removed. #### Internal * The `fuzzywuzzy` string matcher was vendored into the project from a point in its development history before the `python-Levenshtein` dependency, and its corresponding GPL encumbrance, was introduced. #### Administrative * Project default branch migrated to `main` from `master`. * Standard development Python version bumped to 3.10. * Standard development Sphinx version bumped to 4.3.1. * Active support for Python 3.11 added. ### [2.1] - 2021-04-14 #### Added * Python 3.10 support was officially added. #### Changed * The User-Agent header sent by `Inventory` when making an HTTP(S) request now identifies `sphobjinv` and its version (anticipate no API or behavior change). * An extraneous newline was removed before tables printed in the 'suggest' CLI mode (cosmetic change). #### Fixed * Previously, `sphobjinv.Inventory` would ignore entries in `objects.inv` that contained spaces within `name` (see [#181](https://github.com/bskinn/sphobjinv/issues/181)); this is now fixed. #### Removed * Python 3.5 is no longer supported. * The relaxation of the integer constraint on the `priority` field introduced in v2.1b1 has been *reverted*, as `objects.inv` data lines with such non-integer `priority` values are skipped by Sphinx. #### Internal * Where possible, string interpolation has been refactored to use f-strings. * A 'speedup' `extras_require` entry has been added to allow simple installation of `python-Levenshtein` for Linux and MacOS platforms, as `pip install sphobjinv[speedup]`. This extra does nothing on Windows, since compilation machinery is anticipated not to be available for most users. * `objects_mkdoc_zlib0.inv`, which was compressed at `zlib` level 0, has been added to the test resources directory. * This file had to be flagged as binary in `.gitattributes` in order to avoid git EOL auto-conversion on Windows. * The CLI functionality was refactored from the single `sphobjinv.cmdline` module into a dedicated set of `sphobjinv.cli.*` submodules. * Some internal `type(...) is ...` checks were replaced with `isinstance(...)` #### Testing * Added *significant* body of new tests to confirm inventory compatibility with both `sphobjinv` and Sphinx itself. * Consistency checks added both for data within `sphobjinv.Inventory` instances **AND** as emitted from `sphinx.ext.inventory.InventoryFile.load()`. * The tests in `tests/test_valid_objects.py` strive to bracket as precisely as possible what content is allowed on an `objects.inv` data line, in addition to providing guidance on what is allowable, but discouraged. `docs/source/syntax.rst` was also edited to reflect this guidance. * Additional tests have been added to probe corner cases involving Windows EOLs. * A test was added to ensure that the schema in `sphobjinv.schema` is in fact a valid JSON schema. * Multiple asserts/checks per test method have been converted to use `pytest-check` instead of `pytest-subtests`, due to some inconsistent behavior with the latter. * `tox` environments and dependencies were updated, and some flake8 configuration was adjusted. #### Administrative * Standard development Python version bumped to 3.9. * Standard development Sphinx version bumped to 3.5.0. * Added `[skip ci]` flag in commit text for skipping Github Actions CI. * RtD upgraded to use Python 3.8. * Added 'radio Sphinx' logo to RtD docs. * Drafted `CONTRIBUTING.md` and added PR & issue templates. * Tranferred most project metadata from `setup.py` to `setup.cfg`. ### [2.1b1] - 2020-11-13 #### Fixed * Equality tests on Inventory and DataObjStr/DataObjBytes instances now work correctly. * Non-integer and non-numeric values for `priority` are now accepted during `Inventory` instantiation, consistent with what is allowed by `DataObjStr` and `DataObjBytes` instantiation. ### [2.1a2] - 2020-10-27 #### Added * When an inventory is retrieved via CLI from a remote URL with `-u`, the resolved location of the inventory is included in generated JSON at `json_dict.metadata.url`. #### Changed * CLI logging messages are now emitted to stderr instead of stdout. ### [2.1a1] - 2020-10-26 #### Added * A hyphen can now be passed as the CLI input and/or output file name to instruct sphobjinv to use stdin and/or stdout, respectively. * The `fileops` and `inventory` APIs are now tested to work with both strings and `pathlib.Path` objects, where they interact with the filesystem. #### Refactored * Patterns in regular expressions are now defined with raw strings to improve readability. --- textproc/py-sphobjinv/Makefile | 15 +++++++--- textproc/py-sphobjinv/PLIST | 53 +++++++++++++++++++++++++++++++--- textproc/py-sphobjinv/distinfo | 8 ++--- 3 files changed, 64 insertions(+), 12 deletions(-) diff --git a/textproc/py-sphobjinv/Makefile b/textproc/py-sphobjinv/Makefile index a629c857f5a8..ea22fe9fab79 100644 --- a/textproc/py-sphobjinv/Makefile +++ b/textproc/py-sphobjinv/Makefile @@ -1,8 +1,7 @@ -# $NetBSD: Makefile,v 1.3 2022/01/05 15:41:26 wiz Exp $ +# $NetBSD: Makefile,v 1.4 2023/05/06 09:09:11 wiz Exp $ -DISTNAME= sphobjinv-2.0.1 +DISTNAME= sphobjinv-2.3.1 PKGNAME= ${PYPKGPREFIX}-${DISTNAME} -PKGREVISION= 2 CATEGORIES= textproc python MASTER_SITES= ${MASTER_SITE_PYPI:=s/sphobjinv/} @@ -13,8 +12,12 @@ LICENSE= mit DEPENDS+= ${PYPKGPREFIX}-attrs>=17.4:../../devel/py-attrs DEPENDS+= ${PYPKGPREFIX}-certifi-[0-9]*:../../security/py-certifi -DEPENDS+= ${PYPKGPREFIX}-fuzzywuzzy>=0.3:../../devel/py-fuzzywuzzy DEPENDS+= ${PYPKGPREFIX}-jsonschema>=2.0:../../textproc/py-jsonschema +TEST_DEPENDS+= ${PYPKGPREFIX}-dictdiffer>=0:../../devel/py-dictdiffer +TEST_DEPENDS+= ${PYPKGPREFIX}-sphinx>=0:../../textproc/py-sphinx +TEST_DEPENDS+= ${PYPKGPREFIX}-stdio-mgr>=0:../../devel/py-stdio-mgr +TEST_DEPENDS+= ${PYPKGPREFIX}-test>=0:../../devel/py-test +TEST_DEPENDS+= ${PYPKGPREFIX}-test-check>=0:../../devel/py-test-check USE_LANGUAGES= # none @@ -26,5 +29,9 @@ post-install: cd ${DESTDIR}${PREFIX}/bin && \ ${MV} sphobjinv sphobjinv-${PYVERSSUFFIX} || ${TRUE} +TEST_ENV+= PYTHONPATH=${WRKSRC}/build/lib +do-test: + cd ${WRKSRC} && ${SETENV} ${TEST_ENV} pytest-${PYVERSSUFFIX} + .include "../../lang/python/egg.mk" .include "../../mk/bsd.pkg.mk" diff --git a/textproc/py-sphobjinv/PLIST b/textproc/py-sphobjinv/PLIST index 950eb080c120..024500c0a38a 100644 --- a/textproc/py-sphobjinv/PLIST +++ b/textproc/py-sphobjinv/PLIST @@ -1,4 +1,4 @@ -@comment $NetBSD: PLIST,v 1.1 2020/04/06 08:03:00 wiz Exp $ +@comment $NetBSD: PLIST,v 1.2 2023/05/06 09:09:11 wiz Exp $ bin/sphobjinv-${PYVERSSUFFIX} ${PYSITELIB}/${EGG_INFODIR}/PKG-INFO ${PYSITELIB}/${EGG_INFODIR}/SOURCES.txt @@ -9,9 +9,54 @@ ${PYSITELIB}/${EGG_INFODIR}/top_level.txt ${PYSITELIB}/sphobjinv/__init__.py ${PYSITELIB}/sphobjinv/__init__.pyc ${PYSITELIB}/sphobjinv/__init__.pyo -${PYSITELIB}/sphobjinv/cmdline.py -${PYSITELIB}/sphobjinv/cmdline.pyc -${PYSITELIB}/sphobjinv/cmdline.pyo +${PYSITELIB}/sphobjinv/__main__.py +${PYSITELIB}/sphobjinv/__main__.pyc +${PYSITELIB}/sphobjinv/__main__.pyo +${PYSITELIB}/sphobjinv/_vendored/__init__.py +${PYSITELIB}/sphobjinv/_vendored/__init__.pyc +${PYSITELIB}/sphobjinv/_vendored/__init__.pyo +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/__init__.py +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/__init__.pyc +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/__init__.pyo +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/fuzz.py +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/fuzz.pyc +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/fuzz.pyo +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/process.py +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/process.pyc +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/process.pyo +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/tests.py +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/tests.pyc +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/tests.pyo +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/utils.py +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/utils.pyc +${PYSITELIB}/sphobjinv/_vendored/fuzzywuzzy/utils.pyo +${PYSITELIB}/sphobjinv/cli/__init__.py +${PYSITELIB}/sphobjinv/cli/__init__.pyc +${PYSITELIB}/sphobjinv/cli/__init__.pyo +${PYSITELIB}/sphobjinv/cli/convert.py +${PYSITELIB}/sphobjinv/cli/convert.pyc +${PYSITELIB}/sphobjinv/cli/convert.pyo +${PYSITELIB}/sphobjinv/cli/core.py +${PYSITELIB}/sphobjinv/cli/core.pyc +${PYSITELIB}/sphobjinv/cli/core.pyo +${PYSITELIB}/sphobjinv/cli/load.py +${PYSITELIB}/sphobjinv/cli/load.pyc +${PYSITELIB}/sphobjinv/cli/load.pyo +${PYSITELIB}/sphobjinv/cli/parser.py +${PYSITELIB}/sphobjinv/cli/parser.pyc +${PYSITELIB}/sphobjinv/cli/parser.pyo +${PYSITELIB}/sphobjinv/cli/paths.py +${PYSITELIB}/sphobjinv/cli/paths.pyc +${PYSITELIB}/sphobjinv/cli/paths.pyo +${PYSITELIB}/sphobjinv/cli/suggest.py +${PYSITELIB}/sphobjinv/cli/suggest.pyc +${PYSITELIB}/sphobjinv/cli/suggest.pyo +${PYSITELIB}/sphobjinv/cli/ui.py +${PYSITELIB}/sphobjinv/cli/ui.pyc +${PYSITELIB}/sphobjinv/cli/ui.pyo +${PYSITELIB}/sphobjinv/cli/write.py +${PYSITELIB}/sphobjinv/cli/write.pyc +${PYSITELIB}/sphobjinv/cli/write.pyo ${PYSITELIB}/sphobjinv/data.py ${PYSITELIB}/sphobjinv/data.pyc ${PYSITELIB}/sphobjinv/data.pyo diff --git a/textproc/py-sphobjinv/distinfo b/textproc/py-sphobjinv/distinfo index ed0c0a302084..d9a52ec40ac5 100644 --- a/textproc/py-sphobjinv/distinfo +++ b/textproc/py-sphobjinv/distinfo @@ -1,5 +1,5 @@ -$NetBSD: distinfo,v 1.3 2021/10/26 11:23:15 nia Exp $ +$NetBSD: distinfo,v 1.4 2023/05/06 09:09:11 wiz Exp $ -BLAKE2s (sphobjinv-2.0.1.tar.gz) = d23135fc3236db2e3e8ff4be871d823d7efe6a6db45f9f6fa531bd3c347b81a9 -SHA512 (sphobjinv-2.0.1.tar.gz) = bc471fdd41d54d3483781a0c7214bd65711872a62bb7c03473bd731f70c853c1a4030a3a920db27bc0669ded3177d52847c43abc0da5edbc9683ffef0d0b1e99 -Size (sphobjinv-2.0.1.tar.gz) = 28559 bytes +BLAKE2s (sphobjinv-2.3.1.tar.gz) = ac501db4adf39df8bc55345977bb9b11dcfebe2a5f054b1fa8c475e7f9eb2dd2 +SHA512 (sphobjinv-2.3.1.tar.gz) = 1c97a12de1b97b446ba16a7d08599941fcd3b4b066c19290aa1350f3953bd269cb7fce36f1dcf94ec6ef03232c75fe8a136091fbdad7cdd7e2e72eed75f42b51 +Size (sphobjinv-2.3.1.tar.gz) = 268550 bytes