intellimath / recordclass

Mutable variant of namedtuple -- recordclass, which support assignments, compact dataclasses and other memory saving variants.
Other
13 stars 3 forks source link

0.22 fails to run tests on python 3.10 due to type import #8

Open kjplunkett opened 3 weeks ago

kjplunkett commented 3 weeks ago

Description

I noticed this line in the recent release of recordclass 0.22 creates a compatibility issue specific to Python 3.10 since dataclass_transform has only been added in Python 3.11.

Impact

Any Python < 3.11 project importing recordclass like so:

from recordclass import recordclass

Will run into the following exception:

ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib/python3.10/typing.py)

Steps to reproduce

Remaining unknowns

I've not used Appveyor before but it looks the appveyor.yml file in this repo is configured to test python 3.7 to 3.12.3 prior to release...did that run successfully before the release of 0.22?

Resolution

Possible solutions include:

intellimath commented 3 weeks ago

Thank you. I will add condition on python >= 3.11.

intellimath commented 3 weeks ago

recordclass 0.22.0.1 just uploaded to PyPI.

kloczek commented 3 weeks ago

I have the same ..

kloczek commented 3 weeks ago

.. and 0.22.0.1 still fails.

kloczek commented 3 weeks ago
Here is full pytest output: ```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib/python3.10/site-packages + /usr/bin/pytest -ra -m 'not network' ==================================================================================== test session starts ==================================================================================== platform linux -- Python 3.10.14, pytest-8.2.2, pluggy-1.5.0 rootdir: /home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1 plugins: asyncio-0.23.7 asyncio: mode=strict collected 0 items / 20 errors ========================================================================================== ERRORS =========================================================================================== _______________________________________________________________________ ERROR collecting examples/issues/test_dill.py _______________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/examples/issues/test_dill.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) examples/issues/test_dill.py:1: in from recordclass import dataobject ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) _____________________________________________________________________ ERROR collecting examples/test_leak_dataobject.py _____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/examples/test_leak_dataobject.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) examples/test_leak_dataobject.py:8: in from recordclass import make_dataclass, litelist ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) ______________________________________________________________________ ERROR collecting examples/test_leak_datatype.py ______________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/examples/test_leak_datatype.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) examples/test_leak_datatype.py:8: in from recordclass import make_dataclass ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) _____________________________________________________________________ ERROR collecting examples/test_leak_datatype2.py ______________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/examples/test_leak_datatype2.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) examples/test_leak_datatype2.py:9: in from recordclass import make_dataclass, make_arrayclass ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) ____________________________________________________________________ ERROR collecting examples/test_leak_recordclass.py _____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/examples/test_leak_recordclass.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) examples/test_leak_recordclass.py:8: in from recordclass import recordclass ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) ____________________________________________________________________ ERROR collecting examples/test_leak_recordclass2.py ____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/examples/test_leak_recordclass2.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) examples/test_leak_recordclass2.py:9: in from recordclass import recordclass ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) ____________________________________________________________________ ERROR collecting examples/test_leak_structclass.py _____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/examples/test_leak_structclass.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) examples/test_leak_structclass.py:8: in from recordclass import structclass ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) _________________________________________________________________ ERROR collecting examples/test_memory_usage_dataobject.py _________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/examples/test_memory_usage_dataobject.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) examples/test_memory_usage_dataobject.py:8: in from recordclass import make_dataclass, litelist ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record ../../BUILDROOT/python-recordclass-0.22.0.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) ___________________________________________________________ ERROR collecting lib/recordclass/test/match/test_dataobject_match.py ____________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/lib/recordclass/test/match/test_dataobject_match.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) lib/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record lib/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) _________________________________________________________________ ERROR collecting lib/recordclass/test/test_arrayclass.py __________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/lib/recordclass/test/test_arrayclass.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) lib/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record lib/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) _________________________________________________________________ ERROR collecting lib/recordclass/test/test_dataobject.py __________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/lib/recordclass/test/test_dataobject.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) lib/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record lib/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) __________________________________________________________________ ERROR collecting lib/recordclass/test/test_litelist.py ___________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/lib/recordclass/test/test_litelist.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) lib/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record lib/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) __________________________________________________________________ ERROR collecting lib/recordclass/test/test_litetuple.py __________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/lib/recordclass/test/test_litetuple.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) lib/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record lib/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) _________________________________________________________________ ERROR collecting lib/recordclass/test/test_recordclass.py _________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/lib/recordclass/test/test_recordclass.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) lib/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record lib/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) ___________________________________________________________________ ERROR collecting lib/recordclass/test/test_sqlite.py ____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/lib/recordclass/test/test_sqlite.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) lib/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record lib/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) ______________________________________________________________ ERROR collecting lib/recordclass/test/typing/test_dataobject.py ______________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/lib/recordclass/test/typing/test_dataobject.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) lib/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record lib/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) ______________________________________________________________ ERROR collecting lib/recordclass/test/typing/test_datastruct.py ______________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/lib/recordclass/test/typing/test_datastruct.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) lib/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record lib/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) _____________________________________________________________ ERROR collecting lib/recordclass/test/typing/test_recordclass.py ______________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/lib/recordclass/test/typing/test_recordclass.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) lib/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record lib/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) _______________________________________________________________________________ ERROR collecting test_all.py ________________________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/test_all.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) test_all.py:25: in from recordclass.test import * lib/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record lib/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) ___________________________________________________________________________ ERROR collecting test_performance.py ____________________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.1/test_performance.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.10/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) test_performance.py:1: in from recordclass import recordclass, make_dataclass lib/recordclass/__init__.py:33: in from .adapter import as_dataclass, as_record lib/recordclass/adapter.py:25: in from typing import dataclass_transform, Callable, TypeVar E ImportError: cannot import name 'dataclass_transform' from 'typing' (/usr/lib64/python3.10/typing.py) ================================================================================== short test summary info ================================================================================== ERROR examples/issues/test_dill.py ERROR examples/test_leak_dataobject.py ERROR examples/test_leak_datatype.py ERROR examples/test_leak_datatype2.py ERROR examples/test_leak_recordclass.py ERROR examples/test_leak_recordclass2.py ERROR examples/test_leak_structclass.py ERROR examples/test_memory_usage_dataobject.py ERROR lib/recordclass/test/match/test_dataobject_match.py ERROR lib/recordclass/test/test_arrayclass.py ERROR lib/recordclass/test/test_dataobject.py ERROR lib/recordclass/test/test_litelist.py ERROR lib/recordclass/test/test_litetuple.py ERROR lib/recordclass/test/test_recordclass.py ERROR lib/recordclass/test/test_sqlite.py ERROR lib/recordclass/test/typing/test_dataobject.py ERROR lib/recordclass/test/typing/test_datastruct.py ERROR lib/recordclass/test/typing/test_recordclass.py ERROR test_all.py ERROR test_performance.py !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 20 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ==================================================================================== 20 errors in 0.29s ===================================================================================== ```
intellimath commented 3 weeks ago

Ah.. I set the tag 22.0.1 before actual commit in github repo. PyPI 22.0.1 source archive contain correct adapter.py. I make new realease 22.0.2 in order to make source archive and realease on github with correct tag.

intellimath commented 3 weeks ago

I just make new release 22.0.2. Distributions on PyPI and github with tag 22.0.2 are identical now.

kloczek commented 3 weeks ago

Just tested 22.0.2 and now python crashes with SIGSEGV probably in recordclass DSO.

+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-recordclass-0.22.0.2-2.fc37.x86_64/usr/lib64/python3.10/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-recordclass-0.22.0.2-2.fc37.x86_64/usr/lib/python3.10/site-packages
+ /usr/bin/pytest -ra -m 'not network'
==================================================================================== test session starts ====================================================================================
platform linux -- Python 3.10.14, pytest-8.2.2, pluggy-1.5.0
rootdir: /home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2
plugins: asyncio-0.23.7
asyncio: mode=strict
collecting ... Fatal Python error: Segmentation fault

Current thread 0x00007f85a4e3db80 (most recent call first):
  File "/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/examples/test_leak_dataobject.py", line 22 in <module>
  File "/usr/lib/python3.10/site-packages/_pytest/assertion/rewrite.py", line 178 in exec_module
  File "<frozen importlib._bootstrap>", line 688 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1027 in _find_and_load
  File "<frozen importlib._bootstrap>", line 1050 in _gcd_import
  File "/usr/lib64/python3.10/importlib/__init__.py", line 126 in import_module
  File "/usr/lib/python3.10/site-packages/_pytest/pathlib.py", line 591 in import_path
  File "/usr/lib/python3.10/site-packages/_pytest/python.py", line 492 in importtestmodule
  File "/usr/lib/python3.10/site-packages/_pytest/python.py", line 545 in _getobj
  File "/usr/lib/python3.10/site-packages/_pytest/python.py", line 287 in obj
  File "/usr/lib/python3.10/site-packages/pytest_asyncio/plugin.py", line 629 in _patched_collect
  File "/usr/lib/python3.10/site-packages/_pytest/runner.py", line 389 in collect
  File "/usr/lib/python3.10/site-packages/_pytest/runner.py", line 341 in from_call
  File "/usr/lib/python3.10/site-packages/_pytest/runner.py", line 391 in pytest_make_collect_report
  File "/usr/lib/python3.10/site-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3.10/site-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/usr/lib/python3.10/site-packages/pluggy/_hooks.py", line 513 in __call__
  File "/usr/lib/python3.10/site-packages/_pytest/runner.py", line 567 in collect_one_node
  File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 844 in _collect_one_node
  File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 981 in genitems
  File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 986 in genitems
  File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 986 in genitems
  File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 818 in perform_collect
  File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 356 in pytest_collection
  File "/usr/lib/python3.10/site-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3.10/site-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/usr/lib/python3.10/site-packages/pluggy/_hooks.py", line 513 in __call__
  File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 345 in _main
  File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 292 in wrap_session
  File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 339 in pytest_cmdline_main
  File "/usr/lib/python3.10/site-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3.10/site-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/usr/lib/python3.10/site-packages/pluggy/_hooks.py", line 513 in __call__
  File "/usr/lib/python3.10/site-packages/_pytest/config/__init__.py", line 178 in main
  File "/usr/lib/python3.10/site-packages/_pytest/config/__init__.py", line 206 in console_main
  File "/usr/bin/pytest", line 8 in <module>

Extension modules: recordclass._dataobject, recordclass._litelist, recordclass._litetuple, psutil._psutil_linux, psutil._psutil_posix (total: 5)
/var/tmp/rpm-tmp.0o5kIP: line 57: 1818181 Segmentation fault      (core dumped) PATH=/home/tkloczko/rpmbuild/BUILDROOT/python-recordclass-0.22.0.2-2.fc37.x86_64/usr/bin:$PATH LD_LIBRARY_PATH=/home/tkloczko/rpmbuild/BUILDROOT/python-recordclass-0.22.0.2-2.fc37.x86_64/usr/lib64 PYTHONDONTWRITEBYTECODE=1 PDM_BUILD_SCM_VERSION=0.22.0.2 PBR_VERSION=0.22.0.2 SETUPTOOLS_SCM_PRETEND_VERSION=0.22.0.2 PYTHONPATH=${PYTHONPATH:-/home/tkloczko/rpmbuild/BUILDROOT/python-recordclass-0.22.0.2-2.fc37.x86_64/usr/lib64/python3.10/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-recordclass-0.22.0.2-2.fc37.x86_64/usr/lib/python3.10/site-packages} /usr/bin/pytest -ra -m "not network"
intellimath commented 3 weeks ago

I hope the issue was fixed in last commit.

kloczek commented 3 weeks ago

Just tested last release + 3c093eee and now python is not crashing byt pytest is not able to finish collecting units.

+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-recordclass-0.22.0.2-2.fc37.x86_64/usr/lib64/python3.10/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-recordclass-0.22.0.2-2.fc37.x86_64/usr/lib/python3.10/site-packages
+ /usr/bin/pytest -ra -m 'not network'
==================================================================================== test session starts ====================================================================================
platform linux -- Python 3.10.14, pytest-8.2.2, pluggy-1.5.0
rootdir: /home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2
plugins: asyncio-0.23.7
asyncio: mode=strict
collecting ...

But strace shows that pytest is constantly making new mmap() calls

[tkloczko@barrel SPECS]$ strace -p 2633537
strace: Process 2633537 attached
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f200ce00000
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f200cd00000
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f200cc00000
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f200cb00000
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f200ca00000
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f200c900000
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f200c800000
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f200c700000
.
.
getpid()                                = 1820531
openat(AT_FDCWD, "/proc/1820531/stat", O_RDONLY|O_CLOEXEC) = 13
fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
lseek(13, 0, SEEK_CUR)                  = 0
lseek(13, 0, SEEK_CUR)                  = 0
fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(13, "1820531 (pytest) R 1820530 18198"..., 8192) = 346
read(13, "", 7846)                      = 0
close(13)                               = 0
openat(AT_FDCWD, "/proc/1820531/statm", O_RDONLY|O_CLOEXEC) = 13
fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
lseek(13, 0, SEEK_CUR)                  = 0
read(13, "42466 38504 2112 1 0 38496 0\n", 32768) = 29
close(13)                               = 0
write(6, "157712384", 9)                = 9
write(6, "\n", 1)                       = 1
munmap(0x7f057e500000, 1048576)         = 0
munmap(0x7f057e500000, 1048576)         = 0
munmap(0x7f057e500000, 1048576)         = 0
munmap(0x7f057e500000, 1048576)         = 0
kloczek commented 3 weeks ago

Single loop iteration looks like below

```console pselect6(0, NULL, NULL, NULL, {tv_sec=1, tv_nsec=0}, NULL) = 0 (Timeout) getpid() = 1820531 openat(AT_FDCWD, "/proc/1820531/stat", O_RDONLY|O_CLOEXEC) = 13 fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 lseek(13, 0, SEEK_CUR) = 0 lseek(13, 0, SEEK_CUR) = 0 fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 read(13, "1820531 (pytest) R 1820530 18198"..., 8192) = 345 read(13, "", 7847) = 0 close(13) = 0 openat(AT_FDCWD, "/proc/1820531/statm", O_RDONLY|O_CLOEXEC) = 13 fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 lseek(13, 0, SEEK_CUR) = 0 read(13, "13794 9675 2112 1 0 9824 0\n", 32768) = 27 close(13) = 0 write(6, "39628800", 8) = 8 write(6, "\n", 1) = 1 munmap(0x7f057e100000, 1048576) = 0 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0585300000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0585200000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0585100000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0585000000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584f00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584e00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584d00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584c00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584b00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584a00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584900000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584800000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584700000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584600000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584500000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584400000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584300000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584200000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584100000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584000000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583f00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583e00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583d00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583c00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583b00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583a00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583900000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583800000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583700000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583600000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583500000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583400000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583300000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583200000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583100000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583000000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582f00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582e00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582d00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582c00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582b00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582a00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582900000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582800000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582700000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582600000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582500000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582400000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582300000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582200000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582100000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582000000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581f00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581e00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581d00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581c00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581b00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581a00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581900000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581800000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581700000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581600000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581500000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581400000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581300000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581200000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581100000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581000000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580f00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580e00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580d00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580c00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580b00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580a00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580900000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580800000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580700000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580600000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580500000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580400000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580300000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580200000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580100000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580000000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057ff00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057fe00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057fd00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057fc00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057fb00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057fa00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f900000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f800000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f700000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f600000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f500000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f400000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f300000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f200000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f100000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f000000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057ef00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057ee00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057ed00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057ec00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057eb00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057ea00000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e900000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e800000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e700000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e600000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e500000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e400000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e200000 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e100000 getpid() = 1820531 openat(AT_FDCWD, "/proc/1820531/stat", O_RDONLY|O_CLOEXEC) = 13 fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 lseek(13, 0, SEEK_CUR) = 0 lseek(13, 0, SEEK_CUR) = 0 fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 read(13, "1820531 (pytest) R 1820530 18198"..., 8192) = 347 read(13, "", 7845) = 0 close(13) = 0 openat(AT_FDCWD, "/proc/1820531/statm", O_RDONLY|O_CLOEXEC) = 13 fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 lseek(13, 0, SEEK_CUR) = 0 read(13, "42722 38571 2112 1 0 38752 0\n", 32768) = 29 close(13) = 0 write(6, "157986816", 9) = 9 write(6, "\n", 1) = 1 munmap(0x7f057e400000, 1048576) = 0 munmap(0x7f057e500000, 1048576) = 0 munmap(0x7f057e600000, 1048576) = 0 munmap(0x7f057e700000, 1048576) = 0 munmap(0x7f057e800000, 1048576) = 0 munmap(0x7f057e900000, 1048576) = 0 munmap(0x7f057ea00000, 1048576) = 0 munmap(0x7f057eb00000, 1048576) = 0 munmap(0x7f057ec00000, 1048576) = 0 munmap(0x7f057ed00000, 1048576) = 0 munmap(0x7f057ee00000, 1048576) = 0 munmap(0x7f057ef00000, 1048576) = 0 munmap(0x7f057f000000, 1048576) = 0 munmap(0x7f057f100000, 1048576) = 0 munmap(0x7f057f200000, 1048576) = 0 munmap(0x7f057f300000, 1048576) = 0 munmap(0x7f057f400000, 1048576) = 0 munmap(0x7f057f500000, 1048576) = 0 munmap(0x7f057f600000, 1048576) = 0 munmap(0x7f057f700000, 1048576) = 0 munmap(0x7f057f800000, 1048576) = 0 munmap(0x7f057f900000, 1048576) = 0 munmap(0x7f057fa00000, 1048576) = 0 munmap(0x7f057fb00000, 1048576) = 0 munmap(0x7f057fc00000, 1048576) = 0 munmap(0x7f057fd00000, 1048576) = 0 munmap(0x7f057fe00000, 1048576) = 0 munmap(0x7f057ff00000, 1048576) = 0 munmap(0x7f0580000000, 1048576) = 0 munmap(0x7f0580100000, 1048576) = 0 munmap(0x7f0580200000, 1048576) = 0 munmap(0x7f0580300000, 1048576) = 0 munmap(0x7f0580400000, 1048576) = 0 munmap(0x7f0580500000, 1048576) = 0 munmap(0x7f0580600000, 1048576) = 0 munmap(0x7f0580700000, 1048576) = 0 munmap(0x7f0580800000, 1048576) = 0 munmap(0x7f0580900000, 1048576) = 0 munmap(0x7f0580a00000, 1048576) = 0 munmap(0x7f0580b00000, 1048576) = 0 munmap(0x7f0580c00000, 1048576) = 0 munmap(0x7f0580d00000, 1048576) = 0 munmap(0x7f0580e00000, 1048576) = 0 munmap(0x7f0580f00000, 1048576) = 0 munmap(0x7f0581000000, 1048576) = 0 munmap(0x7f0581100000, 1048576) = 0 munmap(0x7f0581200000, 1048576) = 0 munmap(0x7f0581300000, 1048576) = 0 munmap(0x7f0581400000, 1048576) = 0 munmap(0x7f0581500000, 1048576) = 0 munmap(0x7f0581600000, 1048576) = 0 munmap(0x7f0581700000, 1048576) = 0 munmap(0x7f0581800000, 1048576) = 0 munmap(0x7f0581900000, 1048576) = 0 munmap(0x7f0581a00000, 1048576) = 0 munmap(0x7f0581b00000, 1048576) = 0 munmap(0x7f0581c00000, 1048576) = 0 munmap(0x7f0581d00000, 1048576) = 0 munmap(0x7f0581e00000, 1048576) = 0 munmap(0x7f0581f00000, 1048576) = 0 munmap(0x7f0582000000, 1048576) = 0 munmap(0x7f0582100000, 1048576) = 0 munmap(0x7f0582200000, 1048576) = 0 munmap(0x7f0582300000, 1048576) = 0 munmap(0x7f0582400000, 1048576) = 0 munmap(0x7f0582500000, 1048576) = 0 munmap(0x7f0582600000, 1048576) = 0 munmap(0x7f0582700000, 1048576) = 0 munmap(0x7f0582800000, 1048576) = 0 munmap(0x7f0582900000, 1048576) = 0 munmap(0x7f0582a00000, 1048576) = 0 munmap(0x7f0582b00000, 1048576) = 0 munmap(0x7f0582c00000, 1048576) = 0 munmap(0x7f0582d00000, 1048576) = 0 munmap(0x7f0582e00000, 1048576) = 0 munmap(0x7f0582f00000, 1048576) = 0 munmap(0x7f0583000000, 1048576) = 0 munmap(0x7f0583100000, 1048576) = 0 munmap(0x7f0583200000, 1048576) = 0 munmap(0x7f0583300000, 1048576) = 0 munmap(0x7f0583400000, 1048576) = 0 munmap(0x7f0583500000, 1048576) = 0 munmap(0x7f0583600000, 1048576) = 0 munmap(0x7f0583700000, 1048576) = 0 munmap(0x7f0583800000, 1048576) = 0 munmap(0x7f0583900000, 1048576) = 0 munmap(0x7f0583a00000, 1048576) = 0 munmap(0x7f0583b00000, 1048576) = 0 munmap(0x7f0583c00000, 1048576) = 0 munmap(0x7f0583d00000, 1048576) = 0 munmap(0x7f0583e00000, 1048576) = 0 munmap(0x7f0583f00000, 1048576) = 0 munmap(0x7f0584000000, 1048576) = 0 munmap(0x7f0584100000, 1048576) = 0 munmap(0x7f0584200000, 1048576) = 0 munmap(0x7f0584300000, 1048576) = 0 munmap(0x7f0584400000, 1048576) = 0 munmap(0x7f0584500000, 1048576) = 0 munmap(0x7f0584600000, 1048576) = 0 munmap(0x7f0584700000, 1048576) = 0 munmap(0x7f0584800000, 1048576) = 0 munmap(0x7f0584900000, 1048576) = 0 munmap(0x7f0584a00000, 1048576) = 0 munmap(0x7f0584b00000, 1048576) = 0 munmap(0x7f0584c00000, 1048576) = 0 munmap(0x7f0584d00000, 1048576) = 0 munmap(0x7f0584e00000, 1048576) = 0 munmap(0x7f0584f00000, 1048576) = 0 munmap(0x7f0585000000, 1048576) = 0 munmap(0x7f0585100000, 1048576) = 0 munmap(0x7f0585200000, 1048576) = 0 munmap(0x7f0585300000, 1048576) = 0 munmap(0x7f057e300000, 1048576) = 0 ```
intellimath commented 3 weeks ago

Some test_*.py files from the folder /example are not tests. I used them for memory leaks. May be I need to rename them so that pytest do not consider them as tests.

вт, 25 июн. 2024 г. в 19:01, Tomasz Kłoczko @.***>:

Full loop looks iteration like below

pselect6(0, NULL, NULL, NULL, {tv_sec=1, tv_nsec=0}, NULL) = 0 (Timeout)getpid() = 1820531openat(AT_FDCWD, "/proc/1820531/stat", O_RDONLY|O_CLOEXEC) = 13fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0lseek(13, 0, SEEK_CUR) = 0lseek(13, 0, SEEK_CUR) = 0fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0read(13, "1820531 (pytest) R 1820530 18198"..., 8192) = 345read(13, "", 7847) = 0close(13) = 0openat(AT_FDCWD, "/proc/1820531/statm", O_RDONLY|O_CLOEXEC) = 13fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0lseek(13, 0, SEEK_CUR) = 0read(13, "13794 9675 2112 1 0 9824 0\n", 32768) = 27close(13) = 0write(6, "39628800", 8) = 8write(6, "\n", 1) = 1munmap(0x7f057e100000, 1048576) = 0mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0585300000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0585200000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0585100000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0585000000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584f00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584e00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584d00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584c00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584b00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584a00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584900000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584800000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584700000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584600000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584500000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584400000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584300000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584200000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584100000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0584000000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583f00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583e00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583d00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583c00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583b00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583a00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583900000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583800000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583700000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583600000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583500000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583400000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583300000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583200000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583100000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0583000000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582f00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582e00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582d00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582c00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582b00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582a00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582900000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582800000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582700000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582600000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582500000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582400000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582300000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582200000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582100000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0582000000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581f00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581e00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581d00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581c00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581b00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581a00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581900000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581800000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581700000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581600000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581500000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581400000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581300000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581200000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581100000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0581000000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580f00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580e00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580d00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580c00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580b00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580a00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580900000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580800000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580700000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580600000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580500000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580400000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580300000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580200000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580100000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0580000000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057ff00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057fe00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057fd00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057fc00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057fb00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057fa00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f900000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f800000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f700000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f600000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f500000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f400000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f300000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f200000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f100000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057f000000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057ef00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057ee00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057ed00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057ec00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057eb00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057ea00000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e900000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e800000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e700000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e600000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e500000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e400000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e200000mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f057e100000getpid() = 1820531openat(AT_FDCWD, "/proc/1820531/stat", O_RDONLY|O_CLOEXEC) = 13fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0lseek(13, 0, SEEK_CUR) = 0lseek(13, 0, SEEK_CUR) = 0fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0read(13, "1820531 (pytest) R 1820530 18198"..., 8192) = 347read(13, "", 7845) = 0close(13) = 0openat(AT_FDCWD, "/proc/1820531/statm", O_RDONLY|O_CLOEXEC) = 13fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0lseek(13, 0, SEEK_CUR) = 0read(13, "42722 38571 2112 1 0 38752 0\n", 32768) = 29close(13) = 0write(6, "157986816", 9) = 9write(6, "\n", 1) = 1munmap(0x7f057e400000, 1048576) = 0munmap(0x7f057e500000, 1048576) = 0munmap(0x7f057e600000, 1048576) = 0munmap(0x7f057e700000, 1048576) = 0munmap(0x7f057e800000, 1048576) = 0munmap(0x7f057e900000, 1048576) = 0munmap(0x7f057ea00000, 1048576) = 0munmap(0x7f057eb00000, 1048576) = 0munmap(0x7f057ec00000, 1048576) = 0munmap(0x7f057ed00000, 1048576) = 0munmap(0x7f057ee00000, 1048576) = 0munmap(0x7f057ef00000, 1048576) = 0munmap(0x7f057f000000, 1048576) = 0munmap(0x7f057f100000, 1048576) = 0munmap(0x7f057f200000, 1048576) = 0munmap(0x7f057f300000, 1048576) = 0munmap(0x7f057f400000, 1048576) = 0munmap(0x7f057f500000, 1048576) = 0munmap(0x7f057f600000, 1048576) = 0munmap(0x7f057f700000, 1048576) = 0munmap(0x7f057f800000, 1048576) = 0munmap(0x7f057f900000, 1048576) = 0munmap(0x7f057fa00000, 1048576) = 0munmap(0x7f057fb00000, 1048576) = 0munmap(0x7f057fc00000, 1048576) = 0munmap(0x7f057fd00000, 1048576) = 0munmap(0x7f057fe00000, 1048576) = 0munmap(0x7f057ff00000, 1048576) = 0munmap(0x7f0580000000, 1048576) = 0munmap(0x7f0580100000, 1048576) = 0munmap(0x7f0580200000, 1048576) = 0munmap(0x7f0580300000, 1048576) = 0munmap(0x7f0580400000, 1048576) = 0munmap(0x7f0580500000, 1048576) = 0munmap(0x7f0580600000, 1048576) = 0munmap(0x7f0580700000, 1048576) = 0munmap(0x7f0580800000, 1048576) = 0munmap(0x7f0580900000, 1048576) = 0munmap(0x7f0580a00000, 1048576) = 0munmap(0x7f0580b00000, 1048576) = 0munmap(0x7f0580c00000, 1048576) = 0munmap(0x7f0580d00000, 1048576) = 0munmap(0x7f0580e00000, 1048576) = 0munmap(0x7f0580f00000, 1048576) = 0munmap(0x7f0581000000, 1048576) = 0munmap(0x7f0581100000, 1048576) = 0munmap(0x7f0581200000, 1048576) = 0munmap(0x7f0581300000, 1048576) = 0munmap(0x7f0581400000, 1048576) = 0munmap(0x7f0581500000, 1048576) = 0munmap(0x7f0581600000, 1048576) = 0munmap(0x7f0581700000, 1048576) = 0munmap(0x7f0581800000, 1048576) = 0munmap(0x7f0581900000, 1048576) = 0munmap(0x7f0581a00000, 1048576) = 0munmap(0x7f0581b00000, 1048576) = 0munmap(0x7f0581c00000, 1048576) = 0munmap(0x7f0581d00000, 1048576) = 0munmap(0x7f0581e00000, 1048576) = 0munmap(0x7f0581f00000, 1048576) = 0munmap(0x7f0582000000, 1048576) = 0munmap(0x7f0582100000, 1048576) = 0munmap(0x7f0582200000, 1048576) = 0munmap(0x7f0582300000, 1048576) = 0munmap(0x7f0582400000, 1048576) = 0munmap(0x7f0582500000, 1048576) = 0munmap(0x7f0582600000, 1048576) = 0munmap(0x7f0582700000, 1048576) = 0munmap(0x7f0582800000, 1048576) = 0munmap(0x7f0582900000, 1048576) = 0munmap(0x7f0582a00000, 1048576) = 0munmap(0x7f0582b00000, 1048576) = 0munmap(0x7f0582c00000, 1048576) = 0munmap(0x7f0582d00000, 1048576) = 0munmap(0x7f0582e00000, 1048576) = 0munmap(0x7f0582f00000, 1048576) = 0munmap(0x7f0583000000, 1048576) = 0munmap(0x7f0583100000, 1048576) = 0munmap(0x7f0583200000, 1048576) = 0munmap(0x7f0583300000, 1048576) = 0munmap(0x7f0583400000, 1048576) = 0munmap(0x7f0583500000, 1048576) = 0munmap(0x7f0583600000, 1048576) = 0munmap(0x7f0583700000, 1048576) = 0munmap(0x7f0583800000, 1048576) = 0munmap(0x7f0583900000, 1048576) = 0munmap(0x7f0583a00000, 1048576) = 0munmap(0x7f0583b00000, 1048576) = 0munmap(0x7f0583c00000, 1048576) = 0munmap(0x7f0583d00000, 1048576) = 0munmap(0x7f0583e00000, 1048576) = 0munmap(0x7f0583f00000, 1048576) = 0munmap(0x7f0584000000, 1048576) = 0munmap(0x7f0584100000, 1048576) = 0munmap(0x7f0584200000, 1048576) = 0munmap(0x7f0584300000, 1048576) = 0munmap(0x7f0584400000, 1048576) = 0munmap(0x7f0584500000, 1048576) = 0munmap(0x7f0584600000, 1048576) = 0munmap(0x7f0584700000, 1048576) = 0munmap(0x7f0584800000, 1048576) = 0munmap(0x7f0584900000, 1048576) = 0munmap(0x7f0584a00000, 1048576) = 0munmap(0x7f0584b00000, 1048576) = 0munmap(0x7f0584c00000, 1048576) = 0munmap(0x7f0584d00000, 1048576) = 0munmap(0x7f0584e00000, 1048576) = 0munmap(0x7f0584f00000, 1048576) = 0munmap(0x7f0585000000, 1048576) = 0munmap(0x7f0585100000, 1048576) = 0munmap(0x7f0585200000, 1048576) = 0munmap(0x7f0585300000, 1048576) = 0munmap(0x7f057e300000, 1048576) = 0

— Reply to this email directly, view it on GitHub https://github.com/intellimath/recordclass/issues/8#issuecomment-2189352754, or unsubscribe https://github.com/notifications/unsubscribe-auth/AA3V5PLWMEKXGRC3FGONM4TZJGH7JAVCNFSM6AAAAABJ2MRLCGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCOBZGM2TENZVGQ . You are receiving this because you commented.Message ID: @.***>

kloczek commented 3 weeks ago

If those files should not be used testpaths i pytest settings should be added. https://docs.pytest.org/en/stable/reference/customize.html BTW test suite .. why not move lib/recordclass/test to tests/? 🤔 Currently looks like this is causing that test suite is included in .whl archive.

hulsed commented 3 weeks ago

As long as you're working on the setup for pytest, it might be a good idea to add a pyproject.toml file to replace setup.py. You could then use the toml to configure any particular settings your repo would need for pytest. See: https://packaging.python.org/en/latest/guides/modernize-setup-py-project/

intellimath commented 3 weeks ago

I think that by 0.23 it will be possible to try to transfer to py project.toml

kloczek commented 3 weeks ago

pytest can obtain its settings from pyproject.toml, setup.cfg and at thenn from pytest.ini and last from tox.ini. Full migration to pyproject.toml in this case is not essential.

intellimath commented 2 weeks ago

After last commit segfault shouldn't happen.

kloczek commented 2 weeks ago

With current master cannot test that using "test as installed" methodology.

c37.x86_64/usr/lib/python3.10/site-packages
+ /usr/bin/pytest -ra -m 'not network' --import-mode=importlib
==================================================================================== test session starts ====================================================================================
platform linux -- Python 3.10.14, pytest-8.2.2, pluggy-1.5.0
rootdir: /home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2
collected 0 items / 11 errors

========================================================================================== ERRORS ===========================================================================================
___________________________________________________________ ERROR collecting lib/recordclass/test/match/test_dataobject_match.py ____________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/lib/recordclass/test/match/test_dataobject_match.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
lib/recordclass/__init__.py:25: in <module>
    from ._dataobject import dataobject, datastruct, astuple, asdict, clone, update, make, Factory
E   ModuleNotFoundError: No module named 'recordclass._dataobject'
_________________________________________________________________ ERROR collecting lib/recordclass/test/test_arrayclass.py __________________________________________________________________
<frozen importlib._bootstrap_external>:883: in exec_module
    ???
<frozen importlib._bootstrap>:241: in _call_with_frames_removed
    ???
lib/recordclass/test/__init__.py:3: in <module>
    from recordclass.test.test_recordclass import *
<frozen importlib._bootstrap>:1027: in _find_and_load
    ???
<frozen importlib._bootstrap>:1006: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:688: in _load_unlocked
    ???
/usr/lib/python3.10/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
    exec(co, module.__dict__)
lib/recordclass/test/test_recordclass.py:20: in <module>
    TestNT = recordclass('TestNT', 'x y z')    # type used for pickle tests
E   TypeError: 'module' object is not callable
_________________________________________________________________ ERROR collecting lib/recordclass/test/test_dataobject.py __________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/lib/recordclass/test/test_dataobject.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
lib/recordclass/test/test_dataobject.py:7: in <module>
    from recordclass import make_dataclass, dataobject, make, clone, update
E   ImportError: cannot import name 'make_dataclass' from 'recordclass' (/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/lib/recordclass/__init__.py)
__________________________________________________________________ ERROR collecting lib/recordclass/test/test_litelist.py ___________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/lib/recordclass/test/test_litelist.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
lib/recordclass/test/test_litelist.py:2: in <module>
    from recordclass import litelist, litelist_fromargs
E   ImportError: cannot import name 'litelist' from 'recordclass' (/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/lib/recordclass/__init__.py)
__________________________________________________________________ ERROR collecting lib/recordclass/test/test_litetuple.py __________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/lib/recordclass/test/test_litetuple.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
lib/recordclass/test/test_litetuple.py:2: in <module>
    from recordclass import litetuple, mutabletuple
E   ImportError: cannot import name 'litetuple' from 'recordclass' (/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/lib/recordclass/__init__.py)
_________________________________________________________________ ERROR collecting lib/recordclass/test/test_recordclass.py _________________________________________________________________
lib/recordclass/test/test_recordclass.py:20: in <module>
    TestNT = recordclass('TestNT', 'x y z')    # type used for pickle tests
E   TypeError: 'module' object is not callable
___________________________________________________________________ ERROR collecting lib/recordclass/test/test_sqlite.py ____________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/lib/recordclass/test/test_sqlite.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
lib/recordclass/test/test_sqlite.py:3: in <module>
    from recordclass import dataobject
E   ImportError: cannot import name 'dataobject' from 'recordclass' (/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/lib/recordclass/__init__.py)
______________________________________________________________ ERROR collecting lib/recordclass/test/typing/test_dataobject.py ______________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/lib/recordclass/test/typing/test_dataobject.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
lib/recordclass/test/typing/test_dataobject.py:7: in <module>
    from recordclass import as_dataclass
E   ImportError: cannot import name 'as_dataclass' from 'recordclass' (/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/lib/recordclass/__init__.py)
______________________________________________________________ ERROR collecting lib/recordclass/test/typing/test_datastruct.py ______________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/lib/recordclass/test/typing/test_datastruct.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
lib/recordclass/test/typing/test_datastruct.py:7: in <module>
    from recordclass import as_record
E   ImportError: cannot import name 'as_record' from 'recordclass' (/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/lib/recordclass/__init__.py)
_____________________________________________________________ ERROR collecting lib/recordclass/test/typing/test_recordclass.py ______________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/recordclass-0.22.0.2/lib/recordclass/test/typing/test_recordclass.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
lib/recordclass/test/typing/test_recordclass.py:3: in <module>
    from recordclass.typing import RecordClass
lib/recordclass/typing/__init__.py:24: in <module>
    from recordclass._dataobject import dataobject
E   ModuleNotFoundError: No module named 'recordclass._dataobject'
_______________________________________________________________________________ ERROR collecting test_all.py ________________________________________________________________________________
test_all.py:25: in <module>
    test_all()
E   NameError: name 'test_all' is not defined
================================================================================== short test summary info ==================================================================================
ERROR lib/recordclass/test/match/test_dataobject_match.py
ERROR lib/recordclass/test/test_arrayclass.py - TypeError: 'module' object is not callable
ERROR lib/recordclass/test/test_dataobject.py
ERROR lib/recordclass/test/test_litelist.py
ERROR lib/recordclass/test/test_litetuple.py
ERROR lib/recordclass/test/test_recordclass.py - TypeError: 'module' object is not callable
ERROR lib/recordclass/test/test_sqlite.py
ERROR lib/recordclass/test/typing/test_dataobject.py
ERROR lib/recordclass/test/typing/test_datastruct.py
ERROR lib/recordclass/test/typing/test_recordclass.py
ERROR test_all.py - NameError: name 'test_all' is not defined
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 11 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
==================================================================================== 11 errors in 1.23s =====================================================================================

it would be good to:

kloczek commented 2 weeks ago

Additionally after prepare code for pyupgrade it would be good to filter everything over pyupgrade --py38-plus (python 3.7 has been EOSed almost year ago).