Skip to content

Commit ade9a05

Browse files
committed
Merge branch 'main' of https://github.com/microsoft/mssql-python into jahnvi/final_linting
2 parents 83b011e + da875a7 commit ade9a05

File tree

9 files changed

+112
-177
lines changed

9 files changed

+112
-177
lines changed

OneBranchPipelines/build-release-package-pipeline.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ parameters:
9595
arch: 'x64'
9696
- pyVer: '313'
9797
arch: 'x64'
98-
# - pyVer: '314' # Life of π: Unfolding in v1.0.0
99-
# arch: 'x64'
98+
- pyVer: '314'
99+
arch: 'x64'
100100
# ARM64 builds (4 versions: 3.11-3.14)
101101
# 3.10 excluded due to limited ARM64 support
102102
- pyVer: '311'
@@ -105,8 +105,8 @@ parameters:
105105
arch: 'arm64'
106106
- pyVer: '313'
107107
arch: 'arm64'
108-
# - pyVer: '314' # Life of π: Unfolding in v1.0.0
109-
# arch: 'arm64'
108+
- pyVer: '314'
109+
arch: 'arm64'
110110

111111
# macOS Configuration Matrix
112112
# Each entry creates separate stage: MacOS_py<pyVer>
@@ -120,7 +120,7 @@ parameters:
120120
- pyVer: '311'
121121
- pyVer: '312'
122122
- pyVer: '313'
123-
# - pyVer: '314' # Life of π: Unfolding in v1.0.0
123+
- pyVer: '314'
124124

125125
# Linux Configuration Matrix
126126
# Each entry creates ONE stage that builds ALL Python versions (3.10-3.14)
@@ -440,17 +440,17 @@ extends:
440440
- Win_py311_x64
441441
- Win_py312_x64
442442
- Win_py313_x64
443-
# - Win_py314_x64 # Life of π: Unfolding in v1.0.0
443+
- Win_py314_x64
444444
- Win_py311_arm64
445445
- Win_py312_arm64
446446
- Win_py313_arm64
447-
# - Win_py314_arm64 # Life of π: Unfolding in v1.0.0
447+
- Win_py314_arm64
448448
# macOS dependencies (5 stages)
449449
- MacOS_py310
450450
- MacOS_py311
451451
- MacOS_py312
452452
- MacOS_py313
453-
# - MacOS_py314 # Life of π: Unfolding in v1.0.0
453+
- MacOS_py314
454454
# Linux dependencies (4 stages)
455455
- Linux_manylinux_x86_64
456456
- Linux_manylinux_aarch64

OneBranchPipelines/dummy-release-pipeline.yml

Lines changed: 9 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# ⚠️ THIS IS A TEST PIPELINE - NOT FOR PRODUCTION RELEASES ⚠️
33
# Downloads wheel and symbol artifacts from build pipeline, publishes symbols, and performs dummy ESRP release for testing
44
# Uses Maven ContentType instead of PyPI to avoid accidental production releases
5-
# This pipeline is ALWAYS Official - no NonOfficial option
5+
# This pipeline is ALWAYS NonOfficial - for testing only, not production
66

77
name: $(Year:YY)$(DayOfYear)$(Rev:.r)-Dummy-Release
88

@@ -12,15 +12,10 @@ pr: none
1212

1313
# Parameters for DUMMY release pipeline
1414
parameters:
15-
- name: packageVersion
16-
displayName: '[TEST] Package Version (e.g., 0.13.0)'
17-
type: string
18-
default: '0.13.0'
19-
2015
- name: publishSymbols
2116
displayName: '[TEST] Publish Symbols to Symbol Servers'
2217
type: boolean
23-
default: true
18+
default: false
2419

2520
- name: performDummyRelease
2621
displayName: '[TEST] Perform Dummy ESRP Release (Maven - NOT PyPI)'
@@ -29,14 +24,6 @@ parameters:
2924

3025
# Variables
3126
variables:
32-
- name: PACKAGE_VERSION
33-
value: '${{ parameters.packageVersion }}'
34-
readonly: true
35-
36-
- name: packageVersion
37-
value: '${{ parameters.packageVersion }}'
38-
readonly: true
39-
4027
# Common variables
4128
- template: /OneBranchPipelines/variables/common-variables.yml@self
4229
- template: /OneBranchPipelines/variables/onebranch-variables.yml@self
@@ -59,10 +46,10 @@ resources:
5946
source: 'Build-Release-Package-Pipeline' # Name of the build pipeline
6047
trigger: none # Manual trigger only
6148

62-
# Extend OneBranch official template
63-
# Always uses Official template for release pipeline
49+
# Extend OneBranch Nonofficial template
50+
# Always uses NonOfficial template for dummy pipeline
6451
extends:
65-
template: 'v2/OneBranch.Official.CrossPlat.yml@templates'
52+
template: 'v2/OneBranch.NonOfficial.CrossPlat.yml@templates'
6653

6754
parameters:
6855
# Feature flags
@@ -96,11 +83,6 @@ extends:
9683
# Publish SDL logs
9784
publishLogs:
9885
enabled: true
99-
100-
# TSA - Always enabled for Official release pipeline
101-
tsa:
102-
enabled: true
103-
configFile: '$(REPO_ROOT)/.config/tsaoptions.json'
10486

10587
# Pipeline stages
10688
stages:
@@ -271,11 +253,10 @@ extends:
271253
inputs:
272254
targetType: 'inline'
273255
script: |
274-
Write-Host "====================================="
256+
Write-Host "===================================="
275257
Write-Host "⚠️ TEST PIPELINE - DUMMY RELEASE COMPLETED ⚠️"
276-
Write-Host "====================================="
258+
Write-Host "===================================="
277259
Write-Host "Package: mssql-python (TEST)"
278-
Write-Host "Version: ${{ parameters.packageVersion }}"
279260
Write-Host "ContentType: Maven (NOT PyPI - Safe for Testing)"
280261
Write-Host "Owners: $(owner)"
281262
Write-Host "Approvers: $(approver)"
@@ -306,11 +287,10 @@ extends:
306287
inputs:
307288
targetType: 'inline'
308289
script: |
309-
Write-Host "====================================="
290+
Write-Host "===================================="
310291
Write-Host "⚠️ TEST PIPELINE - DRY RUN MODE ⚠️"
311-
Write-Host "====================================="
292+
Write-Host "===================================="
312293
Write-Host "Package: mssql-python (TEST)"
313-
Write-Host "Version: ${{ parameters.packageVersion }}"
314294
Write-Host ""
315295
Write-Host "Actions performed:"
316296
Write-Host "✓ Downloaded wheels from build pipeline"

OneBranchPipelines/official-release-pipeline.yml

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,6 @@ pr: none
1010

1111
# Parameters for release pipeline
1212
parameters:
13-
- name: packageVersion
14-
displayName: 'Package Version (e.g., 0.13.0)'
15-
type: string
16-
default: '0.13.0'
17-
1813
- name: publishSymbols
1914
displayName: 'Publish Symbols to Symbol Servers'
2015
type: boolean
@@ -27,14 +22,6 @@ parameters:
2722

2823
# Variables
2924
variables:
30-
- name: PACKAGE_VERSION
31-
value: '${{ parameters.packageVersion }}'
32-
readonly: true
33-
34-
- name: packageVersion
35-
value: '${{ parameters.packageVersion }}'
36-
readonly: true
37-
3825
# Common variables
3926
- template: /OneBranchPipelines/variables/common-variables.yml@self
4027
- template: /OneBranchPipelines/variables/onebranch-variables.yml@self
@@ -266,11 +253,10 @@ extends:
266253
inputs:
267254
targetType: 'inline'
268255
script: |
269-
Write-Host "====================================="
256+
Write-Host "===================================="
270257
Write-Host "ESRP Release Completed"
271-
Write-Host "====================================="
258+
Write-Host "===================================="
272259
Write-Host "Package: mssql-python"
273-
Write-Host "Version: ${{ parameters.packageVersion }}"
274260
Write-Host "Target: PyPI"
275261
Write-Host "Owners: $(owner)"
276262
Write-Host "Approvers: $(approver)"
@@ -290,11 +276,10 @@ extends:
290276
inputs:
291277
targetType: 'inline'
292278
script: |
293-
Write-Host "====================================="
279+
Write-Host "===================================="
294280
Write-Host "DRY RUN MODE - No Release Performed"
295-
Write-Host "====================================="
281+
Write-Host "===================================="
296282
Write-Host "Package: mssql-python"
297-
Write-Host "Version: ${{ parameters.packageVersion }}"
298283
Write-Host ""
299284
Write-Host "Actions performed:"
300285
Write-Host "- Downloaded wheels from build pipeline"

OneBranchPipelines/stages/build-linux-single-stage.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ stages:
182182
docker exec build-$(LINUX_TAG)-$(ARCH) $SHELL_EXE -lc 'mkdir -p /workspace/dist'
183183
184184
# Loop through all Python versions: build wheel -> test wheel -> repeat
185-
for PYBIN in cp310 cp311 cp312 cp313; do # cp314: Life of π: Unfolding in v1.0.0
185+
for PYBIN in cp310 cp311 cp312 cp313 cp314; do
186186
echo ""
187187
echo "====================================================="
188188
echo "Building and testing $PYBIN on $(LINUX_TAG)/$(ARCH)"

PyPI_Description.md

Lines changed: 28 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,51 @@
1-
# mssql-python
2-
3-
mssql-python is a new first-party SQL Server driver for Python that has all of the benefits of a fresh start while preserving a familiar experience for developers.
4-
1+
# General Availability Release
2+
3+
mssqlpython is now Generally Available (GA) as Microsoft’s official Python driver for SQL Server, Azure SQL, and SQL databases in Fabric. This release delivers a production‑ready, high‑performance, and developer‑friendly experience.
4+
55
## What makes mssql-python different?
6-
6+
77
### Powered by DDBC – Direct Database Connectivity
8-
8+
99
Most Python SQL Server drivers, including pyodbc, route calls through the Driver Manager, which has slightly different implementations across Windows, macOS, and Linux. This results in inconsistent behavior and capabilities across platforms. Additionally, the Driver Manager must be installed separately, creating friction for both new developers and when deploying applications to servers.
10-
11-
At the heart of the driver is DDBC (Direct Database Connectivity) — a lightweight, high-performance C++ layer that replaces the platform’s Driver Manager.
12-
10+
11+
At the heart of the mssql-python driver is DDBC (Direct Database Connectivity) — a lightweight, high-performance C++ layer that replaces the platform’s Driver Manager.
12+
1313
Key Advantages:
14-
14+
1515
- Provides a consistent, cross-platform backend that handles connections, statements, and memory directly.
1616
- Interfaces directly with the native SQL Server drivers.
1717
- Integrates with the same TDS core library that powers the ODBC driver.
18-
18+
1919
### Why is this architecture important?
20-
20+
2121
By simplifying the architecture, DDBC delivers:
22-
22+
2323
- Consistency across platforms
2424
- Lower function call overhead
2525
- Zero external dependencies on Windows (`pip install mssql-python` is all you need)
2626
- Full control over connections, memory, and statement handling
27-
27+
2828
### Built with PyBind11 + Modern C++ for Performance and Safety
29-
30-
To expose the DDBC engine to Python, mssql-python uses PyBind11 – a modern C++ binding library, instead of ctypes. With ctypes, every call between Python and the ODBC driver involved costly type conversions, manual pointer management, resulting in slow and potentially unsafe code.
29+
30+
To expose the DDBC engine to Python, mssql-python uses PyBind11 – a modern C++ binding library.
3131

3232
PyBind11 provides:
33-
33+
3434
- Native-speed execution with automatic type conversions
3535
- Memory-safe bindings
3636
- Clean and Pythonic API, while performance-critical logic remains in robust, maintainable C++.
37-
38-
## Public Preview Release
39-
40-
We are currently in **Public Preview**.
41-
42-
## What's new in v0.14.0
43-
37+
38+
## What's new in v1.0.0
39+
4440
### New Features
45-
- **50-60% Faster Fetching:** Major optimizations including direct UTF-16 decoding, Python C API usage, and cached converters deliver dramatic performance gains for large result sets (100K+ rows), with **1.4-1.7× improvement** for very large datasets.
46-
- **Connection String Validation:** Intelligent parser with allowlist validation, synonym normalization, and clear error messages for malformed strings. **Breaking change:** Unknown parameters now raise errors instead of being silently ignored.
47-
- **Enhanced DECIMAL Precision:** Increased precision support from 15 to 38 digits (SQL Server maximum) with proper binary representation for high-precision calculations.
48-
- **Comprehensive Logging:** Unified Python-C++ logging framework with `setup_logging()` API for detailed diagnostics with zero overhead when disabled.
49-
- **Connection Attribute Control:** New `Connection.set_attr()` method for fine-grained control over ODBC connection attributes, isolation levels, and timeouts (pyodbc-compatible API).
50-
- **XML Data Type:** Comprehensive support for SQL Server `XML` type, including efficient streaming for large documents.
51-
- **DECIMAL Scientific Notation:** Improved handling of decimal values in scientific notation to prevent SQL Server conversion errors.
52-
53-
### Bug Fixes
54-
- **Access Token Management:** Fixed Microsoft Entra ID authentication token handling to eliminate corruption in concurrent scenarios.
55-
- **Decimal executemany Fix:** Resolved type inference issues when batch inserting Decimal values.
56-
57-
⚠️ **Breaking Change:** Connection string validation now raises `ConnectionStringParseError` for unknown/misspelled parameters. Review connection strings before upgrading.
58-
41+
42+
- *Python 3.14 support* - ensuring compatibility with the latest Python ecosystem.
43+
- *GA stability* - hardened release engineering, expanded test coverage, and compliance checks for enterprise readiness.
44+
5945
For more information, please visit the project link on Github: https://github.com/microsoft/mssql-python
60-
46+
6147
If you have any feedback, questions or need support please mail us at mssql-python@microsoft.com.
62-
48+
6349
## What's Next
64-
65-
As we continue to develop and refine the driver, you can expect regular updates that will introduce new features, optimizations, and bug fixes. We encourage you to contribute, provide feedback and report any issues you encounter, as this will help us improve the driver ahead of General Availability.
50+
51+
As we continue to refine the driver and add new features, you can expect regular updates, optimizations, and bug fixes. We encourage you to contribute, provide feedback and report any issues you encounter, as this will help us improve the driver.

0 commit comments

Comments
 (0)