diff --git a/.github/workflows/build-package.yml b/.github/workflows/build-package.yml index fddab1d..7b58441 100644 --- a/.github/workflows/build-package.yml +++ b/.github/workflows/build-package.yml @@ -36,7 +36,6 @@ jobs: os: [ windows-2025, windows-2022, - windows-2019, ubuntu-24.04, ubuntu-22.04, ] #, macos-14, macos-14-large, macos-15, macos-26] @@ -82,7 +81,8 @@ jobs: pip install pytest scipy pytest -v - commit_shared_libs: + commit_and_publish: + if: startsWith(github.ref, 'refs/tags/v') needs: test runs-on: ubuntu-latest permissions: @@ -133,7 +133,7 @@ jobs: - name: build package run: python -m build - - name: Publish to TestPyPI + - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@release/v1 - name: commit shared libraries diff --git a/src/deterministic_gaussian_sampling/approximation/dirac_to_dirac.py b/src/deterministic_gaussian_sampling/approximation/dirac_to_dirac.py index 73548b0..905ba4c 100644 --- a/src/deterministic_gaussian_sampling/approximation/dirac_to_dirac.py +++ b/src/deterministic_gaussian_sampling/approximation/dirac_to_dirac.py @@ -69,7 +69,6 @@ def __call__( ctypes.c_size_t(M), ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wXChecked is None else wXChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wYChecked is None else wYChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), @@ -126,7 +125,6 @@ def modified_van_mises_distance_sq( ctypes.c_size_t(M), ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wXChecked is None else wXChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wYChecked is None else wYChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) @@ -174,7 +172,6 @@ def modified_van_mises_distance_sq_derivative( ctypes.c_size_t(M), ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wXChecked is None else wXChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wYChecked is None else wYChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) @@ -231,7 +228,6 @@ def __call__( ctypes.c_size_t(M), ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), wX, wXD, @@ -286,7 +282,6 @@ def modified_van_mises_distance_sq( ctypes.c_size_t(M), ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), wX, wXD @@ -332,7 +327,6 @@ def modified_van_mises_distance_sq_derivative( ctypes.c_size_t(M), ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), wX, wXD @@ -402,7 +396,6 @@ def __call__( ctypes.c_size_t(M), ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wXChecked is None else wXChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wYChecked is None else wYChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), @@ -459,7 +452,6 @@ def modified_van_mises_distance_sq( ctypes.c_size_t(M), ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wXChecked is None else wXChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wYChecked is None else wYChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) @@ -507,7 +499,6 @@ def modified_van_mises_distance_sq_derivative( ctypes.c_size_t(M), ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wXChecked is None else wXChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wYChecked is None else wYChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) diff --git a/src/deterministic_gaussian_sampling/approximation/gaussian_to_dirac.py b/src/deterministic_gaussian_sampling/approximation/gaussian_to_dirac.py index 1f828bd..3431bf8 100644 --- a/src/deterministic_gaussian_sampling/approximation/gaussian_to_dirac.py +++ b/src/deterministic_gaussian_sampling/approximation/gaussian_to_dirac.py @@ -58,7 +58,6 @@ def __call__( covData.sqrt_eigvals.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wXChecked is None else wXChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), ctypes.byref(minimizer_result), @@ -95,7 +94,6 @@ def modified_van_mises_distance_sq( ctypes.byref(result), ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wXChecked is None else wXChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) ) @@ -123,7 +121,6 @@ def modified_van_mises_distance_sq_derivative( gradientChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wXChecked is None else wXChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) ) @@ -173,7 +170,6 @@ def __call__( self._parent.gm_to_dirac_snd_double, ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wXChecked is None else wXChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), ctypes.byref(minimizer_result), @@ -205,7 +201,6 @@ def modified_van_mises_distance_sq( ctypes.byref(result), ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wXChecked is None else wXChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) ) @@ -230,7 +225,6 @@ def modified_van_mises_distance_sq_derivative( gradientChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), ctypes.c_size_t(L), ctypes.c_size_t(N), - ctypes.c_size_t(100), xChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)), None if wXChecked is None else wXChecked.ctypes.data_as(ctypes.POINTER(ctypes.c_double)) ) diff --git a/src/deterministic_gaussian_sampling/dll_handling/dynamic_dll_loading.py b/src/deterministic_gaussian_sampling/dll_handling/dynamic_dll_loading.py index 5c9b437..4f3048e 100644 --- a/src/deterministic_gaussian_sampling/dll_handling/dynamic_dll_loading.py +++ b/src/deterministic_gaussian_sampling/dll_handling/dynamic_dll_loading.py @@ -32,7 +32,6 @@ def _setup_ctypes_dll(cdll: ctypes.CDLL) -> ctypes.CDLL: c_size, # M c_size, # L c_size, # N - c_size, # bMax c_double_p, # x c_double_p, # wX c_double_p, # wY @@ -85,7 +84,6 @@ def _setup_ctypes_dll(cdll: ctypes.CDLL) -> ctypes.CDLL: c_size, c_size, c_size, - c_size, c_double_p, ctypes_wrapper.wXCallbackCTypes, ctypes_wrapper.wXDCallbackCTypes, @@ -138,7 +136,6 @@ def _setup_ctypes_dll(cdll: ctypes.CDLL) -> ctypes.CDLL: c_size, c_size, c_size, - c_size, c_double_p, c_double_p, c_double_p, @@ -190,7 +187,6 @@ def _setup_ctypes_dll(cdll: ctypes.CDLL) -> ctypes.CDLL: c_double_p, # sqrt eigenvalues c_size, c_size, - c_size, c_double_p, c_double_p, gsl_result_p, @@ -236,7 +232,6 @@ def _setup_ctypes_dll(cdll: ctypes.CDLL) -> ctypes.CDLL: c_void_p, c_size, c_size, - c_size, c_double_p, c_double_p, gsl_result_p, diff --git a/src/deterministic_gaussian_sampling/type_wrapper/ctypes_wrapper.py b/src/deterministic_gaussian_sampling/type_wrapper/ctypes_wrapper.py index 15dc16d..e1df788 100644 --- a/src/deterministic_gaussian_sampling/type_wrapper/ctypes_wrapper.py +++ b/src/deterministic_gaussian_sampling/type_wrapper/ctypes_wrapper.py @@ -76,6 +76,7 @@ class ApproximateOptionsCTypes(ctypes.Structure): ("initialX", ctypes.c_bool), ("maxIterations", ctypes.c_size_t), ("verbose", ctypes.c_bool), + ("bMax", ctypes.c_size_t), ] @staticmethod @@ -90,6 +91,7 @@ def from_py_type(pyT: "deterministic_gaussian_sampling.type_wrapper.python_varia ctypes.c_bool(pyT.initialX), ctypes.c_size_t(pyT.maxIterations), ctypes.c_bool(pyT.verbose), + ctypes.c_size_t(pyT.bMax), ) def to_py_type(self): @@ -103,6 +105,7 @@ def to_py_type(self): bool(self.initialX), int(self.maxIterations), bool(self.verbose), + int(self.bMax), ) diff --git a/src/deterministic_gaussian_sampling/type_wrapper/python_variant.py b/src/deterministic_gaussian_sampling/type_wrapper/python_variant.py index 337de2f..bc8be3a 100644 --- a/src/deterministic_gaussian_sampling/type_wrapper/python_variant.py +++ b/src/deterministic_gaussian_sampling/type_wrapper/python_variant.py @@ -114,6 +114,7 @@ class ApproximateOptionsPy: initialX: bool maxIterations: int verbose: bool + bMax: int def __str__(self): lines = [] @@ -126,6 +127,7 @@ def __str__(self): lines.append(f" initialX: {self.initialX}") lines.append(f" maxIterations: {self.maxIterations}") lines.append(f" verbose: {self.verbose}") + lines.append(f" bMax: {self.bMax}") return "\n".join(lines) __repr__ = __str__