diff --git a/.eggs/README.txt b/.eggs/README.txt deleted file mode 100644 index 5d01668824f45c3a6683e12d1b9048bb1d273041..0000000000000000000000000000000000000000 --- a/.eggs/README.txt +++ /dev/null @@ -1,6 +0,0 @@ -This directory contains eggs that were downloaded by setuptools to build, test, and run plug-ins. - -This directory caches those eggs to prevent repeated downloads. - -However, it is safe to delete this directory. - diff --git a/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/LICENSE b/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/LICENSE deleted file mode 100644 index 353924be0e59b9ad7e6c22848c2189398481821d..0000000000000000000000000000000000000000 --- a/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright Jason R. Coombs - -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. diff --git a/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/PKG-INFO b/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/PKG-INFO deleted file mode 100644 index 75c36d65e0bc03a2c5e8d7995f786956ebc4823e..0000000000000000000000000000000000000000 --- a/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/PKG-INFO +++ /dev/null @@ -1,185 +0,0 @@ -Metadata-Version: 2.1 -Name: pytest-runner -Version: 6.0.1 -Summary: Invoke py.test as distutils command with dependency resolution -Home-page: https://github.com/pytest-dev/pytest-runner/ -Author: Jason R. Coombs -Author-email: jaraco@jaraco.com -Classifier: Development Status :: 7 - Inactive -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Framework :: Pytest -Requires-Python: >=3.7 -License-File: LICENSE -Provides-Extra: docs -Requires-Dist: sphinx ; extra == 'docs' -Requires-Dist: jaraco.packaging >=9 ; extra == 'docs' -Requires-Dist: rst.linker >=1.9 ; extra == 'docs' -Requires-Dist: jaraco.tidelift >=1.4 ; extra == 'docs' -Provides-Extra: testing -Requires-Dist: pytest >=6 ; extra == 'testing' -Requires-Dist: pytest-checkdocs >=2.4 ; extra == 'testing' -Requires-Dist: pytest-flake8 ; extra == 'testing' -Requires-Dist: pytest-cov ; extra == 'testing' -Requires-Dist: pytest-enabler >=1.0.1 ; extra == 'testing' -Requires-Dist: pytest-virtualenv ; extra == 'testing' -Requires-Dist: types-setuptools ; extra == 'testing' -Requires-Dist: pytest-black >=0.3.7 ; (platform_python_implementation != "PyPy") and extra == 'testing' -Requires-Dist: pytest-mypy >=0.9.1 ; (platform_python_implementation != "PyPy") and extra == 'testing' - -.. image:: https://img.shields.io/pypi/v/pytest-runner.svg - :target: `PyPI link`_ - -.. image:: https://img.shields.io/pypi/pyversions/pytest-runner.svg - :target: `PyPI link`_ - -.. _PyPI link: https://pypi.org/project/pytest-runner - -.. image:: https://github.com/pytest-dev/pytest-runner/workflows/tests/badge.svg - :target: https://github.com/pytest-dev/pytest-runner/actions?query=workflow%3A%22tests%22 - :alt: tests - -.. image:: https://img.shields.io/badge/code%20style-black-000000.svg - :target: https://github.com/psf/black - :alt: Code style: Black - -.. .. image:: https://readthedocs.org/projects/skeleton/badge/?version=latest -.. :target: https://skeleton.readthedocs.io/en/latest/?badge=latest - -.. image:: https://img.shields.io/badge/skeleton-2022-informational - :target: https://blog.jaraco.com/skeleton - -.. image:: https://tidelift.com/badges/package/pypi/pytest-runner - :target: https://tidelift.com/subscription/pkg/pypi-pytest-runner?utm_source=pypi-pytest-runner&utm_medium=readme - -Setup scripts can use pytest-runner to add setup.py test support for pytest -runner. - -Deprecation Notice -================== - -pytest-runner depends on deprecated features of setuptools and relies on features that break security -mechanisms in pip. For example 'setup_requires' and 'tests_require' bypass ``pip --require-hashes``. -See also `pypa/setuptools#1684 <https://github.com/pypa/setuptools/issues/1684>`_. - -It is recommended that you: - -- Remove ``'pytest-runner'`` from your ``setup_requires``, preferably removing the ``setup_requires`` option. -- Remove ``'pytest'`` and any other testing requirements from ``tests_require``, preferably removing the ``tests_requires`` option. -- Select a tool to bootstrap and then run tests such as tox. - -Usage -===== - -- Add 'pytest-runner' to your 'setup_requires'. Pin to '>=2.0,<3dev' (or - similar) to avoid pulling in incompatible versions. -- Include 'pytest' and any other testing requirements to 'tests_require'. -- Invoke tests with ``setup.py pytest``. -- Pass ``--index-url`` to have test requirements downloaded from an alternate - index URL (unnecessary if specified for easy_install in setup.cfg). -- Pass additional py.test command-line options using ``--addopts``. -- Set permanent options for the ``python setup.py pytest`` command (like ``index-url``) - in the ``[pytest]`` section of ``setup.cfg``. -- Set permanent options for the ``py.test`` run (like ``addopts`` or ``pep8ignore``) in the ``[pytest]`` - section of ``pytest.ini`` or ``tox.ini`` or put them in the ``[tool:pytest]`` - section of ``setup.cfg``. See `pytest issue 567 - <https://github.com/pytest-dev/pytest/issues/567>`_. -- Optionally, set ``test=pytest`` in the ``[aliases]`` section of ``setup.cfg`` - to cause ``python setup.py test`` to invoke pytest. - -Example -======= - -The most simple usage looks like this in setup.py:: - - setup( - setup_requires=[ - 'pytest-runner', - ], - tests_require=[ - 'pytest', - ], - ) - -Additional dependencies require to run the tests (e.g. mock or pytest -plugins) may be added to tests_require and will be downloaded and -required by the session before invoking pytest. - -Follow `this search on github -<https://github.com/search?utf8=%E2%9C%93&q=filename%3Asetup.py+pytest-runner&type=Code&ref=searchresults>`_ -for examples of real-world usage. - -Standalone Example -================== - -This technique is deprecated - if you have standalone scripts -you wish to invoke with dependencies, `use pip-run -<https://pypi.org/project/pip-run>`_. - -Although ``pytest-runner`` is typically used to add pytest test -runner support to maintained packages, ``pytest-runner`` may -also be used to create standalone tests. Consider `this example -failure <https://gist.github.com/jaraco/d979a558bc0bf2194c23>`_, -reported in `jsonpickle #117 -<https://github.com/jsonpickle/jsonpickle/issues/117>`_ -or `this MongoDB test -<https://gist.github.com/jaraco/0b9e482f5c0a1300dc9a>`_ -demonstrating a technique that works even when dependencies -are required in the test. - -Either example file may be cloned or downloaded and simply run on -any system with Python and Setuptools. It will download the -specified dependencies and run the tests. Afterward, the the -cloned directory can be removed and with it all trace of -invoking the test. No other dependencies are needed and no -system configuration is altered. - -Then, anyone trying to replicate the failure can do so easily -and with all the power of pytest (rewritten assertions, -rich comparisons, interactive debugging, extensibility through -plugins, etc). - -As a result, the communication barrier for describing and -replicating failures is made almost trivially low. - -Considerations -============== - -Conditional Requirement ------------------------ - -Because it uses Setuptools setup_requires, pytest-runner will install itself -on every invocation of setup.py. In some cases, this causes delays for -invocations of setup.py that will never invoke pytest-runner. To help avoid -this contingency, consider requiring pytest-runner only when pytest -is invoked:: - - needs_pytest = {'pytest', 'test', 'ptr'}.intersection(sys.argv) - pytest_runner = ['pytest-runner'] if needs_pytest else [] - - # ... - - setup( - #... - setup_requires=[ - #... (other setup requirements) - ] + pytest_runner, - ) - -For Enterprise -============== - -Available as part of the Tidelift Subscription. - -This project and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use. - -`Learn more <https://tidelift.com/subscription/pkg/pypi-PROJECT?utm_source=pypi-PROJECT&utm_medium=referral&utm_campaign=github>`_. - -Security Contact -================ - -To report a security vulnerability, please use the -`Tidelift security contact <https://tidelift.com/security>`_. -Tidelift will coordinate the fix and disclosure. diff --git a/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/RECORD b/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/RECORD deleted file mode 100644 index d7ff24dbeef0d3d0fe2e158334c12c4a101718ee..0000000000000000000000000000000000000000 --- a/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/RECORD +++ /dev/null @@ -1,7 +0,0 @@ -ptr/__init__.py,sha256=0UfzhCooVgCNTBwVEOPOVGEPck4pnl_6PTfsC-QzNGM,6730 -pytest_runner-6.0.1.dist-info/LICENSE,sha256=2z8CRrH5J48VhFuZ_sR4uLUG63ZIeZNyL4xuJUKF-vg,1050 -pytest_runner-6.0.1.dist-info/METADATA,sha256=Ho3FvAFjFHeY5OQ64WFzkLigFaIpuNr4G3uSmOk3nho,7319 -pytest_runner-6.0.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92 -pytest_runner-6.0.1.dist-info/entry_points.txt,sha256=BqezBqeO63XyzSYmHYE58gKEFIjJUd-XdsRQkXHy2ig,58 -pytest_runner-6.0.1.dist-info/top_level.txt,sha256=DPzHbWlKG8yq8EOD5UgEvVNDWeJRPyimrwfShwV6Iuw,4 -pytest_runner-6.0.1.dist-info/RECORD,, diff --git a/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/WHEEL b/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/WHEEL deleted file mode 100644 index 98c0d20b7a64f4f998d7913e1d38a05dba20916c..0000000000000000000000000000000000000000 --- a/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.42.0) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/entry_points.txt b/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/entry_points.txt deleted file mode 100644 index 08606705d825d4ad98f0a7acfdc654d1e6c1b8fa..0000000000000000000000000000000000000000 --- a/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[distutils.commands] -ptr = ptr:PyTest -pytest = ptr:PyTest diff --git a/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/requires.txt b/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/requires.txt deleted file mode 100644 index 153518886b4e238ea0fecf91de9d43e7f4ff31f9..0000000000000000000000000000000000000000 --- a/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/requires.txt +++ /dev/null @@ -1,17 +0,0 @@ - -[docs] -sphinx -jaraco.packaging>=9 -rst.linker>=1.9 -jaraco.tidelift>=1.4 - -[testing] -pytest>=6 -pytest-checkdocs>=2.4 -pytest-flake8 -pytest-cov -pytest-enabler>=1.0.1 -pytest-virtualenv -types-setuptools -pytest-black>=0.3.7 -pytest-mypy>=0.9.1 diff --git a/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/top_level.txt b/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/top_level.txt deleted file mode 100644 index e9148ae387cc078aec4d97be87acde54320781de..0000000000000000000000000000000000000000 --- a/.eggs/pytest_runner-6.0.1-py3.12.egg/EGG-INFO/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -ptr diff --git a/.eggs/pytest_runner-6.0.1-py3.12.egg/ptr/__init__.py b/.eggs/pytest_runner-6.0.1-py3.12.egg/ptr/__init__.py deleted file mode 100644 index 41192fa83ea9f3194d5a31f429e7fd5515c7529d..0000000000000000000000000000000000000000 --- a/.eggs/pytest_runner-6.0.1-py3.12.egg/ptr/__init__.py +++ /dev/null @@ -1,216 +0,0 @@ -""" -Implementation -""" - -import os as _os -import shlex as _shlex -import contextlib as _contextlib -import sys as _sys -import operator as _operator -import itertools as _itertools -import warnings as _warnings - -import pkg_resources -import setuptools.command.test as orig -from setuptools import Distribution - - -@_contextlib.contextmanager -def _save_argv(repl=None): - saved = _sys.argv[:] - if repl is not None: - _sys.argv[:] = repl - try: - yield saved - finally: - _sys.argv[:] = saved - - -class CustomizedDist(Distribution): - - allow_hosts = None - index_url = None - - def fetch_build_egg(self, req): - """Specialized version of Distribution.fetch_build_egg - that respects respects allow_hosts and index_url.""" - from setuptools.command.easy_install import easy_install - - dist = Distribution({'script_args': ['easy_install']}) - dist.parse_config_files() - opts = dist.get_option_dict('easy_install') - keep = ( - 'find_links', - 'site_dirs', - 'index_url', - 'optimize', - 'site_dirs', - 'allow_hosts', - ) - for key in list(opts): - if key not in keep: - del opts[key] # don't use any other settings - if self.dependency_links: - links = self.dependency_links[:] - if 'find_links' in opts: - links = opts['find_links'][1].split() + links - opts['find_links'] = ('setup', links) - if self.allow_hosts: - opts['allow_hosts'] = ('test', self.allow_hosts) - if self.index_url: - opts['index_url'] = ('test', self.index_url) - install_dir_func = getattr(self, 'get_egg_cache_dir', _os.getcwd) - install_dir = install_dir_func() - cmd = easy_install( - dist, - args=["x"], - install_dir=install_dir, - exclude_scripts=True, - always_copy=False, - build_directory=None, - editable=False, - upgrade=False, - multi_version=True, - no_report=True, - user=False, - ) - cmd.ensure_finalized() - return cmd.easy_install(req) - - -class PyTest(orig.test): - """ - >>> import setuptools - >>> dist = setuptools.Distribution() - >>> cmd = PyTest(dist) - """ - - user_options = [ - ('extras', None, "Install (all) setuptools extras when running tests"), - ( - 'index-url=', - None, - "Specify an index url from which to retrieve dependencies", - ), - ( - 'allow-hosts=', - None, - "Whitelist of comma-separated hosts to allow " - "when retrieving dependencies", - ), - ( - 'addopts=', - None, - "Additional options to be passed verbatim to the pytest runner", - ), - ] - - def initialize_options(self): - self.extras = False - self.index_url = None - self.allow_hosts = None - self.addopts = [] - self.ensure_setuptools_version() - - @staticmethod - def ensure_setuptools_version(): - """ - Due to the fact that pytest-runner is often required (via - setup-requires directive) by toolchains that never invoke - it (i.e. they're only installing the package, not testing it), - instead of declaring the dependency in the package - metadata, assert the requirement at run time. - """ - pkg_resources.require('setuptools>=27.3') - - def finalize_options(self): - if self.addopts: - self.addopts = _shlex.split(self.addopts) - - @staticmethod - def marker_passes(marker): - """ - Given an environment marker, return True if the marker is valid - and matches this environment. - """ - return ( - not marker - or not pkg_resources.invalid_marker(marker) - and pkg_resources.evaluate_marker(marker) - ) - - def install_dists(self, dist): - """ - Extend install_dists to include extras support - """ - return _itertools.chain( - orig.test.install_dists(dist), self.install_extra_dists(dist) - ) - - def install_extra_dists(self, dist): - """ - Install extras that are indicated by markers or - install all extras if '--extras' is indicated. - """ - extras_require = dist.extras_require or {} - - spec_extras = ( - (spec.partition(':'), reqs) for spec, reqs in extras_require.items() - ) - matching_extras = ( - reqs - for (name, sep, marker), reqs in spec_extras - # include unnamed extras or all if self.extras indicated - if (not name or self.extras) - # never include extras that fail to pass marker eval - and self.marker_passes(marker) - ) - results = list(map(dist.fetch_build_eggs, matching_extras)) - return _itertools.chain.from_iterable(results) - - @staticmethod - def _warn_old_setuptools(): - msg = ( - "pytest-runner will stop working on this version of setuptools; " - "please upgrade to setuptools 30.4 or later or pin to " - "pytest-runner < 5." - ) - ver_str = pkg_resources.get_distribution('setuptools').version - ver = pkg_resources.parse_version(ver_str) - if ver < pkg_resources.parse_version('30.4'): - _warnings.warn(msg) - - def run(self): - """ - Override run to ensure requirements are available in this session (but - don't install them anywhere). - """ - self._warn_old_setuptools() - dist = CustomizedDist() - for attr in 'allow_hosts index_url'.split(): - setattr(dist, attr, getattr(self, attr)) - for attr in ( - 'dependency_links install_requires tests_require extras_require ' - ).split(): - setattr(dist, attr, getattr(self.distribution, attr)) - installed_dists = self.install_dists(dist) - if self.dry_run: - self.announce('skipping tests (dry run)') - return - paths = map(_operator.attrgetter('location'), installed_dists) - with self.paths_on_pythonpath(paths): - with self.project_on_sys_path(): - return self.run_tests() - - @property - def _argv(self): - return ['pytest'] + self.addopts - - def run_tests(self): - """ - Invoke pytest, replacing argv. Return result code. - """ - with _save_argv(_sys.argv[:1] + self.addopts): - result_code = __import__('pytest').main() - if result_code: - raise SystemExit(result_code) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d13d2b511415521555aacddc285321016222d5b1..cbad9c801ab13589f43199e69813ce249ea6e2d9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,7 +3,7 @@ image: docker:20.10.16 # Define the Docker image stages: # Define stages in the pipeline - prepare - build - # - test + - test - deploy prepare: @@ -38,18 +38,18 @@ build-docs: - docs/build # Save the build output for later stages expire_in: 12 month # Optional: Set how long to keep the artifacts (default: 30 days) -# # Job to test the implementation -# test: -# stage: test -# dependencies: -# - prepare -# image: -# name: $CI_REGISTRY_IMAGE:latest -# entrypoint: [""] -# tags: -# - docker -# script: -# - python -m pytest # Run the tests +# Job to test the implementation +test: + stage: test + dependencies: + - prepare + image: + name: $CI_REGISTRY_IMAGE:latest + entrypoint: [""] + tags: + - docker + script: + - python -m pytest # Run the tests # Job to deploy documentation to GitLab Pages pages: