diff --git a/.bumpversion.cfg b/.bumpversion.cfg index f4dedb1..2024805 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 1.10.0 +current_version = 1.11.0 commit = True tag = True diff --git a/.cookiecutterrc b/.cookiecutterrc index 1d621f1..94d8547 100644 --- a/.cookiecutterrc +++ b/.cookiecutterrc @@ -40,7 +40,7 @@ default_context: sphinx_theme: furo test_matrix_separate_coverage: 'yes' tests_inside_package: 'no' - version: 1.10.0 + version: 1.11.0 version_manager: bump2version website: https://blog.ionelmc.ro year_from: '2014' diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index 446b4da..29983d8 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -673,6 +673,24 @@ jobs: cibw_arch: 'arm64' cibw_build: false os: 'macos-latest' + - name: 'graalpy242-nocov (ubuntu/x86_64/manylinux)' + artifact: 'graalpy242-ubuntu-x86_64-manylinux' + python: 'graalpy-24.2' + toxpython: 'graalpy' + python_arch: 'x64' + tox_env: 'graalpy-nocov' + cibw_arch: 'x86_64' + cibw_build: false + os: 'ubuntu-latest' + - name: 'graalpy242-nocov (macos/arm64)' + artifact: 'graalpy242-macos-arm64' + python: 'graalpy-24.2' + toxpython: 'graalpy' + python_arch: 'arm64' + tox_env: 'graalpy-nocov' + cibw_arch: 'arm64' + cibw_build: false + os: 'macos-latest' steps: - uses: docker/setup-qemu-action@v3 if: matrix.cibw_arch == 'aarch64' diff --git a/README.rst b/README.rst index e429753..43d6011 100644 --- a/README.rst +++ b/README.rst @@ -45,9 +45,9 @@ Overview :alt: Supported implementations :target: https://pypi.org/project/lazy-object-proxy -.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-lazy-object-proxy/v1.10.0.svg +.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-lazy-object-proxy/v1.11.0.svg :alt: Commits since latest release - :target: https://github.com/ionelmc/python-lazy-object-proxy/compare/v1.10.0...master + :target: https://github.com/ionelmc/python-lazy-object-proxy/compare/v1.11.0...master diff --git a/docs/conf.py b/docs/conf.py index 18f3f99..dfa64f0 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -23,7 +23,7 @@ import traceback traceback.print_exc() - version = release = '1.10.0' + version = release = '1.11.0' pygments_style = 'trac' templates_path = ['.'] diff --git a/setup.py b/setup.py index fdfbd9a..3cbc50e 100755 --- a/setup.py +++ b/setup.py @@ -22,8 +22,8 @@ LFLAGS = '' allow_extensions = True -if '__pypy__' in sys.builtin_module_names: - print('NOTICE: C extensions disabled on PyPy (would be broken)!') +if sys.implementation.name in ('pypy', 'graalpy'): + print('NOTICE: C extensions disabled on PyPy/GraalPy (would be broken)!') allow_extensions = False if os.environ.get('SETUPPY_FORCE_PURE'): print('NOTICE: C extensions disabled (SETUPPY_FORCE_PURE)!') @@ -78,7 +78,7 @@ def read(*names, **kwargs): use_scm_version={ 'local_scheme': 'dirty-tag', 'write_to': 'src/lazy_object_proxy/_version.py', - 'fallback_version': '1.10.0', + 'fallback_version': '1.11.0', }, license='BSD-2-Clause', description='A fast and thorough lazy object proxy.', diff --git a/src/lazy_object_proxy/__init__.py b/src/lazy_object_proxy/__init__.py index 50b9cae..e91e6c2 100644 --- a/src/lazy_object_proxy/__init__.py +++ b/src/lazy_object_proxy/__init__.py @@ -18,6 +18,6 @@ try: from ._version import version as __version__ except ImportError: - __version__ = '1.10.0' + __version__ = '1.11.0' __all__ = ('Proxy',) diff --git a/tests/conftest.py b/tests/conftest.py index 1317faf..1289733 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,8 +1,10 @@ +import os import sys import pytest PYPY = '__pypy__' in sys.builtin_module_names +GRAALPY = sys.implementation.name == 'graalpy' @pytest.fixture(scope='session') @@ -19,7 +21,7 @@ class FakeModule: try: from lazy_object_proxy.cext import Proxy except ImportError: - if PYPY: + if PYPY or GRAALPY or os.environ.get('SETUPPY_FORCE_PURE'): pytest.skip(reason='C Extension not available.') else: raise diff --git a/tests/test_async_py3.py b/tests/test_async_py3.py index 0d9450b..235cf2f 100644 --- a/tests/test_async_py3.py +++ b/tests/test_async_py3.py @@ -13,6 +13,7 @@ from lazy_object_proxy.utils import await_ pypyxfail = pytest.mark.xfail('hasattr(sys, "pypy_version_info")') +graalpyxfail = pytest.mark.xfail('sys.implementation.name == "graalpy"') class AsyncYieldFrom: @@ -75,6 +76,7 @@ def gen(): assert not hasattr(gen, '__await__') +@graalpyxfail def test_func_1(lop): async def foo(): return 10 @@ -95,6 +97,7 @@ def bar(): assert not bool(bar.__code__.co_flags & inspect.CO_COROUTINE) +@graalpyxfail def test_func_2(lop): async def foo(): raise StopIteration @@ -269,6 +272,7 @@ async def func(): coro.close() +@graalpyxfail def test_func_12(lop): async def g(): i = me.send(None) @@ -279,6 +283,7 @@ async def g(): me.send(None) +@graalpyxfail def test_func_13(lop): async def g(): pass @@ -290,6 +295,7 @@ async def g(): coro.close() +@graalpyxfail def test_func_14(lop): @types.coroutine def gen(): @@ -777,6 +783,7 @@ async def foo(): run_async(lop.Proxy(foo)) +@graalpyxfail def test_with_2(lop): class CM: def __aenter__(self): @@ -845,6 +852,7 @@ async def func(): @pypyxfail +@graalpyxfail def test_with_6(lop): class CM: def __aenter__(self): @@ -863,6 +871,7 @@ async def foo(): @pypyxfail +@graalpyxfail def test_with_7(lop): class CM: async def __aenter__(self): @@ -887,6 +896,7 @@ async def foo(): @pypyxfail +@graalpyxfail def test_with_8(lop): CNT = 0 @@ -990,6 +1000,7 @@ async def foo(): pytest.fail('exception from __aexit__ did not propagate') +@graalpyxfail def test_with_11(lop): CNT = 0 @@ -1032,6 +1043,7 @@ async def foo(): run_async(lop.Proxy(foo)) +@graalpyxfail def test_with_13(lop): CNT = 0 diff --git a/tests/test_lazy_object_proxy.py b/tests/test_lazy_object_proxy.py index 5f88394..4140c10 100644 --- a/tests/test_lazy_object_proxy.py +++ b/tests/test_lazy_object_proxy.py @@ -14,6 +14,8 @@ PYPY = '__pypy__' in sys.builtin_module_names +graalpyxfail = pytest.mark.xfail('sys.implementation.name == "graalpy"') + OBJECTS_CODE = """ class TargetBaseClass(object): "documentation" @@ -223,6 +225,7 @@ def test_function_doc_string(lop): assert wrapper.__doc__ == target.__doc__ +@graalpyxfail def test_class_of_class(lop): # Test preservation of class __class__ attribute. @@ -271,6 +274,7 @@ def test_class_of_instance(lop): assert isinstance(wrapper, objects.TargetBaseClass) +@graalpyxfail def test_class_of_function(lop): # Test preservation of function __class__ attribute. diff --git a/tox.ini b/tox.ini index dbe24b9..56c22c9 100644 --- a/tox.ini +++ b/tox.ini @@ -14,7 +14,7 @@ envlist = clean, check, docs, - {py39,py310,py311,py312,py313,py313-ft,pypy39,pypy310}-{cover,nocov}, + {py39,py310,py311,py312,py313,py313-ft,pypy39,pypy310,graalpy}-{cover,nocov}, report ignore_basepython_conflict = true @@ -28,6 +28,7 @@ basepython = py312: {env:TOXPYTHON:python3.12} py313: {env:TOXPYTHON:python3.13} py313ft: {env:TOXPYTHON:python3.13t} + graalpy: {env:TOXPYTHON:graalpy} {bootstrap,clean,check,report,docs,codecov,coveralls,extension-coveralls}: {env:TOXPYTHON:python3} setenv = PYTHONPATH={toxinidir}/tests
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: