From 61b670913ffce5be9bf112d966088c6e344b0307 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Feb 2026 14:43:30 -0800 Subject: [PATCH 01/29] Bump sphinxcontrib-spelling from 8.0.0 to 8.0.2 in /doc (#942) Bumps [sphinxcontrib-spelling](https://github.com/sphinx-contrib/spelling) from 8.0.0 to 8.0.2. - [Release notes](https://github.com/sphinx-contrib/spelling/releases) - [Commits](https://github.com/sphinx-contrib/spelling/compare/8.0.0...8.0.2) --- updated-dependencies: - dependency-name: sphinxcontrib-spelling dependency-version: 8.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- doc/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/requirements.txt b/doc/requirements.txt index 26973d407..4662a7248 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -1,7 +1,7 @@ # sphinx version requirement for readthedocs. sphinx==9.1.0 sphinx-rtd-theme==3.1.0 -sphinxcontrib-spelling==8.0.0 +sphinxcontrib-spelling==8.0.2 certifi>=2023.7.22 # not directly required, pinned by Snyk to avoid a vulnerability jinja2>=3.1.3 # not directly required, pinned by Snyk to avoid a vulnerability pygments>=2.15.0 # not directly required, pinned by Snyk to avoid a vulnerability From 059a9bc60f920cfd1aa0287a33a649348ed85063 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 18 Feb 2026 22:44:42 +0000 Subject: [PATCH 02/29] Auto-bump version to 19.1.0rc1.dev10 [skip ci] --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 682c51e1e..7978032d3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -19.1.0rc1.dev9 +19.1.0rc1.dev10 From 4cd3afc1f85a9bf6ebc02a32cbecfd6c59c57eb8 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 18 Feb 2026 16:12:22 -0800 Subject: [PATCH 03/29] [CLIENT-4225] CI/CD: Remove unused delocate package from .github/workflows/requirements.txt (#965) delocate is already installed by cibuildwheel. The cibuildwheel API docs isn't clear about this, though. --- .github/workflows/requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/requirements.txt b/.github/workflows/requirements.txt index 3f19b658d..e28b6a927 100644 --- a/.github/workflows/requirements.txt +++ b/.github/workflows/requirements.txt @@ -1,4 +1,3 @@ parver==0.5 crudini==0.9.4 -delocate==0.10.4 mypy==1.17.1 From 73d7d0827d67eb353eab3f2261435ccce0945521 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 00:13:10 +0000 Subject: [PATCH 04/29] Auto-bump version to 19.1.0rc1.dev11 [skip ci] --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 7978032d3..130bc8a28 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -19.1.0rc1.dev10 +19.1.0rc1.dev11 From afad46802035436036f52e2eac24754d9d10f44b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Feb 2026 19:42:33 -0800 Subject: [PATCH 05/29] Bump actions/setup-python from 6.1.0 to 6.2.0 (#957) Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6.1.0 to 6.2.0. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/83679a892e2d95755f2dac6acb0bfd1e9ac5d548...a309ff8b426b58ec0e2a45f0f869d46889d02405) --- updated-dependencies: - dependency-name: actions/setup-python dependency-version: 6.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-wheels.yml | 2 +- .github/workflows/doc-tests.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/smoke-tests.yml | 16 ++++++++-------- .github/workflows/stage-tests.yml | 2 +- .github/workflows/test-server-rc.yml | 2 +- .github/workflows/valgrind.yml | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 7863e808a..9ea3c29c6 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -424,7 +424,7 @@ jobs: echo PYTHON_VERSION="${PYTHON_VERSION/3/3.}" >> $GITHUB_ENV shell: bash - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.PYTHON_VERSION }} allow-prereleases: true diff --git a/.github/workflows/doc-tests.yml b/.github/workflows/doc-tests.yml index fb407d505..058e228d6 100644 --- a/.github/workflows/doc-tests.yml +++ b/.github/workflows/doc-tests.yml @@ -44,7 +44,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: submodules: recursive - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: 3.12 architecture: 'x64' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 4c2893813..a63d93fe0 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -25,7 +25,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: submodules: recursive - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.LOWEST_SUPPORTED_PY_VERSION }} architecture: 'x64' diff --git a/.github/workflows/smoke-tests.yml b/.github/workflows/smoke-tests.yml index 0c180ba1f..821555692 100644 --- a/.github/workflows/smoke-tests.yml +++ b/.github/workflows/smoke-tests.yml @@ -64,7 +64,7 @@ jobs: submodules: recursive fetch-depth: 0 - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.py-version }} architecture: 'x64' @@ -108,7 +108,7 @@ jobs: submodules: recursive fetch-depth: 0 - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.LOWEST_SUPPORTED_PY_VERSION }} architecture: 'x64' @@ -227,7 +227,7 @@ jobs: with: submodules: recursive - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.LOWEST_SUPPORTED_PY_VERSION }} architecture: 'x64' @@ -264,7 +264,7 @@ jobs: with: submodules: recursive - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.LOWEST_SUPPORTED_PY_VERSION }} architecture: 'x64' @@ -333,7 +333,7 @@ jobs: with: submodules: recursive - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.py-version }} architecture: 'x64' @@ -385,7 +385,7 @@ jobs: with: submodules: recursive - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: "3.13" architecture: 'x64' @@ -435,7 +435,7 @@ jobs: egress-policy: audit - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.LOWEST_SUPPORTED_PY_VERSION }} architecture: 'x64' @@ -466,7 +466,7 @@ jobs: egress-policy: audit - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.LOWEST_SUPPORTED_PY_VERSION }} architecture: 'x64' diff --git a/.github/workflows/stage-tests.yml b/.github/workflows/stage-tests.yml index fa73f2a24..ccee84fda 100644 --- a/.github/workflows/stage-tests.yml +++ b/.github/workflows/stage-tests.yml @@ -224,7 +224,7 @@ jobs: JFROG_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} JFROG_REPO_NAME: ${{ vars.JFROG_REPO_NAME }} - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.python-version }} diff --git a/.github/workflows/test-server-rc.yml b/.github/workflows/test-server-rc.yml index 669008b1e..8f60d77d7 100644 --- a/.github/workflows/test-server-rc.yml +++ b/.github/workflows/test-server-rc.yml @@ -97,7 +97,7 @@ jobs: name: ${{ matrix.python[1] }}-macosx_x86_64.build path: ./ - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.python[0] }} diff --git a/.github/workflows/valgrind.yml b/.github/workflows/valgrind.yml index 27df55b2a..6662ca817 100644 --- a/.github/workflows/valgrind.yml +++ b/.github/workflows/valgrind.yml @@ -146,7 +146,7 @@ jobs: run: echo PYTHON_VERSION=$(echo ${{ env.PYTHON_TAG }} | sed -e "s/cp3/cp3./" -e "s/cp//") >> $GITHUB_ENV shell: bash - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: '${{ env.PYTHON_VERSION }}' architecture: 'x64' From f3da30323f5ee7bf440e2b3ecb7682cd9e980fd1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 03:43:19 +0000 Subject: [PATCH 06/29] Auto-bump version to 19.1.0rc1.dev12 [skip ci] --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 130bc8a28..133682716 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -19.1.0rc1.dev11 +19.1.0rc1.dev12 From 21df7311d62ab91694166291b4441bb158ecda31 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 10:24:54 -0800 Subject: [PATCH 07/29] Bump versioningit from 3.1.0 to 3.3.0 (#937) Bumps [versioningit](https://github.com/jwodder/versioningit) from 3.1.0 to 3.3.0. - [Release notes](https://github.com/jwodder/versioningit/releases) - [Changelog](https://github.com/jwodder/versioningit/blob/master/CHANGELOG.md) - [Commits](https://github.com/jwodder/versioningit/compare/v3.1.0...v3.3.0) --- updated-dependencies: - dependency-name: versioningit dependency-version: 3.3.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ce259d992..e003d578e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [build-system] requires = [ "setuptools", - "versioningit==3.1.0", + "versioningit==3.3.0", # Used by our versioningit script that modifies the version "parver==0.5" ] From cde0b2b3bba31300c33056faade0cdfe9b1e9fac Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 18:25:53 +0000 Subject: [PATCH 08/29] Auto-bump version to 19.1.0rc1.dev13 [skip ci] --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 133682716..753714940 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -19.1.0rc1.dev12 +19.1.0rc1.dev13 From 036fdbfb31089e86e4657f5c2edf227e75c7a410 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 13:45:16 -0800 Subject: [PATCH 09/29] Run test with procdump on self hosted runner --- .github/workflows/build-wheels.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 7863e808a..e7af9e698 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -437,10 +437,19 @@ jobs: working-directory: test shell: bash - - run: python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + - if: ${{ inputs.platform-tag == 'win_amd64' }} + run: | + wget https://download.sysinternals.com/files/Procdump.zip + unzip Procdump.zip + mkdir dumps + ./procdump.exe -e -x ./dumps python3 -m pytest new_tests working-directory: test shell: bash + # - run: python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + # working-directory: test + # shell: bash + - name: Show job status for commit if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} uses: myrotvorets/set-commit-status-action@3730c0a348a2ace3c110851bed53331bc6406e9f # v2.0.1 From 1fb4675be0551de528516ddf804614f39136148c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 14:06:50 -0800 Subject: [PATCH 10/29] Bump docker/build-push-action from 6.18.0 to 6.19.2 (#966) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.18.0 to 6.19.2. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/263435318d21b8e681c14492fe198d362a7d2c83...10e90e3645eae34f1e60eeb005ba3a3d33f178e8) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-version: 6.19.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/update-manylinux-openssl-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-manylinux-openssl-image.yml b/.github/workflows/update-manylinux-openssl-image.yml index c848b6c54..47ec90147 100644 --- a/.github/workflows/update-manylinux-openssl-image.yml +++ b/.github/workflows/update-manylinux-openssl-image.yml @@ -87,7 +87,7 @@ jobs: working-directory: cibuildwheel - name: Build and push - uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 + uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 with: # Don't want to use default Git context or else it will clone the whole Python client repo again context: ${{ github.workspace }}/aerospike-client-python/.github/workflows From 666f1f19ed169525a646e8c605e2d21120ffc09c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 22:07:41 +0000 Subject: [PATCH 11/29] Auto-bump version to 19.1.0rc1.dev14 [skip ci] --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 753714940..f81a6b085 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -19.1.0rc1.dev13 +19.1.0rc1.dev14 From 8f7f9ffec57b9e79001eb2eaa8261626ff176dc4 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 14:07:43 -0800 Subject: [PATCH 12/29] fix --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index e7af9e698..c47c1e0e5 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -439,7 +439,7 @@ jobs: - if: ${{ inputs.platform-tag == 'win_amd64' }} run: | - wget https://download.sysinternals.com/files/Procdump.zip + curl -O Procdump.zip https://download.sysinternals.com/files/Procdump.zip unzip Procdump.zip mkdir dumps ./procdump.exe -e -x ./dumps python3 -m pytest new_tests From f9460895eb2174a57b924c836291eb05633f8eb6 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 14:14:21 -0800 Subject: [PATCH 13/29] fix... --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index c47c1e0e5..faae939e7 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -439,7 +439,7 @@ jobs: - if: ${{ inputs.platform-tag == 'win_amd64' }} run: | - curl -O Procdump.zip https://download.sysinternals.com/files/Procdump.zip + curl -O https://download.sysinternals.com/files/Procdump.zip unzip Procdump.zip mkdir dumps ./procdump.exe -e -x ./dumps python3 -m pytest new_tests From 296303cc8b7555d9b2df92f3c62379c950c97e99 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 14:21:39 -0800 Subject: [PATCH 14/29] fix --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index faae939e7..1760c021b 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -442,7 +442,7 @@ jobs: curl -O https://download.sysinternals.com/files/Procdump.zip unzip Procdump.zip mkdir dumps - ./procdump.exe -e -x ./dumps python3 -m pytest new_tests + ./procdump.exe -accepteula -e -x ./dumps python3 -m pytest new_tests working-directory: test shell: bash From 12a54b5bccbd52e3261805735b4680e9b8b66170 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 14:55:47 -0800 Subject: [PATCH 15/29] Compile Python client with debug configuration --- .github/workflows/build-wheels.yml | 1 + setup.py | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 1760c021b..fdc7edec7 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -336,6 +336,7 @@ jobs: delocate-listdeps {dest_dir}/*.whl | grep libssl.3.dylib CIBW_TEST_COMMAND: ${{ env.TEST_COMMAND }} CIBW_DEBUG_KEEP_CONTAINER: 1 + VS_PROJECT_CONFIGURATION: debug # - name: Setup tmate session # if: ${{ !cancelled() }} diff --git a/setup.py b/setup.py index 4298d9e30..b709a7131 100644 --- a/setup.py +++ b/setup.py @@ -40,6 +40,7 @@ BASEPATH = os.path.dirname(os.path.abspath(__file__)) AEROSPIKE_C_HOME = os.path.join(BASEPATH, 'aerospike-client-c') +VS_PROJECT_CONFIGURATION = os.getenv("VS_PROJECT_CONFIGURATION", "Release") AEROSPIKE_C_TARGET = None PLATFORM = platform.platform(1) LINUX = 'Linux' in PLATFORM @@ -184,9 +185,9 @@ ] else: include_dirs.append(AEROSPIKE_C_TARGET + '/src/include') - library_dirs.append(f"{AEROSPIKE_C_TARGET}/vs/packages/aerospike-client-c-dependencies.{c_client_dependencies_version}/build/native/lib/x64/Release") + library_dirs.append(f"{AEROSPIKE_C_TARGET}/vs/packages/aerospike-client-c-dependencies.{c_client_dependencies_version}/build/native/lib/x64/{VS_PROJECT_CONFIGURATION}") # Needed for linking the Python client with the C client - extra_objects.append(AEROSPIKE_C_TARGET + "/vs/x64/Release/aerospike.lib") + extra_objects.append(AEROSPIKE_C_TARGET + f"/vs/x64/{VS_PROJECT_CONFIGURATION}/aerospike.lib") os.putenv('CPATH', ':'.join(include_dirs)) os.environ['CPATH'] = ':'.join(include_dirs) @@ -230,7 +231,7 @@ def clean(): cmd = [ 'msbuild', 'vs/aerospike.sln', - '/property:Configuration=Release' + f"/property:Configuration={VS_PROJECT_CONFIGURATION}" ] else: cmd = [ From 16c47267952460c156b4e1ab5c558944be8dd63c Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 15:01:41 -0800 Subject: [PATCH 16/29] A different static library is used for pthreadVC2 with debug config --- setup.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b709a7131..c529748b9 100644 --- a/setup.py +++ b/setup.py @@ -167,7 +167,10 @@ libraries = libraries + ['rt'] AEROSPIKE_C_TARGET = AEROSPIKE_C_HOME + '/target/Linux-' + machine elif WINDOWS: - libraries.append("pthreadVC2") + if VS_PROJECT_CONFIGURATION == "Release": + libraries.append("pthreadVC2") + else: + libraries.append("pthreadVC2d") extra_compile_args.append("-DAS_SHARED_IMPORT") include_dirs.append(f"{AEROSPIKE_C_TARGET}/vs/packages/aerospike-client-c-dependencies.{c_client_dependencies_version}/build/native/include") else: From 01419abe25eefa48cb48b4c975adef509ea42cd4 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 15:18:40 -0800 Subject: [PATCH 17/29] fix --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index fdc7edec7..c2606cfd4 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -328,7 +328,7 @@ jobs: auditwheel repair -w {dest_dir} {wheel} && auditwheel show {dest_dir}/* && rm -rf $WHEEL_DIR - CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Release -w {dest_dir} {wheel}" + CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Debug -w {dest_dir} {wheel}" # We also want to verify the same thing on macos CIBW_REPAIR_WHEEL_COMMAND_MACOS: > delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} && From 7c83b9c346b06eeab8c8c0008db7bbbc934b2718 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 15:38:44 -0800 Subject: [PATCH 18/29] Include symbols with repaired wheel --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index c2606cfd4..ab6741c5b 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -328,7 +328,7 @@ jobs: auditwheel repair -w {dest_dir} {wheel} && auditwheel show {dest_dir}/* && rm -rf $WHEEL_DIR - CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Debug -w {dest_dir} {wheel}" + CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Debug --include-symbols -w {dest_dir} {wheel}" # We also want to verify the same thing on macos CIBW_REPAIR_WHEEL_COMMAND_MACOS: > delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} && From 15c4acb60e168fb66a49c72cf3b6765632aff78b Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 16:09:40 -0800 Subject: [PATCH 19/29] pdb files do not get mangled in wheel along with the mangled DLL files. --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index ab6741c5b..57736cf75 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -328,7 +328,7 @@ jobs: auditwheel repair -w {dest_dir} {wheel} && auditwheel show {dest_dir}/* && rm -rf $WHEEL_DIR - CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Debug --include-symbols -w {dest_dir} {wheel}" + CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Debug --no-mangle-all --include-symbols -w {dest_dir} {wheel}" # We also want to verify the same thing on macos CIBW_REPAIR_WHEEL_COMMAND_MACOS: > delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} && From 59b9194db1bc2b1fba73edbd594527060e8598e0 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 20 Feb 2026 09:30:06 -0800 Subject: [PATCH 20/29] [CLIENT-4224] CI/CD: Switch from using lint.yml to pre-commit.ci to run hooks (#964) pre-commit.ci will auto-update the hook versions every week, which is not supported in dependabot yet. - Fix pre-commit.ci failing because it doesn't support Docker-based hooks yet. - Disable lint.yaml workflow, since this replaces it --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3529e4fe6..52c569624 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -33,8 +33,8 @@ repos: - id: doc8 args: ["doc/", "--extension", ".rst"] pass_filenames: false -- repo: https://github.com/koalaman/shellcheck-precommit - rev: v0.11.0 +- repo: https://github.com/shellcheck-py/shellcheck-py + rev: v0.11.0.1 hooks: - id: shellcheck # Running on all files causes this issue: From 9554604f3ae85649dfb0d3c7b7f9562efc77366c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 20 Feb 2026 17:31:00 +0000 Subject: [PATCH 21/29] Auto-bump version to 19.1.0rc1.dev15 [skip ci] --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index f81a6b085..6dc2f6498 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -19.1.0rc1.dev14 +19.1.0rc1.dev15 From b3a3aa495467969a0efcdeeba55681328cfc8fd4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 Feb 2026 09:31:35 -0800 Subject: [PATCH 22/29] Bump mypy from 1.17.1 to 1.19.1 in /.github/workflows (#968) * Bump mypy from 1.17.1 to 1.19.1 in /.github/workflows Bumps [mypy](https://github.com/python/mypy) from 1.17.1 to 1.19.1. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.17.1...v1.19.1) --- updated-dependencies: - dependency-name: mypy dependency-version: 1.19.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Address stubtest errors with new mypy version. These class constructors that shouldn't take in any arguments. - CI/CD: Ignore warning about disjoint_bases decorator, which isn't included natively until Python 3.15. It is added to typing_extensions package, but I don't want to include an extra dependency for the client just for type hints --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> --- .github/workflows/requirements.txt | 2 +- .github/workflows/smoke-tests.yml | 2 +- aerospike-stubs/aerospike.pyi | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/requirements.txt b/.github/workflows/requirements.txt index e28b6a927..752b55c81 100644 --- a/.github/workflows/requirements.txt +++ b/.github/workflows/requirements.txt @@ -1,3 +1,3 @@ parver==0.5 crudini==0.9.4 -mypy==1.17.1 +mypy==1.19.1 diff --git a/.github/workflows/smoke-tests.yml b/.github/workflows/smoke-tests.yml index 821555692..a5e950df1 100644 --- a/.github/workflows/smoke-tests.yml +++ b/.github/workflows/smoke-tests.yml @@ -242,7 +242,7 @@ jobs: - run: pip install mypy -c requirements.txt working-directory: .github/workflows - - run: stubtest aerospike --allowlist stubtest-allowlist + - run: stubtest aerospike --allowlist stubtest-allowlist --ignore-disjoint-bases test-full-suite: strategy: diff --git a/aerospike-stubs/aerospike.pyi b/aerospike-stubs/aerospike.pyi index 4e3a19611..d80dccfbd 100644 --- a/aerospike-stubs/aerospike.pyi +++ b/aerospike-stubs/aerospike.pyi @@ -327,11 +327,11 @@ EXP_LOOPVAR_INDEX: Literal[2] @final class CDTInfinite: - def __init__(self, *args, **kwargs) -> None: ... + def __init__(self) -> None: ... @final class CDTWildcard: - def __init__(self, *args, **kwargs) -> None: ... + def __init__(self) -> None: ... @final class Transaction: @@ -482,7 +482,7 @@ class Scan: @final class null: - def __init__(self, *args, **kwargs) -> None: ... + def __init__(self) -> None: ... def calc_digest(ns: str, set: str, key: Union[str, int, bytearray]) -> bytearray: ... def client(config: dict) -> Client: ... From 2d0bff6bb01c2d3ddc17c507c640f37f0f1c7576 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 20 Feb 2026 17:32:44 +0000 Subject: [PATCH 23/29] Auto-bump version to 19.1.0rc1.dev16 [skip ci] --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 6dc2f6498..8b4d9a71e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -19.1.0rc1.dev15 +19.1.0rc1.dev16 From ddd33289ba3e5ad87360b4580d9f87d1fa10130b Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 20 Feb 2026 09:36:31 -0800 Subject: [PATCH 24/29] Allow compiling Python client C code with debug information bundled with the wheel --- setup.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index c529748b9..ce5b9a2a9 100644 --- a/setup.py +++ b/setup.py @@ -120,8 +120,15 @@ extra_compile_args.append('-ftest-coverage') extra_link_args.append('-lgcov') +data_files = [] + if UNOPTIMIZED: - extra_compile_args.append('-O0') + if WINDOWS: + extra_compile_args.append('/Zi') + extra_link_args.append('/DEBUG') + data_files.append("*.pdb") + else: + extra_compile_args.append('-O0') ################################################################################ # STATIC SSL LINKING BUILD SETTINGS @@ -328,5 +335,6 @@ def clean(): cmdclass={ 'build': CClientBuild, 'clean': CClientClean - } + }, + data_files=data_files ) From c0505e84d6e543324e78d7b47a7470f25602c191 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 20 Feb 2026 09:58:19 -0800 Subject: [PATCH 25/29] upload .dmp file to github as an artifact. it can be analyzed anywhere --- .github/workflows/build-wheels.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 57736cf75..f89df242a 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -439,14 +439,22 @@ jobs: shell: bash - if: ${{ inputs.platform-tag == 'win_amd64' }} + id: run-tests run: | curl -O https://download.sysinternals.com/files/Procdump.zip unzip Procdump.zip mkdir dumps - ./procdump.exe -accepteula -e -x ./dumps python3 -m pytest new_tests + ./procdump.exe -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} working-directory: test shell: bash + - if: ${{ steps.run-tests.outcome == 'failed' }} + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 + with: + path: ./test/dumps/* + name: dump + if-no-files-found: error + # - run: python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # working-directory: test # shell: bash From dc98f260f4295dfe622f5a8df03b7f736b56540e Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 20 Feb 2026 10:11:27 -0800 Subject: [PATCH 26/29] fix... --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index f89df242a..f4075b173 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -448,7 +448,7 @@ jobs: working-directory: test shell: bash - - if: ${{ steps.run-tests.outcome == 'failed' }} + - if: ${{ steps.run-tests.outcome == 'failure' }} uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: path: ./test/dumps/* From d1ebbdedd63188ad898f7c8f49b7b57c62b974f0 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 20 Feb 2026 10:29:51 -0800 Subject: [PATCH 27/29] not sure what error code is returned from procdump --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index f4075b173..a6157cf27 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -448,7 +448,7 @@ jobs: working-directory: test shell: bash - - if: ${{ steps.run-tests.outcome == 'failure' }} + - if: ${{ failure() && steps.run-tests.outcome == 'failure' }} uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: path: ./test/dumps/* From eebff91546ac8340c19690a25e0839a29d39b9ba Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 20 Feb 2026 10:50:23 -0800 Subject: [PATCH 28/29] prevent jobs overriding each other's dump files --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 4a121e71d..9badfac7c 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -452,7 +452,7 @@ jobs: uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: path: ./test/dumps/* - name: dump + name: dump-${{ matrix.python-tag }} if-no-files-found: error # - run: python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} From a86198567e9679b7dd11d84a23ec2be901c4ba4d Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 20 Feb 2026 15:22:23 -0800 Subject: [PATCH 29/29] Run with debug logging --- test/new_tests/conftest.py | 2 +- test/new_tests/test_dynamic_config.py | 2 +- test/new_tests/test_log.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/new_tests/conftest.py b/test/new_tests/conftest.py index 514ff0f50..ef57dbbb6 100644 --- a/test/new_tests/conftest.py +++ b/test/new_tests/conftest.py @@ -239,7 +239,7 @@ def invalid_key(request): yield request.param -# aerospike.set_log_level(aerospike.LOG_LEVEL_DEBUG) +aerospike.set_log_level(aerospike.LOG_LEVEL_DEBUG) # aerospike.set_log_handler(None) def verify_record_ttl(client: aerospike.Client, key, expected_ttl: int): diff --git a/test/new_tests/test_dynamic_config.py b/test/new_tests/test_dynamic_config.py index 857ded21e..ec2bfdc12 100644 --- a/test/new_tests/test_dynamic_config.py +++ b/test/new_tests/test_dynamic_config.py @@ -42,7 +42,7 @@ def show_more_logs(self): # TODO: currently there is no way to restore the log handler and level before running this test # These are the defaults in the implementation - aerospike.set_log_level(aerospike.LOG_LEVEL_ERROR) + # aerospike.set_log_level(aerospike.LOG_LEVEL_ERROR) @pytest.fixture def cleanup_metrics_logs(self): diff --git a/test/new_tests/test_log.py b/test/new_tests/test_log.py index 0a222eef8..1ec737011 100644 --- a/test/new_tests/test_log.py +++ b/test/new_tests/test_log.py @@ -22,7 +22,7 @@ def teardown_class(cls): """ Set the class level logger to a no-op to ensure no problems later """ - aerospike.set_log_level(aerospike.LOG_LEVEL_ERROR) + aerospike.set_log_level(aerospike.LOG_LEVEL_DEBUG) aerospike.set_log_handler(None) def test_set_log_level_with_correct_argument(self):