Skip to content
Snippets Groups Projects
Commit 55fb78ad authored by Frederik Hennig's avatar Frederik Hennig Committed by Christoph Alt
Browse files

Fix mutable-default bug in codegen.config with Python 3.11 and newer

parent e759f768
No related branches found
No related tags found
1 merge request!448Fix mutable-default bug in codegen.config with Python 3.11 and newer
...@@ -276,20 +276,9 @@ typecheck: ...@@ -276,20 +276,9 @@ typecheck:
# -------------------- Unit Tests --------------------------------------------------------------------- # -------------------- Unit Tests ---------------------------------------------------------------------
# Normal test - runs on every commit all but "long run" tests .testsuite-base:
tests-and-coverage:
stage: "Unit Tests" stage: "Unit Tests"
needs: [] needs: []
image: i10git.cs.fau.de:5005/pycodegen/pycodegen/nox:ubuntu24.04-cuda12.6
script:
- mkdir -p ~/.config/matplotlib
- echo "backend:template" > ~/.config/matplotlib/matplotlibrc
- mkdir public
- nox --session "testsuite(cupy12)"
tags:
- docker
- cuda11
- AVX
coverage: /Total coverage:\s\d+.\d+\%/ coverage: /Total coverage:\s\d+.\d+\%/
artifacts: artifacts:
when: always when: always
...@@ -302,6 +291,28 @@ tests-and-coverage: ...@@ -302,6 +291,28 @@ tests-and-coverage:
path: coverage.xml path: coverage.xml
junit: report.xml junit: report.xml
"testsuite-gpu-py3.10":
extends: .testsuite-base
image: i10git.cs.fau.de:5005/pycodegen/pycodegen/nox:ubuntu24.04-cuda12.6
script:
- mkdir -p ~/.config/matplotlib
- echo "backend:template" > ~/.config/matplotlib/matplotlibrc
- mkdir public
- nox --session "testsuite-3.10(cupy12)"
tags:
- docker
- cuda11
- AVX
"testsuite-cpu-py3.13":
extends: .testsuite-base
image: i10git.cs.fau.de:5005/pycodegen/pycodegen/nox:alpine
script:
- nox --session "testsuite-3.13(cpu)"
tags:
- docker
- AVX
# -------------------- Documentation --------------------------------------------------------------------- # -------------------- Documentation ---------------------------------------------------------------------
...@@ -322,7 +333,7 @@ build-documentation: ...@@ -322,7 +333,7 @@ build-documentation:
pages: pages:
image: alpine:latest image: alpine:latest
stage: deploy stage: deploy
needs: ["tests-and-coverage", "build-documentation"] needs: ["testsuite-gpu-py3.10", "build-documentation"]
script: script:
- mv docs/build/html public - mv docs/build/html public
- mv coverage_report public/coverage_report - mv coverage_report public/coverage_report
......
...@@ -86,8 +86,8 @@ def typecheck(session: nox.Session): ...@@ -86,8 +86,8 @@ def typecheck(session: nox.Session):
session.run("mypy", "src/pystencils") session.run("mypy", "src/pystencils")
@nox.session(python=["3.10", "3.12", "3.13"], tags=["test"])
@nox.parametrize("cupy_version", [None, "12", "13"], ids=["cpu", "cupy12", "cupy13"]) @nox.parametrize("cupy_version", [None, "12", "13"], ids=["cpu", "cupy12", "cupy13"])
@nox.session(python="3.10", tags=["test"])
def testsuite(session: nox.Session, cupy_version: str | None): def testsuite(session: nox.Session, cupy_version: str | None):
if cupy_version is not None: if cupy_version is not None:
install_cupy(session, cupy_version, skip_if_no_cuda=True) install_cupy(session, cupy_version, skip_if_no_cuda=True)
......
...@@ -196,12 +196,16 @@ class Category(Generic[Category_T]): ...@@ -196,12 +196,16 @@ class Category(Generic[Category_T]):
def __get__(self, obj: ConfigBase, objtype: type[ConfigBase] | None = None) -> Category_T: def __get__(self, obj: ConfigBase, objtype: type[ConfigBase] | None = None) -> Category_T:
if obj is None: if obj is None:
return self._default return None
return cast(Category_T, getattr(obj, self._lookup, None)) cat = getattr(obj, self._lookup, None)
if cat is None:
cat = self._default.copy()
setattr(obj, self._lookup, cat)
return cast(Category_T, cat)
def __set__(self, obj: ConfigBase, cat: Category_T): def __set__(self, obj: ConfigBase, cat: Category_T | None):
setattr(obj, self._lookup, cat.copy()) setattr(obj, self._lookup, cat.copy() if cat is not None else None)
class _AUTO_TYPE: ... # noqa: E701 class _AUTO_TYPE: ... # noqa: E701
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment