Uh oh!
There was an error while loading. Please reload this page.
RELEASE: mssql-python-odbc 18.6.2.1 - correct license metadata + PyPI description - #701
Conversation
… description Metadata-only re-release of the standalone mssql-python-odbc package (identical driver binaries as 18.6.2): - License: MIT -> Other/Proprietary License (setup.py license field + trove classifier). The wheel redistributes Microsoft's proprietary ODBC Driver 18 and VC++ runtime, so the MIT label was incorrect. The build script's own source stays MIT. - PyPI long_description: replaced the plain one-liner with a rendered Markdown description (project role, do-not-install-directly guidance, docs link, and a License information section linking both redistributed Microsoft license texts, azure-cognitiveservices-speech style). - Added committed canonical mssql_python_odbc/licenses/ dir (byte-exact copies of the ODBC driver and Visual Studio license texts) so the description links resolve and license_files embeds deterministically, independent of the build-time libs/ tree. - Version 18.6.2 -> 18.6.2.1 (packaging revision 1; literal 'v1' and +local are not PyPI-publishable, so a fourth numeric component is used). - Relaxed mssql_python/pybind/CMakeLists.txt version parser to accept a trailing packaging-revision component; only leading MAJOR.MINOR is used for the driver filename (validated with CMake: 18.6.2.1 -> MAJOR=18, MAJOR_MINOR=18.6).
There was a problem hiding this comment.
Pull request overview
This PR performs a metadata-only re-release of the standalone mssql-python-odbc package to correct PyPI licensing metadata and provide a proper Markdown-rendered PyPI description, while also relaxing the native build’s version parsing to accept a packaging-revision component (e.g., 18.6.2.1).
Changes:
- Update
setup_odbc.pyPyPI metadata: Markdownlong_description, proprietary license metadata, and embed license texts vialicense_files. - Add committed canonical Microsoft license text files under
mssql_python_odbc/licenses/. - Relax the CMake version parser to accept versions with trailing packaging-revision / PEP 440 suffixes.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| setup_odbc.py | Updates PyPI metadata (long description, license metadata, license_files). |
| mssql_python/pybind/CMakeLists.txt | Allows parsing versions with trailing revision/suffix while still deriving driver filename from MAJOR / MAJOR.MINOR. |
| mssql_python_odbc/init.py | Bumps __version__ to 18.6.2.1 and documents the revision semantics. |
| mssql_python_odbc/licenses/MICROSOFT_VISUAL_STUDIO_LICENSE.txt | Adds canonical redistributed license text for the VC++ runtime. |
| mssql_python_odbc/licenses/MICROSOFT_ODBC_DRIVER_FOR_SQL_SERVER_LICENSE.txt | Adds canonical redistributed license text for ODBC Driver 18. |
Uh oh!
There was an error while loading. Please reload this page.
The long_description claimed the license texts ship 'next to the binaries it covers', but they are embedded via license_files into the wheel metadata under .dist-info/licenses/ (package_data only globs libs/**). Reworded to point users at the actual, guaranteed location.
📊 Code Coverage Report
Diff CoverageDiff: main...HEAD, staged and unstaged changesNo lines with coverage information in this diff. 📋 Files Needing Attention📉 Files with overall lowest coverage (click to expand)mssql_python.pybind.logger_bridge.cpp: 59.2%
mssql_python.pybind.ddbc_bindings.h: 59.9%
mssql_python.pybind.logger_bridge.hpp: 70.8%
mssql_python.pybind.ddbc_bindings.cpp: 76.2%
mssql_python.__init__.py: 77.6%
mssql_python.row.py: 77.6%
mssql_python.ddbc_bindings.py: 79.6%
mssql_python.pybind.connection.connection_pool.cpp: 81.4%
mssql_python.pybind.connection.connection.cpp: 83.7%
mssql_python.logging.py: 85.5%🔗 Quick Links
|
Gaurav Sharma (bewithgaurav)
left a comment
There was a problem hiding this comment.
approving with a minor suggestion
Uh oh!
There was an error while loading. Please reload this page.
…BC.md Per review feedback, maintain the long_description as a standalone Markdown file (mirrors the main mssql-python package's PyPI_Description.md) instead of an inline string in setup_odbc.py. setup_odbc.py now reads it via PROJECT_ROOT / 'PyPI_Description_ODBC.md'. Content unchanged; root-level file (distinct name to avoid clashing with the main package's PyPI_Description.md), not bundled into the wheel.
Uh oh!
There was an error while loading. Please reload this page.
Work Item / Issue Reference
Summary
Metadata-only re-release of the standalone mssql-python-odbc package (identical driver binaries as the already-published 18.6.2) that corrects the package license and ships a proper PyPI description.
What changed
licensefield and trove classifier insetup_odbc.py. The wheel redistributes Microsoft's proprietary ODBC Driver 18 for SQL Server (and the VC++ runtime it links against), so the previousMITlabel was incorrect. The build script's own source stays MIT.long_description— replaced the plain one-line description with a rendered Markdown description: project role, "do not install directly" guidance, docs link, and a License information section linking both redistributed Microsoft license texts (same style asazure-cognitiveservices-speech).long_description_content_typeswitched totext/markdown.mssql_python_odbc/licenses/dir — byte-exact copies of the ODBC Driver and Visual Studio license texts. The description links andlicense_filesnow point here, so the links resolve on PyPI/GitHub and the wheel embeds the license texts deterministically — independent of the build-time-populatedlibs/tree (empty onmain).v1suffix is not a valid PEP 440 version and+localversions are rejected by PyPI's upload API, so the revision is expressed as a fourth numeric component. Ordering holds:18.6.2 < 18.6.2.1 < 18.6.3.mssql_python/pybind/CMakeLists.txtversion parser — now accepts a trailing packaging-revision component / PEP 440 suffix. Only the leading MAJOR and MAJOR.MINOR are used to derive the driver filename, so the extra component has no effect on which driver is loaded.Ordering
This lands before the Phase 2 wheel-slimming PR (#693). After this release publishes
18.6.2.1to PyPI, a small follow-up bumpsmssql-python's pinned dependency from==18.6.2to==18.6.2.1so installs pull the correctly-licensed wheel.Validation
black --check --line-length=100 setup_odbc.py— passes.18.6.2.1exercised with the real regex engine →MAJOR=18,MAJOR_MINOR=18.6, noFATAL_ERROR.