malthe / chameleon

Fast HTML/XML template engine for Python
https://chameleon.readthedocs.io
Other
176 stars 64 forks source link

3.9.1: pytest is failing #348

Closed kloczek closed 11 months ago

kloczek commented 2 years ago

I'm trying to package your module as an rpm package. So I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.

Here is pytest output:

```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-chameleon-3.9.1-5.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-chameleon-3.9.1-5.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra =========================================================================== test session starts ============================================================================ platform linux -- Python 3.8.12, pytest-6.2.5, py-1.11.0, pluggy-1.0.0 rootdir: /home/tkloczko/rpmbuild/BUILD/chameleon-3.9.1 collected 71 items src/chameleon/tests/test_astutil.py . [ 1%] src/chameleon/tests/test_doctests.py EEEEE [ 8%] src/chameleon/tests/test_exc.py . [ 9%] src/chameleon/tests/test_loader.py ........ [ 21%] src/chameleon/tests/test_parser.py .. [ 23%] src/chameleon/tests/test_sniffing.py .... [ 29%] src/chameleon/tests/test_templates.py ................................................ [ 97%] src/chameleon/tests/test_tokenizer.py .. [100%] ================================================================================== ERRORS ================================================================================== _______________________________________________________________ ERROR at setup of DoctestCase.test_compiler ________________________________________________________________ cls = , func = . at 0x7ff580f1e3a0>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:311: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:255: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:265: in __call__ return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:80: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:150: in pytest_runtest_setup item.session._setupstate.prepare(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:452: in prepare raise e /usr/lib/python3.8/site-packages/_pytest/runner.py:449: in prepare col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_compiler' /usr/lib/python3.8/site-packages/_pytest/unittest.py:195: AttributeError __________________________________________________________________ ERROR at setup of DoctestCase.test_exc __________________________________________________________________ cls = , func = . at 0x7ff580313af0>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:311: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:255: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:265: in __call__ return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:80: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:150: in pytest_runtest_setup item.session._setupstate.prepare(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:452: in prepare raise e /usr/lib/python3.8/site-packages/_pytest/runner.py:449: in prepare col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_exc' /usr/lib/python3.8/site-packages/_pytest/unittest.py:195: AttributeError __________________________________________________________________ ERROR at setup of DoctestCase.test_tal __________________________________________________________________ cls = , func = . at 0x7ff5801ebd30>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:311: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:255: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:265: in __call__ return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:80: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:150: in pytest_runtest_setup item.session._setupstate.prepare(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:452: in prepare raise e /usr/lib/python3.8/site-packages/_pytest/runner.py:449: in prepare col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_tal' /usr/lib/python3.8/site-packages/_pytest/unittest.py:195: AttributeError _________________________________________________________________ ERROR at setup of DoctestCase.test_tales _________________________________________________________________ cls = , func = . at 0x7ff580fd3790>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:311: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:255: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:265: in __call__ return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:80: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:150: in pytest_runtest_setup item.session._setupstate.prepare(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:452: in prepare raise e /usr/lib/python3.8/site-packages/_pytest/runner.py:449: in prepare col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_tales' /usr/lib/python3.8/site-packages/_pytest/unittest.py:195: AttributeError _________________________________________________________________ ERROR at setup of DoctestCase.test_utils _________________________________________________________________ cls = , func = . at 0x7ff58038ef70>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:311: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:255: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:265: in __call__ return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:80: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:150: in pytest_runtest_setup item.session._setupstate.prepare(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:452: in prepare raise e /usr/lib/python3.8/site-packages/_pytest/runner.py:449: in prepare col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_utils' /usr/lib/python3.8/site-packages/_pytest/unittest.py:195: AttributeError ========================================================================= short test summary info ========================================================================== ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_compiler - AttributeError: '_DocTestSuite' object has no attribute 'test_compiler' ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_exc - AttributeError: '_DocTestSuite' object has no attribute 'test_exc' ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_tal - AttributeError: '_DocTestSuite' object has no attribute 'test_tal' ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_tales - AttributeError: '_DocTestSuite' object has no attribute 'test_tales' ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_utils - AttributeError: '_DocTestSuite' object has no attribute 'test_utils' ======================================================================= 66 passed, 5 errors in 2.97s ======================================================================= ```
icemac commented 2 years ago

@kloczek You have hit another project those tests do not run using pytest, see https://github.com/malthe/chameleon/blob/e64dc4fa3921cfaa886cab6c766f7237ebb2f3a3/tox.ini#L16 how to run the tests for this project.

kloczek commented 2 years ago

It is one very good reason to support pytest. That framework provides way better flexilibily of testing by just install pytest extension. zope.testrunner is more and more behind what pytest can do. Just one stat from my library of rpm spec files used to build python modules

[tkloczko@devel-g2v SPECS]$ grep ^%pytest python-* | wc -l; ls -1 python-* | wc -l
802
904

With that I'm able to asses quality of all those modules just by performe mass test build with added exact pytest extension to build env. I'm not asking to move away from zope.testrunner. I'm only asking to have quick look on what needs to be done to be able use chameleon with pytest .. only this and nothing more 😃 Maybe necessary adaptations are really easy/simple 🙂

kloczek commented 2 years ago

Just FTR: retested 3.10.1 and lookd like pytest still is failing the same way.

kloczek commented 1 year ago

Just tested 4.0.1 and here is pytest output:

```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-chameleon-4.0.1-3.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-chameleon-4.0.1-3.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra -m 'not network' ==================================================================================== test session starts ==================================================================================== platform linux -- Python 3.8.17, pytest-7.4.0, pluggy-1.0.0 rootdir: /home/tkloczko/rpmbuild/BUILD/chameleon-4.0.1 collected 72 items src/chameleon/tests/test_astutil.py . [ 1%] src/chameleon/tests/test_doctests.py EEEEE [ 8%] src/chameleon/tests/test_exc.py .. [ 11%] src/chameleon/tests/test_loader.py ........ [ 22%] src/chameleon/tests/test_parser.py .. [ 25%] src/chameleon/tests/test_sniffing.py .... [ 30%] src/chameleon/tests/test_templates.py ................................................ [ 97%] src/chameleon/tests/test_tokenizer.py .. [100%] ========================================================================================== ERRORS =========================================================================================== ________________________________________________________________________ ERROR at setup of DoctestCase.test_compiler ________________________________________________________________________ cls = , func = . at 0x7fe5f86e2280>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:265: in __call__ return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:80: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_compiler' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError __________________________________________________________________________ ERROR at setup of DoctestCase.test_exc ___________________________________________________________________________ cls = , func = . at 0x7fe5f8174550>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:265: in __call__ return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:80: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_exc' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError __________________________________________________________________________ ERROR at setup of DoctestCase.test_tal ___________________________________________________________________________ cls = , func = . at 0x7fe5f813f820>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:265: in __call__ return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:80: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_tal' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError _________________________________________________________________________ ERROR at setup of DoctestCase.test_tales __________________________________________________________________________ cls = , func = . at 0x7fe5f813fd30>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:265: in __call__ return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:80: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_tales' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError _________________________________________________________________________ ERROR at setup of DoctestCase.test_utils __________________________________________________________________________ cls = , func = . at 0x7fe5f818fd30>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:265: in __call__ return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:80: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_utils' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError ===================================================================================== warnings summary ====================================================================================== src/chameleon/loader.py:12 /home/tkloczko/rpmbuild/BUILD/chameleon-4.0.1/src/chameleon/loader.py:12: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html import pkg_resources ../../../../../usr/lib/python3.8/site-packages/pkg_resources/__init__.py:2871 ../../../../../usr/lib/python3.8/site-packages/pkg_resources/__init__.py:2871 /usr/lib/python3.8/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('zope')`. Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages declare_namespace(pkg) ../../../../../usr/lib/python3.8/site-packages/pkg_resources/__init__.py:2871 ../../../../../usr/lib/python3.8/site-packages/pkg_resources/__init__.py:2871 ../../../../../usr/lib/python3.8/site-packages/pkg_resources/__init__.py:2871 ../../../../../usr/lib/python3.8/site-packages/pkg_resources/__init__.py:2871 ../../../../../usr/lib/python3.8/site-packages/pkg_resources/__init__.py:2871 /usr/lib/python3.8/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages declare_namespace(pkg) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ================================================================================== short test summary info ================================================================================== ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_compiler - AttributeError: '_DocTestSuite' object has no attribute 'test_compiler' ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_exc - AttributeError: '_DocTestSuite' object has no attribute 'test_exc' ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_tal - AttributeError: '_DocTestSuite' object has no attribute 'test_tal' ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_tales - AttributeError: '_DocTestSuite' object has no attribute 'test_tales' ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_utils - AttributeError: '_DocTestSuite' object has no attribute 'test_utils' ========================================================================= 67 passed, 8 warnings, 5 errors in 3.01s ========================================================================== ```
icemac commented 1 year ago

And version 4.1, 5.0, … will fail running the tests using pytest. Just please accept the decisions of the developers and maintainers of this project.

kloczek commented 1 year ago

There are as well some deprecation warnings ..

kloczek commented 12 months ago

And version 4.1, 5.0, … will fail running the tests using pytest.

Currently test suite uses unittest. pytest can handle correctly written unittest based test suite.

Just tested 4.3.0 and now test suite fails with more errors.

Here is pytest output: ```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-chameleon-4.3.0-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-chameleon-4.3.0-2.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra -m 'not network' ============================= test session starts ============================== platform linux -- Python 3.8.18, pytest-7.4.3, pluggy-1.3.0 rootdir: /home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0 collected 107 items src/chameleon/tests/test_astutil.py . [ 0%] src/chameleon/tests/test_bools_plus_sniffing.py ........................ [ 23%] ...... [ 28%] src/chameleon/tests/test_doctests.py EEEEE [ 33%] src/chameleon/tests/test_exc.py .. [ 35%] src/chameleon/tests/test_loader.py EEEEEEEEEE [ 44%] src/chameleon/tests/test_parser.py .. [ 46%] src/chameleon/tests/test_sniffing.py .... [ 50%] src/chameleon/tests/test_templates.py .................................. [ 82%] ............F. [ 95%] src/chameleon/tests/test_tokenizer.py .. [ 97%] src/chameleon/tests/test_utils.py ... [100%] ==================================== ERRORS ==================================== _________________ ERROR at setup of DoctestCase.test_compiler __________________ cls = func = . at 0x7fe4e8751e50> when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_compiler' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError ____________________ ERROR at setup of DoctestCase.test_exc ____________________ cls = func = . at 0x7fe4e8746c10> when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_exc' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError ____________________ ERROR at setup of DoctestCase.test_tal ____________________ cls = func = . at 0x7fe4e993f820> when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_tal' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError ___________________ ERROR at setup of DoctestCase.test_tales ___________________ cls = func = . at 0x7fe4e993f8b0> when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_tales' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError ___________________ ERROR at setup of DoctestCase.test_utils ___________________ cls = func = . at 0x7fe4e993f670> when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_utils' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError ____________ ERROR at setup of LoadPageTests.test_consecutive_loads ____________ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit ________________ ERROR at setup of LoadPageTests.test_load_abs _________________ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit ________________ ERROR at setup of LoadPageTests.test_load_egg _________________ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit ______________ ERROR at setup of LoadPageTests.test_load_relative ______________ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit ___ ERROR at setup of LoadPageTests.test_load_relative_badpath_in_searchpath ___ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit _______________ ERROR at setup of LoadPageTests.test_load_wheel ________________ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit _________________ ERROR at setup of ModuleLoadTests.test_build _________________ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit ________ ERROR at setup of ZPTLoadTests.test_load_getitem_gets_xml_file ________ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit ________________ ERROR at setup of ZPTLoadTests.test_load_text _________________ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit _________________ ERROR at setup of ZPTLoadTests.test_load_xml _________________ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['-ra', '-m', 'not network'] object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'} klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit =================================== FAILURES =================================== _____________________ ZopeTemplatesTestSuite.test_pt_files _____________________ self = _BaseTemplate__kw = {'__decode': , '__on_error_handler': None, '__translate': .translate at 0x7fe4e993f790>, 'content': '
Hello world!
', ...} econtext = {'literal': .Literal object at 0x7fe4e839..._on_error_handler': None, 'repeat': , 'macroname': 'hello_world.pt'} rcontext = {'__error__': [('load: chameleon:tests/inputs/hello_world.pt', 1, 23, '/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/tests/inputs/081-load-spec.pt', AttributeError("module 'importlib.resources' has no attribute 'files'"))]} stream = [], target_language = None, cls = def render(self, **__kw): econtext = Scope(__kw) rcontext = {} self.cook_check() stream = self.output_stream_factory() target_language = __kw.get("target_language") try: > self._render( stream, econtext, rcontext, target_language=target_language ) src/chameleon/template.py:204: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 081_load_spec_9dbece6e0bae00c05035c431eb1f2d78.py:102: in render ??? src/chameleon/zpt/template.py:330: in include self.cook_check() src/chameleon/template.py:376: in cook_check body = self.read() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def read(self): if self.spec.pname is not None: > files = importlib_resources.files(self.spec.pname) E AttributeError: module 'importlib.resources' has no attribute 'files' src/chameleon/template.py:391: AttributeError During handling of the above exception, another exception occurred: self = ext = '.pt', factory = kwargs = {'content': '
Hello world!
', 'literal': ), 'message': } translate = .translate at 0x7fe4e993f790> output_path = '/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/tests/outputs/081.pt' language = None, implicit_i18n = False, implicit_i18n_attrs = () enable_data_attributes = False template = def execute(self, ext, factory, **kwargs): def translate(msgid, domain=None, mapping=None, context=None, target_language=None, default=None): if default is None: default = str(msgid) if isinstance(msgid, Message): default = "Message" if mapping: default = re.sub(r'\${([a-z_]+)}', r'%(\1)s', default) % \ mapping if target_language is None: return default if domain is None: with_domain = "" else: with_domain = " with domain '%s'" % domain if context is None: with_context = "" else: with_context = ", context '%s'" % context stripped = default.rstrip('\n ') return "{} ('{}' translation into '{}'{}{}){}".format( stripped, msgid, target_language, with_domain, with_context, default[len(stripped):] ) for input_path, output_path, language in self.find_files(ext): # Make friendly title so we can locate the generated # source when debugging self.shortDescription = lambda: input_path # When input path contains the string 'implicit-i18n', we # enable "implicit translation". implicit_i18n = 'implicit-i18n' in input_path implicit_i18n_attrs = ("alt", "title") if implicit_i18n else () enable_data_attributes = 'data-attributes' in input_path template = factory( input_path, keep_source=True, strict=False, implicit_i18n_translate=implicit_i18n, implicit_i18n_attributes=implicit_i18n_attrs, enable_data_attributes=enable_data_attributes, ) params = kwargs.copy() params.update({ 'translate': translate, 'target_language': language, }) template.cook_check() try: > got = template.render(**params) src/chameleon/tests/test_templates.py:780: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ src/chameleon/zpt/template.py:327: in render return super().render(**_kw) src/chameleon/template.py:233: in render raise_with_traceback(exc, tb) src/chameleon/utils.py:20: in raise_with_traceback raise exc src/chameleon/template.py:204: in render self._render( 081_load_spec_9dbece6e0bae00c05035c431eb1f2d78.py:102: in render ??? src/chameleon/zpt/template.py:330: in include self.cook_check() src/chameleon/template.py:376: in cook_check body = self.read() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def read(self): if self.spec.pname is not None: > files = importlib_resources.files(self.spec.pname) E AttributeError: module 'importlib.resources' has no attribute 'files' E E - Expression: "load: chameleon:tests/inputs/hello_world.pt" E - Filename: ... meleon-4.3.0/src/chameleon/tests/inputs/081-load-spec.pt E - Location: (line 1: col 23) E - Source: ... :use-macro="load: chameleon:tests/inputs/hello_world.pt" /> E ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E - Arguments: literal: E content:
Hello world!
E message: E load: E translate: E target_language: E repeat: E macroname: hello_world.pt src/chameleon/template.py:391: AttributeError During handling of the above exception, another exception occurred: self = def test_pt_files(self): from ..zpt.template import PageTemplateFile class Literal: def __init__(self, s): self.s = s def __html__(self): return self.s def __str__(self): raise RuntimeError( "%r is a literal." % self.s) from chameleon.loader import TemplateLoader loader = TemplateLoader(os.path.join(self.root, "inputs")) > self.execute( ".pt", PageTemplateFile, literal=Literal("
Hello world!
"), content="
Hello world!
", message=Message(), load=loader.bind(PageTemplateFile), ) src/chameleon/tests/test_templates.py:706: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ src/chameleon/tests/test_templates.py:784: in execute self.fail("{}\n\n Example source:\n\n{}".format( E AssertionError: Traceback (most recent call last): E File "/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/template.py", line 204, in render E self._render( E File "081_load_spec_9dbece6e0bae00c05035c431eb1f2d78.py", line 102, in render E File "/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/zpt/template.py", line 330, in include E self.cook_check() E File "/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/template.py", line 376, in cook_check E body = self.read() E File "/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/template.py", line 391, in read E files = importlib_resources.files(self.spec.pname) E AttributeError: module 'importlib.resources' has no attribute 'files' E E During handling of the above exception, another exception occurred: E E Traceback (most recent call last): E File "/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/tests/test_templates.py", line 780, in execute E got = template.render(**params) E File "/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/zpt/template.py", line 327, in render E return super().render(**_kw) E File "/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/template.py", line 233, in render E raise_with_traceback(exc, tb) E File "/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/utils.py", line 20, in raise_with_traceback E raise exc E File "/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/template.py", line 204, in render E self._render( E File "081_load_spec_9dbece6e0bae00c05035c431eb1f2d78.py", line 102, in render E File "/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/zpt/template.py", line 330, in include E self.cook_check() E File "/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/template.py", line 376, in cook_check E body = self.read() E File "/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/template.py", line 391, in read E files = importlib_resources.files(self.spec.pname) E AttributeError: module 'importlib.resources' has no attribute 'files' E E - Expression: "load: chameleon:tests/inputs/hello_world.pt" E - Filename: ... meleon-4.3.0/src/chameleon/tests/inputs/081-load-spec.pt E - Location: (line 1: col 23) E - Source: ... :use-macro="load: chameleon:tests/inputs/hello_world.pt" /> E ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E - Arguments: literal: E content:
Hello world!
E message: E load: E translate: E target_language: E repeat: E macroname: hello_world.pt E E E Example source: E E 001 __spec = '/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/src/chameleon/tests/inputs/081-load-spec.pt' E 002 E 003 __tokens = {23: ('load: chameleon:tests/inputs/hello_world.pt', 1, 23), 23: ('load: chameleon:tests/inputs/hello_world.pt', 1, 23)} E 004 E 005 from sys import exc_info as _exc_info E 006 E 007 _static_140621126396416 = 'hello_world.pt' E 008 _static_140621133873888 = {} E 009 E 010 import re E 011 import functools E 012 from itertools import chain as __chain E 013 from sys import intern E 014 __default = intern('__default__') E 015 __marker = object() E 016 g_re_amp = re.compile('&(?!([A-Za-z]+|#[0-9]+);)') E 017 g_re_needs_escape = re.compile('[&<>\\"\\\']').search E 018 __re_whitespace = functools.partial(re.compile('\\s+').sub, ' ') E 019 E 020 def initialize(__loader, macros, nothing, template): E 021 E 022 def render(__stream, econtext, rcontext, __i18n_domain=None, __i18n_context=None, target_language=None): E 023 __append = __stream.append E 024 __re_amp = g_re_amp E 025 __token = None E 026 __re_needs_escape = g_re_needs_escape E 027 E 028 def __convert(target): E 029 if (target is None): E 030 return E 031 __tt = type(target) E 032 if (__tt is bytes): E 033 target = decode(target) E 034 else: E 035 if (__tt is not str): E 036 if ((__tt is int) or (__tt is float) or (__tt is int)): E 037 target = str(target) E 038 else: E 039 render = getattr(target, '__html__', None) E 040 if (render is None): E 041 __converted = translate(target, domain=__i18n_domain, context=__i18n_context, target_language=target_language) E 042 target = (str(target) if (target is __converted) else __converted) E 043 else: E 044 target = render() E 045 return target E 046 E 047 def __quote(target, quote, quote_entity, default, default_marker): E 048 if (target is None): E 049 return E 050 if (target is default_marker): E 051 return default E 052 __tt = type(target) E 053 if (__tt is bytes): E 054 target = decode(target) E 055 else: E 056 if (__tt is not str): E 057 if ((__tt is int) or (__tt is float) or (__tt is int)): E 058 return str(target) E 059 render = getattr(target, '__html__', None) E 060 if (render is None): E 061 __converted = translate(target, domain=__i18n_domain, context=__i18n_context, target_language=target_language) E 062 target = (str(target) if (target is __converted) else __converted) E 063 else: E 064 return render() E 065 if (target is not None): E 066 try: E 067 escape = (__re_needs_escape(target) is not None) E 068 except TypeError: E 069 pass E 070 else: E 071 if escape: E 072 if ('&' in target): E 073 target = target.replace('&', '&') E 074 if ('<' in target): E 075 target = target.replace('<', '<') E 076 if ('>' in target): E 077 target = target.replace('>', '>') E 078 if ((quote is not None) and (quote in target)): E 079 target = target.replace(quote, quote_entity) E 080 return target E 081 translate = econtext['__translate'] E 082 decode = econtext['__decode'] E 083 on_error_handler = econtext['__on_error_handler'] E 084 try: E 085 getname = econtext.get_name E 086 get = econtext.get E 087 E 088 # name=None at 7fe4e896d640> -> __attrs_140621126118080 E 089 __attrs_140621126118080 = _static_140621133873888 E 090 __backup_macroname_140621125698688 = get('macroname', __marker) E 091 E 092 # name=None at 7fe4e84967f0> -> __value E 093 __value = _static_140621126396416 E 094 econtext['macroname'] = __value E 095 E 096 # -> __macro E 097 __token = 23 E 098 __macro = ' chameleon:tests/inputs/hello_world.pt' E 099 __macro = __loader(__macro) E 100 __token = 23 E 101 __m = __macro.include E 102 __m(__stream, econtext.copy(), rcontext, __i18n_domain, __i18n_context, target_language) E 103 econtext.update(rcontext) E 104 if (__backup_macroname_140621125698688 is __marker): E 105 del econtext['macroname'] E 106 else: E 107 econtext['macroname'] = __backup_macroname_140621125698688 E 108 except: E 109 if (__token is not None): E 110 rcontext.setdefault('__error__', []).append((__tokens[__token] + (__spec, _exc_info()[1], ))) E 111 raise E 112 E 113 return {'render': render, } =========================== short test summary info ============================ ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_compiler - Attr... ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_exc - Attribute... ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_tal - Attribute... ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_tales - Attribu... ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_utils - Attribu... ERROR src/chameleon/tests/test_loader.py::LoadPageTests::test_consecutive_loads ERROR src/chameleon/tests/test_loader.py::LoadPageTests::test_load_abs - Syst... ERROR src/chameleon/tests/test_loader.py::LoadPageTests::test_load_egg - Syst... ERROR src/chameleon/tests/test_loader.py::LoadPageTests::test_load_relative ERROR src/chameleon/tests/test_loader.py::LoadPageTests::test_load_relative_badpath_in_searchpath ERROR src/chameleon/tests/test_loader.py::LoadPageTests::test_load_wheel - Sy... ERROR src/chameleon/tests/test_loader.py::ModuleLoadTests::test_build - Syste... ERROR src/chameleon/tests/test_loader.py::ZPTLoadTests::test_load_getitem_gets_xml_file ERROR src/chameleon/tests/test_loader.py::ZPTLoadTests::test_load_text - Syst... ERROR src/chameleon/tests/test_loader.py::ZPTLoadTests::test_load_xml - Syste... FAILED src/chameleon/tests/test_templates.py::ZopeTemplatesTestSuite::test_pt_files =================== 1 failed, 91 passed, 15 errors in 3.77s ==================== ```
kloczek commented 12 months ago

BTW build shows some warnings as well

```console + /usr/bin/python3 -sBm build -w --no-isolation * Getting build dependencies for wheel... running egg_info creating src/Chameleon.egg-info writing src/Chameleon.egg-info/PKG-INFO writing dependency_links to src/Chameleon.egg-info/dependency_links.txt writing requirements to src/Chameleon.egg-info/requires.txt writing top-level names to src/Chameleon.egg-info/top_level.txt writing manifest file 'src/Chameleon.egg-info/SOURCES.txt' reading manifest file 'src/Chameleon.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no files found matching '*.md' warning: no files found matching 'buildout.cfg' warning: no files found matching 'Makefile' under directory 'docs' adding license file 'LICENSE.txt' writing manifest file 'src/Chameleon.egg-info/SOURCES.txt' * Building wheel... running bdist_wheel running build running build_py creating build creating build/lib creating build/lib/chameleon copying src/chameleon/__init__.py -> build/lib/chameleon copying src/chameleon/astutil.py -> build/lib/chameleon copying src/chameleon/benchmark.py -> build/lib/chameleon copying src/chameleon/codegen.py -> build/lib/chameleon copying src/chameleon/compiler.py -> build/lib/chameleon copying src/chameleon/config.py -> build/lib/chameleon copying src/chameleon/exc.py -> build/lib/chameleon copying src/chameleon/i18n.py -> build/lib/chameleon copying src/chameleon/interfaces.py -> build/lib/chameleon copying src/chameleon/loader.py -> build/lib/chameleon copying src/chameleon/metal.py -> build/lib/chameleon copying src/chameleon/namespaces.py -> build/lib/chameleon copying src/chameleon/nodes.py -> build/lib/chameleon copying src/chameleon/parser.py -> build/lib/chameleon copying src/chameleon/program.py -> build/lib/chameleon copying src/chameleon/tal.py -> build/lib/chameleon copying src/chameleon/tales.py -> build/lib/chameleon copying src/chameleon/template.py -> build/lib/chameleon copying src/chameleon/tokenize.py -> build/lib/chameleon copying src/chameleon/utils.py -> build/lib/chameleon creating build/lib/chameleon/tests copying src/chameleon/tests/__init__.py -> build/lib/chameleon/tests copying src/chameleon/tests/test_astutil.py -> build/lib/chameleon/tests copying src/chameleon/tests/test_bools_plus_sniffing.py -> build/lib/chameleon/tests copying src/chameleon/tests/test_doctests.py -> build/lib/chameleon/tests copying src/chameleon/tests/test_exc.py -> build/lib/chameleon/tests copying src/chameleon/tests/test_loader.py -> build/lib/chameleon/tests copying src/chameleon/tests/test_parser.py -> build/lib/chameleon/tests copying src/chameleon/tests/test_sniffing.py -> build/lib/chameleon/tests copying src/chameleon/tests/test_templates.py -> build/lib/chameleon/tests copying src/chameleon/tests/test_tokenizer.py -> build/lib/chameleon/tests copying src/chameleon/tests/test_utils.py -> build/lib/chameleon/tests creating build/lib/chameleon/zpt copying src/chameleon/zpt/__init__.py -> build/lib/chameleon/zpt copying src/chameleon/zpt/loader.py -> build/lib/chameleon/zpt copying src/chameleon/zpt/program.py -> build/lib/chameleon/zpt copying src/chameleon/zpt/template.py -> build/lib/chameleon/zpt running egg_info writing src/Chameleon.egg-info/PKG-INFO writing dependency_links to src/Chameleon.egg-info/dependency_links.txt writing requirements to src/Chameleon.egg-info/requires.txt writing top-level names to src/Chameleon.egg-info/top_level.txt reading manifest file 'src/Chameleon.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no files found matching '*.md' warning: no files found matching 'buildout.cfg' warning: no files found matching 'Makefile' under directory 'docs' adding license file 'LICENSE.txt' writing manifest file 'src/Chameleon.egg-info/SOURCES.txt' creating build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/001-interpolation.txt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/001-variable-scope.html -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/001-variable-scope.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/001.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/002-repeat-scope.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/002.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/003-content.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/003.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/004-attributes.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/004.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/005-default.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/005.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/006-attribute-interpolation.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/006.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/007-content-interpolation.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/007.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/008-builtins.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/008.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/009-literals.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/009.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/010-structure.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/010.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/011-messages.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/011.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/012-translation.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/012.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/013-repeat-nested.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/013.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/014-repeat-nested-similar.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/014.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/015-translation-nested.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/015.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/016-explicit-translation.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/016.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/017-omit-tag.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/017.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/018-translation-nested-dynamic.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/018.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/019-replace.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/019.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/020-on-error.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/020.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/021-translation-domain.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/021.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/022-switch.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/022.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/023-condition.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/023.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/024-namespace-elements.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/024.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/025-repeat-whitespace.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/025.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/026-repeat-variable.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/026.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/027-attribute-replacement.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/027.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/028-attribute-toggle.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/028.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/029-attribute-ordering.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/029.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/030-repeat-tuples.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/030.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/031-namespace-with-tal.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/031.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/032-master-template.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/032.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/033-use-macro-trivial.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/033.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/034-use-template-as-macro.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/034.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/035-use-macro-with-fill-slot.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/035.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/036-use-macro-inherits-dynamic-scope.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/036.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/037-use-macro-local-variable-scope.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/037.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/038-use-macro-globals.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/038.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/039-globals.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/039.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/040-macro-using-template-symbol.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/040.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/041-translate-nested-names.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/041.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/042-use-macro-fill-footer.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/042.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/043-macro-nested-dynamic-vars.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/043.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/044-tuple-define.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/044.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/045-namespaces.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/045.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/046-extend-macro.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/046.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/047-use-extended-macro.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/047.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/048-use-extended-macro-fill-original.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/048.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/049-entities-in-attributes.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/049.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/050-define-macro-and-use-not-extend.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/050.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/051-use-non-extended-macro.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/051.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/052-i18n-domain-inside-filled-slot.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/052.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/053-special-characters-in-attributes.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/053.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/054-import-expression.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/054.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/055-attribute-fallback-to-dict-lookup.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/055.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/056-comment-attribute.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/056.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/057-order.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/057.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/058-script.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/058.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/059-embedded-javascript.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/059.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/060-macro-with-multiple-same-slots.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/060.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/061-fill-one-slot-but-two-defined.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/061.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/062-comments-and-expressions.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/062.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/063-continuation.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/063.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/064-tags-and-special-characters.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/064.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/065-use-macro-in-fill.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/065.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/066-load-expression.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/066.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/067-attribute-decode.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/067.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/068-less-than-greater-than-in-attributes.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/068.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/069-translation-domain-and-macro.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/069.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/070-translation-domain-and-use-macro.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/070.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/071-html-attribute-defaults.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/071.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/072-repeat-interpolation.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/072.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/073-utf8-encoded.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/073.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/074-encoded-template.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/074.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/075-nested-macros.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/075.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/076-nested-macro-override.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/076.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/077-i18n-attributes.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/077.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/078-tags-and-newlines.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/078.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/079-implicit-i18n.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/079.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/080-xmlns-namespace-on-tal.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/080.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/081-load-spec.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/081.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/082-load-spec-computed.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/082.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/083-template-dict-to-macro.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/083.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/084-interpolation-in-cdata.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/084.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/085-nested-translation.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/085.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/086-self-closing.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/086.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/087-code-blocks.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/087.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/088-python-newlines.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/088.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/089-load-fallback.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/089.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/090-tuple-expression.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/090.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/091-repeat-none.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/091.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/092.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/093.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/094.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/095.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/096.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/097.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/098.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/099.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/100.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/101-unclosed-tags.html -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/101.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/102-unquoted-attributes.html -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/102.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/103-simple-attribute.html -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/103.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/104.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/105.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/106.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/107.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/108.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/109.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/110.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/111.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/112.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/113.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/114.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/115.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/116.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/117.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/118.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/119.xml -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/120-translation-context.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/121-translation-comment.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/122-translation-ignore.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/123-html5-data-attributes.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/124-translation-target.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/125-macro-translation-ordering.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/126-define-escaping.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/127-tags-and-attributes-special-chars.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/237-double-define.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/238-macroname.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/greeting.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/hello_world.pt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/hello_world.txt -> build/lib/chameleon/tests/inputs copying src/chameleon/tests/inputs/multinode-implicit-i18n.pt -> build/lib/chameleon/tests/inputs creating build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/001.html -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/001.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/001.txt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/002.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/003.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/004.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/005.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/006.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/007.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/008.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/009.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/010.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/011-en.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/011.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/012-en.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/012.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/013.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/014.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/015-en.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/015.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/016-en.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/016.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/017.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/018-en.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/018.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/019.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/020.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/021-en.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/021.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/022.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/023.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/024.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/025.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/026.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/027.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/028.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/029.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/030.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/031.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/032.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/033.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/034.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/035.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/036.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/037.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/038.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/039.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/040.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/041.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/042.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/043.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/044.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/045.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/046.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/047.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/048.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/049.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/050.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/051.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/052.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/053.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/054.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/055.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/056.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/057.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/058.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/059.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/060.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/061.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/062.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/063.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/064.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/065.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/066.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/067.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/068.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/069-en.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/069.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/070-en.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/070.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/071.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/072.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/073.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/074.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/075.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/076.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/077-en.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/077.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/078.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/079-en.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/079.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/080.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/081.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/082.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/083.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/084.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/085-en.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/085.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/086.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/087.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/088.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/089.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/090.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/091.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/101.html -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/102.html -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/103.html -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/120-en.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/120.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/121.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/122.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/123.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/124-en.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/124.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/125.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/126.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/127.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/237.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/238.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/greeting.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/hello_world.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/hello_world.txt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/multinode-en.pt -> build/lib/chameleon/tests/outputs copying src/chameleon/tests/outputs/multinode.pt -> build/lib/chameleon/tests/outputs installing to build/bdist.linux-x86_64/wheel running install running install_lib creating build/bdist.linux-x86_64 creating build/bdist.linux-x86_64/wheel creating build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/__init__.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/astutil.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/benchmark.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/codegen.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/compiler.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/config.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/exc.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/i18n.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/interfaces.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/loader.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/metal.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/namespaces.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/nodes.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/parser.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/program.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/tal.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/tales.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/template.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/tokenize.py -> build/bdist.linux-x86_64/wheel/chameleon copying build/lib/chameleon/utils.py -> build/bdist.linux-x86_64/wheel/chameleon creating build/bdist.linux-x86_64/wheel/chameleon/tests copying build/lib/chameleon/tests/__init__.py -> build/bdist.linux-x86_64/wheel/chameleon/tests copying build/lib/chameleon/tests/test_astutil.py -> build/bdist.linux-x86_64/wheel/chameleon/tests copying build/lib/chameleon/tests/test_bools_plus_sniffing.py -> build/bdist.linux-x86_64/wheel/chameleon/tests copying build/lib/chameleon/tests/test_doctests.py -> build/bdist.linux-x86_64/wheel/chameleon/tests copying build/lib/chameleon/tests/test_exc.py -> build/bdist.linux-x86_64/wheel/chameleon/tests copying build/lib/chameleon/tests/test_loader.py -> build/bdist.linux-x86_64/wheel/chameleon/tests copying build/lib/chameleon/tests/test_parser.py -> build/bdist.linux-x86_64/wheel/chameleon/tests copying build/lib/chameleon/tests/test_sniffing.py -> build/bdist.linux-x86_64/wheel/chameleon/tests copying build/lib/chameleon/tests/test_templates.py -> build/bdist.linux-x86_64/wheel/chameleon/tests copying build/lib/chameleon/tests/test_tokenizer.py -> build/bdist.linux-x86_64/wheel/chameleon/tests copying build/lib/chameleon/tests/test_utils.py -> build/bdist.linux-x86_64/wheel/chameleon/tests creating build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/001-interpolation.txt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/001-variable-scope.html -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/001-variable-scope.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/001.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/002-repeat-scope.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/002.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/003-content.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/003.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/004-attributes.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/004.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/005-default.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/005.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/006-attribute-interpolation.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/006.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/007-content-interpolation.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/007.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/008-builtins.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/008.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/009-literals.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/009.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/010-structure.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/010.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/011-messages.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/011.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/012-translation.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/012.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/013-repeat-nested.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/013.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/014-repeat-nested-similar.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/014.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/015-translation-nested.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/015.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/016-explicit-translation.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/016.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/017-omit-tag.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/017.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/018-translation-nested-dynamic.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/018.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/019-replace.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/019.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/020-on-error.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/020.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/021-translation-domain.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/021.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/022-switch.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/022.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/023-condition.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/023.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/024-namespace-elements.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/024.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/025-repeat-whitespace.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/025.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/026-repeat-variable.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/026.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/027-attribute-replacement.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/027.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/028-attribute-toggle.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/028.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/029-attribute-ordering.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/029.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/030-repeat-tuples.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/030.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/031-namespace-with-tal.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/031.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/032-master-template.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/032.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/033-use-macro-trivial.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/033.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/034-use-template-as-macro.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/034.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/035-use-macro-with-fill-slot.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/035.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/036-use-macro-inherits-dynamic-scope.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/036.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/037-use-macro-local-variable-scope.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/037.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/038-use-macro-globals.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/038.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/039-globals.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/039.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/040-macro-using-template-symbol.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/040.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/041-translate-nested-names.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/041.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/042-use-macro-fill-footer.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/042.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/043-macro-nested-dynamic-vars.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/043.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/044-tuple-define.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/044.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/045-namespaces.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/045.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/046-extend-macro.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/046.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/047-use-extended-macro.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/047.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/048-use-extended-macro-fill-original.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/048.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/049-entities-in-attributes.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/049.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/050-define-macro-and-use-not-extend.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/050.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/051-use-non-extended-macro.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/051.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/052-i18n-domain-inside-filled-slot.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/052.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/053-special-characters-in-attributes.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/053.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/054-import-expression.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/054.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/055-attribute-fallback-to-dict-lookup.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/055.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/056-comment-attribute.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/056.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/057-order.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/057.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/058-script.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/058.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/059-embedded-javascript.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/059.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/060-macro-with-multiple-same-slots.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/060.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/061-fill-one-slot-but-two-defined.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/061.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/062-comments-and-expressions.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/062.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/063-continuation.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/063.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/064-tags-and-special-characters.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/064.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/065-use-macro-in-fill.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/065.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/066-load-expression.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/066.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/067-attribute-decode.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/067.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/068-less-than-greater-than-in-attributes.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/068.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/069-translation-domain-and-macro.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/069.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/070-translation-domain-and-use-macro.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/070.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/071-html-attribute-defaults.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/071.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/072-repeat-interpolation.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/072.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/073-utf8-encoded.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/073.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/074-encoded-template.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/074.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/075-nested-macros.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/075.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/076-nested-macro-override.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/076.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/077-i18n-attributes.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/077.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/078-tags-and-newlines.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/078.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/079-implicit-i18n.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/079.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/080-xmlns-namespace-on-tal.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/080.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/081-load-spec.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/081.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/082-load-spec-computed.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/082.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/083-template-dict-to-macro.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/083.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/084-interpolation-in-cdata.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/084.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/085-nested-translation.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/085.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/086-self-closing.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/086.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/087-code-blocks.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/087.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/088-python-newlines.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/088.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/089-load-fallback.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/089.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/090-tuple-expression.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/090.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/091-repeat-none.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/091.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/092.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/093.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/094.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/095.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/096.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/097.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/098.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/099.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/100.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/101-unclosed-tags.html -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/101.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/102-unquoted-attributes.html -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/102.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/103-simple-attribute.html -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/103.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/104.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/105.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/106.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/107.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/108.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/109.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/110.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/111.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/112.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/113.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/114.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/115.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/116.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/117.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/118.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/119.xml -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/120-translation-context.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/121-translation-comment.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/122-translation-ignore.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/123-html5-data-attributes.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/124-translation-target.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/125-macro-translation-ordering.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/126-define-escaping.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/127-tags-and-attributes-special-chars.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/237-double-define.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/238-macroname.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/greeting.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/hello_world.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/hello_world.txt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs copying build/lib/chameleon/tests/inputs/multinode-implicit-i18n.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/inputs creating build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/001.html -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/001.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/001.txt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/002.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/003.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/004.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/005.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/006.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/007.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/008.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/009.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/010.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/011-en.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/011.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/012-en.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/012.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/013.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/014.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/015-en.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/015.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/016-en.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/016.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/017.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/018-en.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/018.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/019.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/020.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/021-en.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/021.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/022.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/023.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/024.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/025.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/026.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/027.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/028.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/029.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/030.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/031.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/032.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/033.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/034.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/035.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/036.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/037.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/038.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/039.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/040.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/041.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/042.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/043.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/044.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/045.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/046.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/047.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/048.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/049.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/050.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/051.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/052.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/053.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/054.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/055.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/056.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/057.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/058.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/059.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/060.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/061.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/062.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/063.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/064.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/065.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/066.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/067.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/068.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/069-en.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/069.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/070-en.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/070.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/071.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/072.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/073.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/074.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/075.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/076.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/077-en.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/077.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/078.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/079-en.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/079.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/080.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/081.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/082.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/083.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/084.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/085-en.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/085.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/086.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/087.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/088.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/089.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/090.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/091.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/101.html -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/102.html -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/103.html -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/120-en.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/120.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/121.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/122.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/123.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/124-en.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/124.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/125.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/126.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/127.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/237.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/238.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/greeting.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/hello_world.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/hello_world.txt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/multinode-en.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs copying build/lib/chameleon/tests/outputs/multinode.pt -> build/bdist.linux-x86_64/wheel/chameleon/tests/outputs creating build/bdist.linux-x86_64/wheel/chameleon/zpt copying build/lib/chameleon/zpt/__init__.py -> build/bdist.linux-x86_64/wheel/chameleon/zpt copying build/lib/chameleon/zpt/loader.py -> build/bdist.linux-x86_64/wheel/chameleon/zpt copying build/lib/chameleon/zpt/program.py -> build/bdist.linux-x86_64/wheel/chameleon/zpt copying build/lib/chameleon/zpt/template.py -> build/bdist.linux-x86_64/wheel/chameleon/zpt running install_egg_info Copying src/Chameleon.egg-info to build/bdist.linux-x86_64/wheel/Chameleon-4.3.0-py3.8.egg-info running install_scripts creating build/bdist.linux-x86_64/wheel/Chameleon-4.3.0.dist-info/WHEEL creating '/home/tkloczko/rpmbuild/BUILD/chameleon-4.3.0/dist/.tmp-wsgxwile/Chameleon-4.3.0-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'chameleon/__init__.py' adding 'chameleon/astutil.py' adding 'chameleon/benchmark.py' adding 'chameleon/codegen.py' adding 'chameleon/compiler.py' adding 'chameleon/config.py' adding 'chameleon/exc.py' adding 'chameleon/i18n.py' adding 'chameleon/interfaces.py' adding 'chameleon/loader.py' adding 'chameleon/metal.py' adding 'chameleon/namespaces.py' adding 'chameleon/nodes.py' adding 'chameleon/parser.py' adding 'chameleon/program.py' adding 'chameleon/tal.py' adding 'chameleon/tales.py' adding 'chameleon/template.py' adding 'chameleon/tokenize.py' adding 'chameleon/utils.py' adding 'chameleon/tests/__init__.py' adding 'chameleon/tests/test_astutil.py' adding 'chameleon/tests/test_bools_plus_sniffing.py' adding 'chameleon/tests/test_doctests.py' adding 'chameleon/tests/test_exc.py' adding 'chameleon/tests/test_loader.py' adding 'chameleon/tests/test_parser.py' adding 'chameleon/tests/test_sniffing.py' adding 'chameleon/tests/test_templates.py' adding 'chameleon/tests/test_tokenizer.py' adding 'chameleon/tests/test_utils.py' adding 'chameleon/tests/inputs/001-interpolation.txt' adding 'chameleon/tests/inputs/001-variable-scope.html' adding 'chameleon/tests/inputs/001-variable-scope.pt' adding 'chameleon/tests/inputs/001.xml' adding 'chameleon/tests/inputs/002-repeat-scope.pt' adding 'chameleon/tests/inputs/002.xml' adding 'chameleon/tests/inputs/003-content.pt' adding 'chameleon/tests/inputs/003.xml' adding 'chameleon/tests/inputs/004-attributes.pt' adding 'chameleon/tests/inputs/004.xml' adding 'chameleon/tests/inputs/005-default.pt' adding 'chameleon/tests/inputs/005.xml' adding 'chameleon/tests/inputs/006-attribute-interpolation.pt' adding 'chameleon/tests/inputs/006.xml' adding 'chameleon/tests/inputs/007-content-interpolation.pt' adding 'chameleon/tests/inputs/007.xml' adding 'chameleon/tests/inputs/008-builtins.pt' adding 'chameleon/tests/inputs/008.xml' adding 'chameleon/tests/inputs/009-literals.pt' adding 'chameleon/tests/inputs/009.xml' adding 'chameleon/tests/inputs/010-structure.pt' adding 'chameleon/tests/inputs/010.xml' adding 'chameleon/tests/inputs/011-messages.pt' adding 'chameleon/tests/inputs/011.xml' adding 'chameleon/tests/inputs/012-translation.pt' adding 'chameleon/tests/inputs/012.xml' adding 'chameleon/tests/inputs/013-repeat-nested.pt' adding 'chameleon/tests/inputs/013.xml' adding 'chameleon/tests/inputs/014-repeat-nested-similar.pt' adding 'chameleon/tests/inputs/014.xml' adding 'chameleon/tests/inputs/015-translation-nested.pt' adding 'chameleon/tests/inputs/015.xml' adding 'chameleon/tests/inputs/016-explicit-translation.pt' adding 'chameleon/tests/inputs/016.xml' adding 'chameleon/tests/inputs/017-omit-tag.pt' adding 'chameleon/tests/inputs/017.xml' adding 'chameleon/tests/inputs/018-translation-nested-dynamic.pt' adding 'chameleon/tests/inputs/018.xml' adding 'chameleon/tests/inputs/019-replace.pt' adding 'chameleon/tests/inputs/019.xml' adding 'chameleon/tests/inputs/020-on-error.pt' adding 'chameleon/tests/inputs/020.xml' adding 'chameleon/tests/inputs/021-translation-domain.pt' adding 'chameleon/tests/inputs/021.xml' adding 'chameleon/tests/inputs/022-switch.pt' adding 'chameleon/tests/inputs/022.xml' adding 'chameleon/tests/inputs/023-condition.pt' adding 'chameleon/tests/inputs/023.xml' adding 'chameleon/tests/inputs/024-namespace-elements.pt' adding 'chameleon/tests/inputs/024.xml' adding 'chameleon/tests/inputs/025-repeat-whitespace.pt' adding 'chameleon/tests/inputs/025.xml' adding 'chameleon/tests/inputs/026-repeat-variable.pt' adding 'chameleon/tests/inputs/026.xml' adding 'chameleon/tests/inputs/027-attribute-replacement.pt' adding 'chameleon/tests/inputs/027.xml' adding 'chameleon/tests/inputs/028-attribute-toggle.pt' adding 'chameleon/tests/inputs/028.xml' adding 'chameleon/tests/inputs/029-attribute-ordering.pt' adding 'chameleon/tests/inputs/029.xml' adding 'chameleon/tests/inputs/030-repeat-tuples.pt' adding 'chameleon/tests/inputs/030.xml' adding 'chameleon/tests/inputs/031-namespace-with-tal.pt' adding 'chameleon/tests/inputs/031.xml' adding 'chameleon/tests/inputs/032-master-template.pt' adding 'chameleon/tests/inputs/032.xml' adding 'chameleon/tests/inputs/033-use-macro-trivial.pt' adding 'chameleon/tests/inputs/033.xml' adding 'chameleon/tests/inputs/034-use-template-as-macro.pt' adding 'chameleon/tests/inputs/034.xml' adding 'chameleon/tests/inputs/035-use-macro-with-fill-slot.pt' adding 'chameleon/tests/inputs/035.xml' adding 'chameleon/tests/inputs/036-use-macro-inherits-dynamic-scope.pt' adding 'chameleon/tests/inputs/036.xml' adding 'chameleon/tests/inputs/037-use-macro-local-variable-scope.pt' adding 'chameleon/tests/inputs/037.xml' adding 'chameleon/tests/inputs/038-use-macro-globals.pt' adding 'chameleon/tests/inputs/038.xml' adding 'chameleon/tests/inputs/039-globals.pt' adding 'chameleon/tests/inputs/039.xml' adding 'chameleon/tests/inputs/040-macro-using-template-symbol.pt' adding 'chameleon/tests/inputs/040.xml' adding 'chameleon/tests/inputs/041-translate-nested-names.pt' adding 'chameleon/tests/inputs/041.xml' adding 'chameleon/tests/inputs/042-use-macro-fill-footer.pt' adding 'chameleon/tests/inputs/042.xml' adding 'chameleon/tests/inputs/043-macro-nested-dynamic-vars.pt' adding 'chameleon/tests/inputs/043.xml' adding 'chameleon/tests/inputs/044-tuple-define.pt' adding 'chameleon/tests/inputs/044.xml' adding 'chameleon/tests/inputs/045-namespaces.pt' adding 'chameleon/tests/inputs/045.xml' adding 'chameleon/tests/inputs/046-extend-macro.pt' adding 'chameleon/tests/inputs/046.xml' adding 'chameleon/tests/inputs/047-use-extended-macro.pt' adding 'chameleon/tests/inputs/047.xml' adding 'chameleon/tests/inputs/048-use-extended-macro-fill-original.pt' adding 'chameleon/tests/inputs/048.xml' adding 'chameleon/tests/inputs/049-entities-in-attributes.pt' adding 'chameleon/tests/inputs/049.xml' adding 'chameleon/tests/inputs/050-define-macro-and-use-not-extend.pt' adding 'chameleon/tests/inputs/050.xml' adding 'chameleon/tests/inputs/051-use-non-extended-macro.pt' adding 'chameleon/tests/inputs/051.xml' adding 'chameleon/tests/inputs/052-i18n-domain-inside-filled-slot.pt' adding 'chameleon/tests/inputs/052.xml' adding 'chameleon/tests/inputs/053-special-characters-in-attributes.pt' adding 'chameleon/tests/inputs/053.xml' adding 'chameleon/tests/inputs/054-import-expression.pt' adding 'chameleon/tests/inputs/054.xml' adding 'chameleon/tests/inputs/055-attribute-fallback-to-dict-lookup.pt' adding 'chameleon/tests/inputs/055.xml' adding 'chameleon/tests/inputs/056-comment-attribute.pt' adding 'chameleon/tests/inputs/056.xml' adding 'chameleon/tests/inputs/057-order.pt' adding 'chameleon/tests/inputs/057.xml' adding 'chameleon/tests/inputs/058-script.pt' adding 'chameleon/tests/inputs/058.xml' adding 'chameleon/tests/inputs/059-embedded-javascript.pt' adding 'chameleon/tests/inputs/059.xml' adding 'chameleon/tests/inputs/060-macro-with-multiple-same-slots.pt' adding 'chameleon/tests/inputs/060.xml' adding 'chameleon/tests/inputs/061-fill-one-slot-but-two-defined.pt' adding 'chameleon/tests/inputs/061.xml' adding 'chameleon/tests/inputs/062-comments-and-expressions.pt' adding 'chameleon/tests/inputs/062.xml' adding 'chameleon/tests/inputs/063-continuation.pt' adding 'chameleon/tests/inputs/063.xml' adding 'chameleon/tests/inputs/064-tags-and-special-characters.pt' adding 'chameleon/tests/inputs/064.xml' adding 'chameleon/tests/inputs/065-use-macro-in-fill.pt' adding 'chameleon/tests/inputs/065.xml' adding 'chameleon/tests/inputs/066-load-expression.pt' adding 'chameleon/tests/inputs/066.xml' adding 'chameleon/tests/inputs/067-attribute-decode.pt' adding 'chameleon/tests/inputs/067.xml' adding 'chameleon/tests/inputs/068-less-than-greater-than-in-attributes.pt' adding 'chameleon/tests/inputs/068.xml' adding 'chameleon/tests/inputs/069-translation-domain-and-macro.pt' adding 'chameleon/tests/inputs/069.xml' adding 'chameleon/tests/inputs/070-translation-domain-and-use-macro.pt' adding 'chameleon/tests/inputs/070.xml' adding 'chameleon/tests/inputs/071-html-attribute-defaults.pt' adding 'chameleon/tests/inputs/071.xml' adding 'chameleon/tests/inputs/072-repeat-interpolation.pt' adding 'chameleon/tests/inputs/072.xml' adding 'chameleon/tests/inputs/073-utf8-encoded.pt' adding 'chameleon/tests/inputs/073.xml' adding 'chameleon/tests/inputs/074-encoded-template.pt' adding 'chameleon/tests/inputs/074.xml' adding 'chameleon/tests/inputs/075-nested-macros.pt' adding 'chameleon/tests/inputs/075.xml' adding 'chameleon/tests/inputs/076-nested-macro-override.pt' adding 'chameleon/tests/inputs/076.xml' adding 'chameleon/tests/inputs/077-i18n-attributes.pt' adding 'chameleon/tests/inputs/077.xml' adding 'chameleon/tests/inputs/078-tags-and-newlines.pt' adding 'chameleon/tests/inputs/078.xml' adding 'chameleon/tests/inputs/079-implicit-i18n.pt' adding 'chameleon/tests/inputs/079.xml' adding 'chameleon/tests/inputs/080-xmlns-namespace-on-tal.pt' adding 'chameleon/tests/inputs/080.xml' adding 'chameleon/tests/inputs/081-load-spec.pt' adding 'chameleon/tests/inputs/081.xml' adding 'chameleon/tests/inputs/082-load-spec-computed.pt' adding 'chameleon/tests/inputs/082.xml' adding 'chameleon/tests/inputs/083-template-dict-to-macro.pt' adding 'chameleon/tests/inputs/083.xml' adding 'chameleon/tests/inputs/084-interpolation-in-cdata.pt' adding 'chameleon/tests/inputs/084.xml' adding 'chameleon/tests/inputs/085-nested-translation.pt' adding 'chameleon/tests/inputs/085.xml' adding 'chameleon/tests/inputs/086-self-closing.pt' adding 'chameleon/tests/inputs/086.xml' adding 'chameleon/tests/inputs/087-code-blocks.pt' adding 'chameleon/tests/inputs/087.xml' adding 'chameleon/tests/inputs/088-python-newlines.pt' adding 'chameleon/tests/inputs/088.xml' adding 'chameleon/tests/inputs/089-load-fallback.pt' adding 'chameleon/tests/inputs/089.xml' adding 'chameleon/tests/inputs/090-tuple-expression.pt' adding 'chameleon/tests/inputs/090.xml' adding 'chameleon/tests/inputs/091-repeat-none.pt' adding 'chameleon/tests/inputs/091.xml' adding 'chameleon/tests/inputs/092.xml' adding 'chameleon/tests/inputs/093.xml' adding 'chameleon/tests/inputs/094.xml' adding 'chameleon/tests/inputs/095.xml' adding 'chameleon/tests/inputs/096.xml' adding 'chameleon/tests/inputs/097.xml' adding 'chameleon/tests/inputs/098.xml' adding 'chameleon/tests/inputs/099.xml' adding 'chameleon/tests/inputs/100.xml' adding 'chameleon/tests/inputs/101-unclosed-tags.html' adding 'chameleon/tests/inputs/101.xml' adding 'chameleon/tests/inputs/102-unquoted-attributes.html' adding 'chameleon/tests/inputs/102.xml' adding 'chameleon/tests/inputs/103-simple-attribute.html' adding 'chameleon/tests/inputs/103.xml' adding 'chameleon/tests/inputs/104.xml' adding 'chameleon/tests/inputs/105.xml' adding 'chameleon/tests/inputs/106.xml' adding 'chameleon/tests/inputs/107.xml' adding 'chameleon/tests/inputs/108.xml' adding 'chameleon/tests/inputs/109.xml' adding 'chameleon/tests/inputs/110.xml' adding 'chameleon/tests/inputs/111.xml' adding 'chameleon/tests/inputs/112.xml' adding 'chameleon/tests/inputs/113.xml' adding 'chameleon/tests/inputs/114.xml' adding 'chameleon/tests/inputs/115.xml' adding 'chameleon/tests/inputs/116.xml' adding 'chameleon/tests/inputs/117.xml' adding 'chameleon/tests/inputs/118.xml' adding 'chameleon/tests/inputs/119.xml' adding 'chameleon/tests/inputs/120-translation-context.pt' adding 'chameleon/tests/inputs/121-translation-comment.pt' adding 'chameleon/tests/inputs/122-translation-ignore.pt' adding 'chameleon/tests/inputs/123-html5-data-attributes.pt' adding 'chameleon/tests/inputs/124-translation-target.pt' adding 'chameleon/tests/inputs/125-macro-translation-ordering.pt' adding 'chameleon/tests/inputs/126-define-escaping.pt' adding 'chameleon/tests/inputs/127-tags-and-attributes-special-chars.pt' adding 'chameleon/tests/inputs/237-double-define.pt' adding 'chameleon/tests/inputs/238-macroname.pt' adding 'chameleon/tests/inputs/greeting.pt' adding 'chameleon/tests/inputs/hello_world.pt' adding 'chameleon/tests/inputs/hello_world.txt' adding 'chameleon/tests/inputs/multinode-implicit-i18n.pt' adding 'chameleon/tests/outputs/001.html' adding 'chameleon/tests/outputs/001.pt' adding 'chameleon/tests/outputs/001.txt' adding 'chameleon/tests/outputs/002.pt' adding 'chameleon/tests/outputs/003.pt' adding 'chameleon/tests/outputs/004.pt' adding 'chameleon/tests/outputs/005.pt' adding 'chameleon/tests/outputs/006.pt' adding 'chameleon/tests/outputs/007.pt' adding 'chameleon/tests/outputs/008.pt' adding 'chameleon/tests/outputs/009.pt' adding 'chameleon/tests/outputs/010.pt' adding 'chameleon/tests/outputs/011-en.pt' adding 'chameleon/tests/outputs/011.pt' adding 'chameleon/tests/outputs/012-en.pt' adding 'chameleon/tests/outputs/012.pt' adding 'chameleon/tests/outputs/013.pt' adding 'chameleon/tests/outputs/014.pt' adding 'chameleon/tests/outputs/015-en.pt' adding 'chameleon/tests/outputs/015.pt' adding 'chameleon/tests/outputs/016-en.pt' adding 'chameleon/tests/outputs/016.pt' adding 'chameleon/tests/outputs/017.pt' adding 'chameleon/tests/outputs/018-en.pt' adding 'chameleon/tests/outputs/018.pt' adding 'chameleon/tests/outputs/019.pt' adding 'chameleon/tests/outputs/020.pt' adding 'chameleon/tests/outputs/021-en.pt' adding 'chameleon/tests/outputs/021.pt' adding 'chameleon/tests/outputs/022.pt' adding 'chameleon/tests/outputs/023.pt' adding 'chameleon/tests/outputs/024.pt' adding 'chameleon/tests/outputs/025.pt' adding 'chameleon/tests/outputs/026.pt' adding 'chameleon/tests/outputs/027.pt' adding 'chameleon/tests/outputs/028.pt' adding 'chameleon/tests/outputs/029.pt' adding 'chameleon/tests/outputs/030.pt' adding 'chameleon/tests/outputs/031.pt' adding 'chameleon/tests/outputs/032.pt' adding 'chameleon/tests/outputs/033.pt' adding 'chameleon/tests/outputs/034.pt' adding 'chameleon/tests/outputs/035.pt' adding 'chameleon/tests/outputs/036.pt' adding 'chameleon/tests/outputs/037.pt' adding 'chameleon/tests/outputs/038.pt' adding 'chameleon/tests/outputs/039.pt' adding 'chameleon/tests/outputs/040.pt' adding 'chameleon/tests/outputs/041.pt' adding 'chameleon/tests/outputs/042.pt' adding 'chameleon/tests/outputs/043.pt' adding 'chameleon/tests/outputs/044.pt' adding 'chameleon/tests/outputs/045.pt' adding 'chameleon/tests/outputs/046.pt' adding 'chameleon/tests/outputs/047.pt' adding 'chameleon/tests/outputs/048.pt' adding 'chameleon/tests/outputs/049.pt' adding 'chameleon/tests/outputs/050.pt' adding 'chameleon/tests/outputs/051.pt' adding 'chameleon/tests/outputs/052.pt' adding 'chameleon/tests/outputs/053.pt' adding 'chameleon/tests/outputs/054.pt' adding 'chameleon/tests/outputs/055.pt' adding 'chameleon/tests/outputs/056.pt' adding 'chameleon/tests/outputs/057.pt' adding 'chameleon/tests/outputs/058.pt' adding 'chameleon/tests/outputs/059.pt' adding 'chameleon/tests/outputs/060.pt' adding 'chameleon/tests/outputs/061.pt' adding 'chameleon/tests/outputs/062.pt' adding 'chameleon/tests/outputs/063.pt' adding 'chameleon/tests/outputs/064.pt' adding 'chameleon/tests/outputs/065.pt' adding 'chameleon/tests/outputs/066.pt' adding 'chameleon/tests/outputs/067.pt' adding 'chameleon/tests/outputs/068.pt' adding 'chameleon/tests/outputs/069-en.pt' adding 'chameleon/tests/outputs/069.pt' adding 'chameleon/tests/outputs/070-en.pt' adding 'chameleon/tests/outputs/070.pt' adding 'chameleon/tests/outputs/071.pt' adding 'chameleon/tests/outputs/072.pt' adding 'chameleon/tests/outputs/073.pt' adding 'chameleon/tests/outputs/074.pt' adding 'chameleon/tests/outputs/075.pt' adding 'chameleon/tests/outputs/076.pt' adding 'chameleon/tests/outputs/077-en.pt' adding 'chameleon/tests/outputs/077.pt' adding 'chameleon/tests/outputs/078.pt' adding 'chameleon/tests/outputs/079-en.pt' adding 'chameleon/tests/outputs/079.pt' adding 'chameleon/tests/outputs/080.pt' adding 'chameleon/tests/outputs/081.pt' adding 'chameleon/tests/outputs/082.pt' adding 'chameleon/tests/outputs/083.pt' adding 'chameleon/tests/outputs/084.pt' adding 'chameleon/tests/outputs/085-en.pt' adding 'chameleon/tests/outputs/085.pt' adding 'chameleon/tests/outputs/086.pt' adding 'chameleon/tests/outputs/087.pt' adding 'chameleon/tests/outputs/088.pt' adding 'chameleon/tests/outputs/089.pt' adding 'chameleon/tests/outputs/090.pt' adding 'chameleon/tests/outputs/091.pt' adding 'chameleon/tests/outputs/101.html' adding 'chameleon/tests/outputs/102.html' adding 'chameleon/tests/outputs/103.html' adding 'chameleon/tests/outputs/120-en.pt' adding 'chameleon/tests/outputs/120.pt' adding 'chameleon/tests/outputs/121.pt' adding 'chameleon/tests/outputs/122.pt' adding 'chameleon/tests/outputs/123.pt' adding 'chameleon/tests/outputs/124-en.pt' adding 'chameleon/tests/outputs/124.pt' adding 'chameleon/tests/outputs/125.pt' adding 'chameleon/tests/outputs/126.pt' adding 'chameleon/tests/outputs/127.pt' adding 'chameleon/tests/outputs/237.pt' adding 'chameleon/tests/outputs/238.pt' adding 'chameleon/tests/outputs/greeting.pt' adding 'chameleon/tests/outputs/hello_world.pt' adding 'chameleon/tests/outputs/hello_world.txt' adding 'chameleon/tests/outputs/multinode-en.pt' adding 'chameleon/tests/outputs/multinode.pt' adding 'chameleon/zpt/__init__.py' adding 'chameleon/zpt/loader.py' adding 'chameleon/zpt/program.py' adding 'chameleon/zpt/template.py' adding 'Chameleon-4.3.0.dist-info/LICENSE.txt' adding 'Chameleon-4.3.0.dist-info/METADATA' adding 'Chameleon-4.3.0.dist-info/WHEEL' adding 'Chameleon-4.3.0.dist-info/top_level.txt' adding 'Chameleon-4.3.0.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel /usr/lib/python3.8/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'chameleon.tests.inputs' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'chameleon.tests.inputs' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'chameleon.tests.inputs' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'chameleon.tests.inputs' to be distributed and are already explicitly excluding 'chameleon.tests.inputs' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3.8/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'chameleon.tests.outputs' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'chameleon.tests.outputs' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'chameleon.tests.outputs' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'chameleon.tests.outputs' to be distributed and are already explicitly excluding 'chameleon.tests.outputs' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) Successfully built Chameleon-4.3.0-py3-none-any.whl ```

Other thing is that test suite is part of the installed resources however looks like this is result of use relative imports in src/chameleon/tests code which does not allow move around that code (for example move to tests/)

malthe commented 12 months ago

@kloczek agreed that the tests could be updated (and in particular, moved out from the source code).

kloczek commented 12 months ago

@kloczek agreed that the tests could be updated (and in particular, moved out from the source code).

To be able do that first needs to be replaced all relative imports. Than test suite can be moved around without causing errors/fails.

Use relative imports is nothing more than than asking for troubles. Additionally each relative import causes additional syscall to obtain current directory.

malthe commented 12 months ago

@kloczek I don't think Zope's test runner supports moving tests outside of the "package under test", or at least it needs to live inside a proper package.

To get any further here, we'd need to change to another test runner, e.g. pytest. PRs are welcome!

kloczek commented 11 months ago

OK I made https://github.com/malthe/chameleon/pull/400 which removes use relative imports. Any progress on other issues? 🤔

Just FTR here is updated pytest output for 4.4.2 ```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-chameleon-4.4.2-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-chameleon-4.4.2-2.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra -m 'not network' ==================================================================================== test session starts ==================================================================================== platform linux -- Python 3.8.18, pytest-7.4.3, pluggy-1.3.0 rootdir: /home/tkloczko/rpmbuild/BUILD/chameleon-4.4.2 collected 107 items src/chameleon/tests/test_astutil.py . [ 0%] src/chameleon/tests/test_bools_plus_sniffing.py .............................. [ 28%] src/chameleon/tests/test_doctests.py EEEEE [ 33%] src/chameleon/tests/test_exc.py .. [ 35%] src/chameleon/tests/test_loader.py EEEEEEEEEE [ 44%] src/chameleon/tests/test_parser.py .. [ 46%] src/chameleon/tests/test_sniffing.py .... [ 50%] src/chameleon/tests/test_templates.py ................................................ [ 95%] src/chameleon/tests/test_tokenizer.py .. [ 97%] src/chameleon/tests/test_utils.py ... [100%] ========================================================================================== ERRORS =========================================================================================== ________________________________________________________________________ ERROR at setup of DoctestCase.test_compiler ________________________________________________________________________ cls = , func = . at 0x7f7dc205d8b0>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_compiler' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError __________________________________________________________________________ ERROR at setup of DoctestCase.test_exc ___________________________________________________________________________ cls = , func = . at 0x7f7dc19ca8b0>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_exc' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError __________________________________________________________________________ ERROR at setup of DoctestCase.test_tal ___________________________________________________________________________ cls = , func = . at 0x7f7dc1fe1790>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_tal' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError _________________________________________________________________________ ERROR at setup of DoctestCase.test_tales __________________________________________________________________________ cls = , func = . at 0x7f7dc2b79f70>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_tales' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError _________________________________________________________________________ ERROR at setup of DoctestCase.test_utils __________________________________________________________________________ cls = , func = . at 0x7f7dc187a430>, when = 'setup' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /usr/lib/python3.8/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.8/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.8/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.8/site-packages/_pytest/runner.py:157: in pytest_runtest_setup item.session._setupstate.setup(item) /usr/lib/python3.8/site-packages/_pytest/runner.py:497: in setup raise exc /usr/lib/python3.8/site-packages/_pytest/runner.py:494: in setup col.setup() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def setup(self) -> None: # A bound method to be called during teardown() if set (see 'runtest()'). self._explicit_tearDown: Optional[Callable[[], None]] = None assert self.parent is not None self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] > self._obj = getattr(self._testcase, self.name) E AttributeError: '_DocTestSuite' object has no attribute 'test_utils' /usr/lib/python3.8/site-packages/_pytest/unittest.py:202: AttributeError __________________________________________________________________ ERROR at setup of LoadPageTests.test_consecutive_loads ___________________________________________________________________ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit _______________________________________________________________________ ERROR at setup of LoadPageTests.test_load_abs _______________________________________________________________________ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit _______________________________________________________________________ ERROR at setup of LoadPageTests.test_load_egg _______________________________________________________________________ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit ____________________________________________________________________ ERROR at setup of LoadPageTests.test_load_relative _____________________________________________________________________ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit _________________________________________________________ ERROR at setup of LoadPageTests.test_load_relative_badpath_in_searchpath __________________________________________________________ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit ______________________________________________________________________ ERROR at setup of LoadPageTests.test_load_wheel ______________________________________________________________________ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit _______________________________________________________________________ ERROR at setup of ModuleLoadTests.test_build ________________________________________________________________________ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit ______________________________________________________________ ERROR at setup of ZPTLoadTests.test_load_getitem_gets_xml_file _______________________________________________________________ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit _______________________________________________________________________ ERROR at setup of ZPTLoadTests.test_load_text _______________________________________________________________________ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit _______________________________________________________________________ ERROR at setup of ZPTLoadTests.test_load_xml ________________________________________________________________________ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: > opts, args = getopt.getopt(args, short_opts, self.long_opts) /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.8/getopt.py:95: in getopt opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) /usr/lib64/python3.8/getopt.py:195: in do_shorts if short_has_arg(opt, shortopts): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opt = 'r', shortopts = 'v q n h V' def short_has_arg(opt, shortopts): for i in range(len(shortopts)): if opt == shortopts[i] != ':': return shortopts.startswith(':', i+1) > raise GetoptError(_('option -%s not recognized') % opt, opt) E getopt.GetoptError: option -r not recognized /usr/lib64/python3.8/getopt.py:211: GetoptError During handling of the above exception, another exception occurred: attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: > ok = dist.parse_command_line() /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:467: in parse_command_line args = parser.getopt(args=self.script_args, object=self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = ['-ra', '-m', 'not network'], object = def getopt(self, args=None, object=None): # noqa: C901 """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: > raise DistutilsArgError(msg) E distutils.errors.DistutilsArgError: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/fancy_getopt.py:248: DistutilsArgError During handling of the above exception, another exception occurred: attrs = {} def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. logging.configure() _install_setup_requires(attrs) > return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attrs = {'script_args': ['-ra', '-m', 'not network'], 'script_name': 'pytest'}, klass = dist = def setup(**attrs): # noqa: C901 """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: attrs.pop('distclass') else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in {} setup command: {}".format(attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: > raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) E SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] E or: pytest --help [cmd1 cmd2 ...] E or: pytest --help-commands E or: pytest cmd --help E E error: option -r not recognized /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:174: SystemExit ================================================================================== short test summary info ================================================================================== ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_compiler - AttributeError: '_DocTestSuite' object has no attribute 'test_compiler' ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_exc - AttributeError: '_DocTestSuite' object has no attribute 'test_exc' ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_tal - AttributeError: '_DocTestSuite' object has no attribute 'test_tal' ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_tales - AttributeError: '_DocTestSuite' object has no attribute 'test_tales' ERROR src/chameleon/tests/test_doctests.py::DoctestCase::test_utils - AttributeError: '_DocTestSuite' object has no attribute 'test_utils' ERROR src/chameleon/tests/test_loader.py::LoadPageTests::test_consecutive_loads - SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] ERROR src/chameleon/tests/test_loader.py::LoadPageTests::test_load_abs - SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] ERROR src/chameleon/tests/test_loader.py::LoadPageTests::test_load_egg - SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] ERROR src/chameleon/tests/test_loader.py::LoadPageTests::test_load_relative - SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] ERROR src/chameleon/tests/test_loader.py::LoadPageTests::test_load_relative_badpath_in_searchpath - SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] ERROR src/chameleon/tests/test_loader.py::LoadPageTests::test_load_wheel - SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] ERROR src/chameleon/tests/test_loader.py::ModuleLoadTests::test_build - SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] ERROR src/chameleon/tests/test_loader.py::ZPTLoadTests::test_load_getitem_gets_xml_file - SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] ERROR src/chameleon/tests/test_loader.py::ZPTLoadTests::test_load_text - SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] ERROR src/chameleon/tests/test_loader.py::ZPTLoadTests::test_load_xml - SystemExit: usage: pytest [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] =============================================================================== 92 passed, 15 errors in 4.26s =============================================================================== ```
malthe commented 11 months ago

@kloczek how does this work for you?

kloczek commented 11 months ago

Ha .. just found that you moved to pytest 😄 Will check that in next few hours and back to you ASP 👍

malthe commented 11 months ago

Closing this issue for now, but if this doesn't quite work for RPM packaging, let's reopen and sort out any remaining issues.

kloczek commented 11 months ago

Looks like 4.4.3 test suite is OK now (thank you). It is yet another small issue. test suite is part of installed resources (content of the chameleon/tests/). Easiest way to fix that would be move chameleon/tests/ to tests/.