From c5fff054b530cfb32fc8589853976c5f0b48bdbe Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 09:49:09 +0100 Subject: [PATCH 01/19] Create test_values.py --- src/tests/test_values.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/tests/test_values.py diff --git a/src/tests/test_values.py b/src/tests/test_values.py new file mode 100644 index 0000000..670d41e --- /dev/null +++ b/src/tests/test_values.py @@ -0,0 +1,22 @@ +from pyoload import * +import pyoload + + +assert pyoload.__version__ == '2.0.0' + + +@annotate +def odd(a: Values(range(10))) -> bool: + return a % 2 == 1 + + +def test_values(): + assert odd(3), '3 reported not odd' + assert not odd(2), '2 reported odd' + + try: + odd(10) + except AnnotationError: + pass + else: + raise AssertionError('Values did not crash') From da1d74b1cd817fb6acee785365c5851924952921 Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 09:55:39 +0100 Subject: [PATCH 02/19] Update test_values.py --- src/tests/test_values.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tests/test_values.py b/src/tests/test_values.py index 670d41e..9c609dc 100644 --- a/src/tests/test_values.py +++ b/src/tests/test_values.py @@ -1,4 +1,6 @@ -from pyoload import * +from pyoload import annotate +from pyoload import Values +from pyoload import AnnotationError import pyoload From 718c2b93f9798f91be668868e1779739e64a2cdd Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:04:14 +0100 Subject: [PATCH 03/19] Update docker-compose.yml --- docker-compose.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 8d05846..c17b6df 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,6 +9,31 @@ services: - ./src:/src - ./README.rst:/src/README.rst - ./LICENSE:/src/LICENSE + + test38: + build: + context: . + dockerfile: dockerfiles/dev.dockerfile + args: + PYTHON_VERSION: '3.8' + command: pytest + + test39: + build: + context: . + dockerfile: dockerfiles/dev.dockerfile + args: + PYTHON_VERSION: '3.9' + command: pytest + + test310: + build: + context: . + dockerfile: dockerfiles/dev.dockerfile + args: + PYTHON_VERSION: '3.10' + command: pytest + test311: build: context: . From 1de8fde3f095e0de7285f642abb39c1d1436b413 Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:05:51 +0100 Subject: [PATCH 04/19] Update conf.py --- docs/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index de54063..1aed149 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -38,8 +38,8 @@ copyright = '2024, ken-morel' author = 'ken-morel' -release = '1.1.3' -version = '1.1.3' +release = '2.0.0' +version = '2.0.0' # -- General configuration From 2d03569099d9e25e707893003229b1068f600e4b Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:07:36 +0100 Subject: [PATCH 05/19] Update index.rst --- docs/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.rst b/docs/index.rst index cb4e135..b0dc0e9 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,5 +1,5 @@ -Welcome to pyoload's documentation! +Welcome to pyoload v|version| documentation! =================================== .. image:: https://github.com/ken-morel/pyoload/actions/workflows/python-publish.yml/badge.svg From 6586f3f1c9b46a3d2b1487554ef1cf9ac40abd58 Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:09:51 +0100 Subject: [PATCH 06/19] Update __init__.py --- src/pyoload/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyoload/__init__.py b/src/pyoload/__init__.py index c742304..9f96c30 100644 --- a/src/pyoload/__init__.py +++ b/src/pyoload/__init__.py @@ -733,5 +733,5 @@ def new_setter(self: Any, name: str, value: Any) -> Any: return cls -__version__ = '1.1.3' +__version__ = '2.0.0' __author__ = 'ken-morel' From 09e13d50bda56b292fcab2936e40b9c98a05af61 Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:10:20 +0100 Subject: [PATCH 07/19] Delete src/tests/OverloadTest.py --- src/tests/OverloadTest.py | 45 --------------------------------------- 1 file changed, 45 deletions(-) delete mode 100644 src/tests/OverloadTest.py diff --git a/src/tests/OverloadTest.py b/src/tests/OverloadTest.py deleted file mode 100644 index b138e72..0000000 --- a/src/tests/OverloadTest.py +++ /dev/null @@ -1,45 +0,0 @@ -import pyoload - -from pyoload import Any -from pyoload import Checks -from pyoload import get_name -from pyoload import overload - -assert pyoload.__version__ == '1.1.2' - - -@overload -def div(a: str, b: str): - return str(float(a) / float(b)) - - -@overload(get_name(div)) -def div_(a: str, b: Checks(eq=0)): - return 'Infinity' - - -@overload(get_name(div)) -def div__(a: Any, b: Checks(eq=0)): - return NotImplemented - - -@div_.overload -def div___(a: str, b: int): - return int(float(a) / b) - - -@div.overload -def div____(a: float, b: float): - return float(float(a) / b) - - -def OverloadTest(): - assert div('4', '2') == '2.0' - assert div('3', 0) == 'Infinity' - assert div(None, 0) == NotImplemented - assert div('4', 2) == 2 - assert div(3.0, 1.0) == 3.0 - - -if __name__ == '__main__': - OverloadTest() From d46ac40b213b2d3f50ff8121b5ff659880682427 Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:10:57 +0100 Subject: [PATCH 08/19] Update test_cast.py --- src/tests/test_cast.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/test_cast.py b/src/tests/test_cast.py index 00a9b5a..545a061 100644 --- a/src/tests/test_cast.py +++ b/src/tests/test_cast.py @@ -6,7 +6,7 @@ from pyoload import annotate from pyoload import typeMatch -assert pyoload.__version__ == '1.1.3' +assert pyoload.__version__ == '2.0.0' @annotate From 1391fc132d14b25fa3bd48c786bf66e7e9b87320 Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:18:42 +0100 Subject: [PATCH 09/19] Update test_check.py --- src/tests/test_check.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/tests/test_check.py b/src/tests/test_check.py index 6e62d86..0a87092 100644 --- a/src/tests/test_check.py +++ b/src/tests/test_check.py @@ -7,7 +7,7 @@ from pyoload import Check from pyoload import annotate -assert pyoload.__version__ == '1.1.3' +assert pyoload.__version__ == '2.0.0' @annotate @@ -41,6 +41,9 @@ def test(param, val): print(param, val) Checks(test1=3)(3) Checks(test2=4)(4) + Checks(ge=2, gt=1, lt=2.1, le=2, eq=2)(2) + Checks(ge=-2.5, gt=-3, lt=-2, le=2, eq=-2.5)(-2.5) + Checks(len=(2, 5))("abcd") if __name__ == '__main__': From 79ac74bab86adc7b4b084f1cb058bc49eea6188c Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:19:49 +0100 Subject: [PATCH 10/19] Update test_overload.py --- src/tests/test_overload.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/test_overload.py b/src/tests/test_overload.py index 612b3be..65bab68 100644 --- a/src/tests/test_overload.py +++ b/src/tests/test_overload.py @@ -5,7 +5,7 @@ from pyoload import get_name from pyoload import overload -assert pyoload.__version__ == '1.1.3' +assert pyoload.__version__ == '2.0.0' @overload From 43aea06a869a0c9b980aea7def11b2798a052a54 Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:21:37 +0100 Subject: [PATCH 11/19] Update test_check.py --- src/tests/test_check.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/test_check.py b/src/tests/test_check.py index 0a87092..eeb276b 100644 --- a/src/tests/test_check.py +++ b/src/tests/test_check.py @@ -43,7 +43,7 @@ def test(param, val): Checks(test2=4)(4) Checks(ge=2, gt=1, lt=2.1, le=2, eq=2)(2) Checks(ge=-2.5, gt=-3, lt=-2, le=2, eq=-2.5)(-2.5) - Checks(len=(2, 5))("abcd") + Checks(len=(2, 5))('abcd') if __name__ == '__main__': From 49da09289a36820045232b1581f1faf315728b00 Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:24:27 +0100 Subject: [PATCH 12/19] Update Makefile --- Makefile | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index b50bf5a..8a5d6b7 100644 --- a/Makefile +++ b/Makefile @@ -7,13 +7,18 @@ lint: test: docker-compose run --rm dev pytest --cov --cov-report term-missing:skip-covered +test38: + docker-compose run --rm test38 +test39: + docker-compose run --rm test39 +test310: + docker-compose run --rm test310 test311: docker-compose run --rm test311 - test312: docker-compose run --rm test312 -ci: build lint test test311 test312 +ci: build lint test test38 test39 test310 test311 test312 sdist: docker-compose run --rm dev python setup.py sdist From 26339220e2737a2c54b6451dc52055929addae05 Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:33:50 +0100 Subject: [PATCH 13/19] Update test_check.py --- src/tests/test_check.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/tests/test_check.py b/src/tests/test_check.py index eeb276b..b64dd51 100644 --- a/src/tests/test_check.py +++ b/src/tests/test_check.py @@ -19,6 +19,18 @@ def __init__(self: Any, bar: Checks(func=bool)) -> Any: pass +@Check.register('test1 test2') +def test(param, val): + print(param, val) + + +class IsInt(Check): + name = 'isint' + + def __call__(self, a, b): + return a == isinstance(b, int) + + def test_check(): try: foo(0) @@ -36,14 +48,17 @@ def test_check(): else: raise Exception() - @Check.register('test1 test2') - def test(param, val): - print(param, val) Checks(test1=3)(3) Checks(test2=4)(4) Checks(ge=2, gt=1, lt=2.1, le=2, eq=2)(2) Checks(ge=-2.5, gt=-3, lt=-2, le=2, eq=-2.5)(-2.5) Checks(len=(2, 5))('abcd') + Checks(type=dict[str|int, tuple[int]])({ + '#': (12,), + 20: (21, 45), + }) + Checks(isinstance=float)(1.5) + Checks(isint=True)(5) if __name__ == '__main__': From ab766078a2e5d5d73d4404aca6f5c2485c7dc5e5 Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:35:53 +0100 Subject: [PATCH 14/19] Update test_check.py --- src/tests/test_check.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/test_check.py b/src/tests/test_check.py index b64dd51..0866837 100644 --- a/src/tests/test_check.py +++ b/src/tests/test_check.py @@ -53,7 +53,7 @@ def test_check(): Checks(ge=2, gt=1, lt=2.1, le=2, eq=2)(2) Checks(ge=-2.5, gt=-3, lt=-2, le=2, eq=-2.5)(-2.5) Checks(len=(2, 5))('abcd') - Checks(type=dict[str|int, tuple[int]])({ + Checks(type=dict[str | int, tuple[int]])({ '#': (12,), 20: (21, 45), }) From 9542f6e6fe6078b648ddbdedcc136a7f533bd6cb Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:41:09 +0100 Subject: [PATCH 15/19] Update __init__.py --- src/pyoload/__init__.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/pyoload/__init__.py b/src/pyoload/__init__.py index 9f96c30..d8688fa 100644 --- a/src/pyoload/__init__.py +++ b/src/pyoload/__init__.py @@ -98,11 +98,15 @@ class Check: """ checks_list = {} - def __init_subclass__(cls: Any, subclass: Any): + def __init_subclass__(subclass: Any): """ register's subclasses as chexks """ - cls.register(cls.name, cls.__call__) + if hasattr(cls, 'name'): + name = cls.name + else: + name = cls.__name__ + cls.register(name, cls()) @classmethod def register( From b6655ca4f3668328e827ffe6bee952a8c1830ad7 Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:43:49 +0100 Subject: [PATCH 16/19] Update __init__.py --- src/pyoload/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pyoload/__init__.py b/src/pyoload/__init__.py index d8688fa..84e055a 100644 --- a/src/pyoload/__init__.py +++ b/src/pyoload/__init__.py @@ -98,7 +98,7 @@ class Check: """ checks_list = {} - def __init_subclass__(subclass: Any): + def __init_subclass__(cls: Any): """ register's subclasses as chexks """ @@ -106,7 +106,7 @@ def __init_subclass__(subclass: Any): name = cls.name else: name = cls.__name__ - cls.register(name, cls()) + Check.register(cls(), name) @classmethod def register( From 530d792e14963119c48b82f73c49091727257cce Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:45:36 +0100 Subject: [PATCH 17/19] Update __init__.py --- src/pyoload/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyoload/__init__.py b/src/pyoload/__init__.py index 84e055a..087d37f 100644 --- a/src/pyoload/__init__.py +++ b/src/pyoload/__init__.py @@ -106,7 +106,7 @@ def __init_subclass__(cls: Any): name = cls.name else: name = cls.__name__ - Check.register(cls(), name) + Check.register(name)(cls()) @classmethod def register( From 3d15547510d46d49a6638679c7353c73fed809f6 Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:48:47 +0100 Subject: [PATCH 18/19] Update test_check.py --- src/tests/test_check.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/test_check.py b/src/tests/test_check.py index 0866837..47aa429 100644 --- a/src/tests/test_check.py +++ b/src/tests/test_check.py @@ -20,7 +20,7 @@ def __init__(self: Any, bar: Checks(func=bool)) -> Any: @Check.register('test1 test2') -def test(param, val): +def test_print(param, val): print(param, val) From 4807ab41f186bee8ba2199ae84e65dd45dd6ab99 Mon Sep 17 00:00:00 2001 From: ken-morel Date: Wed, 5 Jun 2024 10:50:32 +0100 Subject: [PATCH 19/19] Update test_check.py --- src/tests/test_check.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/test_check.py b/src/tests/test_check.py index 47aa429..eb7322b 100644 --- a/src/tests/test_check.py +++ b/src/tests/test_check.py @@ -20,7 +20,7 @@ def __init__(self: Any, bar: Checks(func=bool)) -> Any: @Check.register('test1 test2') -def test_print(param, val): +def __(param, val): print(param, val)