[python-win32] [ANN] pywin32 build 305 released

Mark Hammond mhammond at skippinet.com.au
Sun Nov 6 02:52:22 EST 2022


Hi all,
   I'm happy to announce the release of pywin32 build 305.

This release has quite a few changes under the hood, updating our use of 
older deprecated Python functions etc - so there's some risk of 
unintended consequences.

Another unintended change is that .exe installers are deprecated, 
because the upstream support for building them is deprecated. Anyone 
still using them should start moving to pip:

   python -m pip install --upgrade pywin32

But while .exe files exist:

   https://github.com/mhammond/pywin32/releases/tag/b305

For initial support (eg, to ask questions about the release etc), please 
contact this mailing-list (python-win32 at python.org).  If you want to 
report a bug, please do so at https://github.com/mhammond/pywin32/issues

As always, thanks to everyone who contributed to this release, both in 
terms of code and reporting bugs.

Cheers,

Mark.

Changes:

* Installation .exe files were deprecated.

* @kxrob put a lot of work towards removing use of the deprecated
   Unicode API so we can build on Python 3.12. This should be largely
   invisible, but please report any unintended consequences.

* odbc: Handle `varchar(max)`/`nvarchar(max)` column sizes (#1954)

* win32api.GetTickCount() now returns an unsigned 64bit integer (@kxrob,
   #1946)

* win32pipe.GetNamedPipeHandleState() now takes a 3rd optional param
   indicating whether the username should be returned, and related
   constants added. (@kxrob, #1946)

* Added win32gui.GetTopWindow() and win32gui.GetAncestor() (@CristiFati,
   #1928)

* Tweaks to how pywintypes searches for DLLs to better support
   virtualenvs created with --system-site-packages. (@saaketp, #1933)

* Added win32event.CreateWaitableTimerExW (#1945, @zariiii9003)

* Changes in PARAM handling. Some functions which returned a WPARAM or
   LPARAM allowed you to return a pointer to a Python buffer object or a
   PyUnicode. These functions now only accept a Python long to be
   returned. Note that this DOES NOT apply to functions with accept
   WPARAM or LPARAM as arguments, only when they are being returned.
   Impacted functions are `OnNotify` handler, LV_ITEM/TV_ITEM objects,
   PyIContextMenu3::HandleMenuMsg2, and the result of a WNDPROC/DLGPROC
   (#1927).

* service registration had an overhaul, avoiding a complicated, and
   ultimately unnecessary "single globally registered service runner"
   concept. Now, when registering a service, the host pythonservice.exe
   runner will be copied to `sys.exec_prefix`, along with possibly
   `pywintypesXX.dll` and run from there. (#1908)

* Dropped support for allowing a bytes object to be passed where a COM
   BSTR is expected - this support was accidental on the path from
   2.x->3.x.

* win32crypt's PyCERTSTORE.CertCloseStore()'s `Flags` argument has been
   deprecated as it is likely to crash the process if
   `CERT_CLOSE_STORE_FORCE_FLAG` is specified. The underlying function is
   now always called with `CERT_CLOSE_STORE_CHECK_FLAG`, and support for
   this param will be dropped at some point in the future.

* Fix a bug where win32crypt.CryptQueryObject() would return a
   PyCTL_CONTEXT object instead of a PyCERT_CONTEXT for base64 encoded
   certificates (#1859)

* win32crypt.CryptQueryObject() is now able to return PyCTL_CONTEXT
   objects. This is technically a breaking change as previously it would
   return the address in memory of the object, but this address wasn't
   practically usable, so it's very unlikely anyone relied on this
   behavior. (#1859)


More information about the python-win32 mailing list