You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I asked Cursor for a proposal for how to smoke test packages before publishing (in the context of #1745) and this was the suggested approach. Not testing at all, just repeating what the AI suggested :)
Package Testing Strategy
This document summarizes how to test packaging changes to prevent issues like the v0.39 bug.
The v0.39 Bug
What happened: PR #1739 changed pyproject.toml to use where = ["tableauserverclient"] instead of where = ["."]. This caused the package to be built incorrectly with files at server/server.py instead of tableauserverclient/server/server.py, making the module unimportable.
Why it wasn't caught: The change worked fine with editable installs (pip install -e .) but broke regular wheel installations (pip install tableauserverclient).
Quick Local Test
Run this script before any packaging changes:
./test-package.sh
This script:
Builds the wheel
Inspects the wheel structure
Tests installation in a clean virtual environment
Verifies imports and basic functionality
Automated Testing
New CI Workflow
The .github/workflows/test-package-install.yml workflow now runs on:
PRs that modify pyproject.toml, setup.py, or MANIFEST.in
PRs that modify package source code
Manual trigger via workflow_dispatch
It tests wheel installation on Linux, macOS, and Windows.
Existing Workflows
publish-pypi.yml: Already publishes to TestPyPI before real PyPI (good!)
pypi-smoke-tests.yml: Tests installation from PyPI daily (catches issues after release)
Activity
bcantoni commentedon Feb 4, 2026
I asked Cursor for a proposal for how to smoke test packages before publishing (in the context of #1745) and this was the suggested approach. Not testing at all, just repeating what the AI suggested :)
Package Testing Strategy
This document summarizes how to test packaging changes to prevent issues like the v0.39 bug.
The v0.39 Bug
What happened: PR #1739 changed
pyproject.tomlto usewhere = ["tableauserverclient"]instead ofwhere = ["."]. This caused the package to be built incorrectly with files atserver/server.pyinstead oftableauserverclient/server/server.py, making the module unimportable.Why it wasn't caught: The change worked fine with editable installs (
pip install -e .) but broke regular wheel installations (pip install tableauserverclient).Quick Local Test
Run this script before any packaging changes:
This script:
Automated Testing
New CI Workflow
The
.github/workflows/test-package-install.ymlworkflow now runs on:pyproject.toml,setup.py, orMANIFEST.inIt tests wheel installation on Linux, macOS, and Windows.
Existing Workflows
Testing Checklist
Before merging packaging changes:
./test-package.shlocallyunzip -l dist/*.whl | grep tableauserverclientKey Differences: Editable vs Wheel Install
pip install -e .)pip install pkg.whl)Always test with wheel installs before releasing!
Resources
docs/testing-package-builds.md./test-package.sh.github/workflows/test-package-install.ymlQuick Reference