-
Notifications
You must be signed in to change notification settings - Fork 803
/
CHANGES.txt
406 lines (340 loc) · 20.7 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
Notable changes in recent builds.
Maintained by hand, so what's "notable" is subjective! Contributors are
encouraged to add entries for their work.
All changes can be found via git - eg, for all changes after a build:
git log -rb3xx:
or
https://github.com/mhammond/pywin32/compare/b3xx...main
As of build 305, installation .exe files have been deprecated; see
https://mhammond.github.io/pywin32_installers.html.
Coming in build 309, as yet unreleased
--------------------------------------
Build 308, released 2024-10-12
------------------------------
* Fix Pythonwin displaying syntax errors in Python 3.13 (#2393)
* Allowed installs from source w/o having pywin32 pre-installed (for instance, from GitHub) (#2349, @Avasam)
* Restored version stamping of installed DLLs (#2349, @Avasam)
* Fixed a circular import between `win32comext.axscript.client.framework` and `win32comext.axscript.client.error` (#2381, @Avasam)
* Remove long-deprecated `win32com.server.dispatcher.DispatcherWin32dbg` (#2382, @Avasam)
Build 307, released 2024-10-04
------------------------------
### Release process changes
pywin32 is now released from artifacts created by Github actions, whereas previously they were
created from an environment where certain tools and libraries were located and installed
by hand.
This means some capabilities are no longer provided - this includes some documentation artifacts, such
as the .chm file, certain MAPI libraries etc, and .exe installers.
### pywin32
* Remove obsolete and unused `pywin.is_platform_unicode` (#2343, @Avasam)
* Fix `isapi.ThreadPoolExtension`'s printing of exception traceback broken on Python 3.8+ (#2312, @Avasam)
* Add RealGetWindowClass (#2299, @CristiFati)
* Make it compile on Python 3.13 (#2260, @clin1234)
* Fixed accidentally trying to raise a `str` instead of an `Exception` in (#2270, @Avasam)
* `Pythonwin/pywin/debugger/debugger.py`
* `Pythonwin/pywin/framework/dlgappcore.py`
* `com/win32com/server/policy.py`
* `win32/Lib/regutil.py`
* `win32/scripts/VersionStamp/vssutil.py`
* Removed the following unused symbols. They were meant to be used as Exceptions, but were accidentally strings (#2270, #2269, @Avasam)
* `pywin.debugger.debugger.error`
* `pywin.framework.dlgappcore.error`
* `win32com.server.policy.error`
* `regutil.error`
* `win32.scripts.VersionStamp.vssutil.error`
* `win32com.universal.com_error`
* `win32com.client.build.error`
* `win32com.client.genpy.error`
* Add EnumDesktopWindows (#2219, @CristiFati)
* Marked `exc_type` and `exc_traceback` in `win32comext.axscript.client.error.AXScriptException.__init__` as deprecated. (#2236 , @Avasam)
They are now unused and all information is taken from the `exc_value` parameter.
* Fixed non-overriden `pywin.scintilla.formatter.Formatter.ColorizeString` raising `TypeError` instead of `RuntimeError` due to too many parameters (#2216, @Avasam)
* Fixed broken since Python 3 tokenization in `win32comext.axdebug.codecontainer.pySourceCodeContainer.GetSyntaxColorAttributes` (#2216, @Avasam)
* Fixed a `TypeError` due to incorrect kwargs in `win32comext.axscript.client.pydumper.Register` (#2216, @Avasam)
* Fixed error reporting of file copy failure for for installing debug dlls (#2216, @Avasam)
* Fixed `py.exe -m win32verstamp` command and other quote typos caused by Implied String Concatenation (#2225, @Avasam)
* Fixed tons of quote-related typos in strings, docs and comments (#2271 , @Avasam)
* Fixed VT_SAFEARRAY(VT_RECORD) which were missing the last element (#2247)
* Fixed `MFC redist DLLs not found` by preferring corresponding version but accepting different version (#2248, @andreabravetti)
* Fixed `pywintypes.error: (5, 'RegOpenKeyEx', 'Access is denied.')` when running service with debug parameter and no elevation (#2238, @jmartens)
* Fixed handling of `SyntaxError` exception from a Windows Scripting Host Python Script on Python 3.10+ (#2235, @nbbeatty)
* Add `CredGetSessionTypes` support (#2232, @CristiFati)
* Fixed `win32clipboard` increasing size of data when `SetClipboardData` used with `CF_DIB` (#2184, @CristiFati)
* Add `StoreLogoff` to `PyIMsgStore` to prevent possible hang when MAPI uninitializes or during session logoff (#2196, @avivbrg)
* Enhance CredDelete to work with dictionaries (#2198, @CristiFati)
* Add UnregisterHotKey support (#2185, @CristiFati)
* IFolderView COM client support (#2180, #2181, #2182, @CristiFati)
* Release GIL when calling CreateService or StartService (#2062, @adamkbmc)
* Drop support for Internet Explorer 10 (#2229, @Avasam)
* Removed considerations for never-built Windows CE (#2218, @Avasam)
* Stopped building `winxpgui` (#2217, @Avasam)
* Raise `DeprecationWarning` when importing `winxpgui`
* Added `GetWindowRgnBox` to `win32gui`
* `winxpgui.GetConsoleWindow` now aliases `win32console.GetConsoleWindow`
* Everything else is re-exported from `win32gui`
* Fixed the `win32com.demos.ietoolbar` demo (#2217, @Avasam)
* Fixed undefined names reported by Flake8/Ruff (#2101, @Avasam, @kxrob)
Fixed the following public API:
* Fixed `NameError` in `pywin.Demos`'s `fontdemo.FontView.SetFont`
* The `Pythonwin/pywin/Demos/ocx/msoffice` demo now uses the docName argument
* Fixed `NameError` in `WordFrame.Create`, even though it wasn't used
* Fixed a handful of `NameError` in `pywin.dialogs.ideoptions.OptionsPropPage` with format
* Fixed `AttributeError` in `pywin.framework.dlgappcore.AppDialog.OnPaint`
* Fixed trying to write banner to `sdterr` in `pywin.framework.interact.InteractiveCore.Init`
* Fixed a `NameError` in `pywin.framework.mdi_pychecker.TheDocument.doSearch`
* Removes unusable `HandleToUlong`, `UlongToHandle`, `UlongToPtr` and `UintToPtr` from `pywin.scintilla.scintillacon`
* Fixed a `NameError` in `win32comext.axscript.client.pydumper.Register`
* Fixed a `NameError` in `win32comext.shell.demos.servers.context_menu.ShellExtension.QueryContextMenu`
* Fixed a `NameError` in `win32comext.shell.demos.servers.shell_view.ScintillaShellView.CreateViewWindow`
The following methods no longer throw errors (although their implementation is still unvalidated):
* `mmsystem.MEVT_EVENTTYPE`
* `mmsystem.MEVT_EVENTPARM`
* `mmsystem.MCI_MSF_MINUTE`
* `mmsystem.MCI_MSF_SECOND`
* `mmsystem.MCI_TMSF_TRACK`
* `mmsystem.MCI_TMSF_MINUTE`
* `mmsystem.MCI_TMSF_SECOND`
* `mmsystem.MCI_TMSF_FRAME`
* `mmsystem.MCI_HMS_HOUR`
* `mmsystem.MCI_HMS_MINUTE`
* `mmsystem.MCI_HMS_SECOND`
* `mmsystem.DIBINDEX`
* `winnt.IMAGE_SNAP_BY_ORDINAL`
* `winnt.IMAGE_ORDINAL`
* Removed `Unicode` and `UnicodeType` from `pywintypes` and `win32api` (#2200, @Avasam)
* Deprecate `afxres` in favor of `pywin.mfc.afxres`. The modules were identical (#2177, @Avasam)
* Improved `DispatcherWin32dbg`'s deprecation warning and raise an error when used (#2145, @Avasam)
* Removed obsolete/legacy way of registering a Pythonwin app and its Idle handlers from `pywin.framework.app` (#2144, @Avasam)
* Removed unused `win32comext.axscript.server.error` (#2202, @Avasam)
* Removed deprecated `win32com.server.exception.Exception` (#2142, @Avasam)
* Removed long-deprecated `UnicodeToString` param from multiple methods (#2143, @Avasam)
* Fixed `win32api.SetClassWord` being overwritten by `win32api.SetWindowWord` (#2199, @Avasam)
* If you were using `win32api.SetClassWord` for its current behaviour, use `win32api.SetWindowWord` instead.
* This also adds missing support for `win32api.SetWindowWord`
* Annotated module-level variables with ambiguous typing (#2175, @Avasam)
* `win32com.client.build.NoTranslateMap` is now a `set` (#2176, @Avasam)
* Fixed `ModuleNotFoundError: No module named 'dialog'` in `pywin.tools.regpy` (#2187, @Avasam)
* Fixed passing a `float` to `range` in `win32pdhquery.Query.collectdatafor` (#2170, @Avasam)
* Check that the filename w/o extension ends with `_d` rather than checking for `_d` anywhere in the file path (#2169, @Avasam)
* Cleaned up and fixed Axdebug (#2126, @Avasam)
* `win32comext.axdebug.codecontainer.SourceCodeContainer` now uses the `debugDocument` parameter
* `win32comext.axdebug.codecontainer` script can now be run independent of location
* Fixed Method Resolution Order issue in `win32comext.axdebug.documents` (also #2071, @wxinix-2022)
* Fixed undefined names (`NameError`) in `win32comext.axdebug.expressions.DebugProperty.GetPropertyInfo`
* Removed unused `win32comext.axdebug.util.all_wrapped`
* Fixed multiple `ModuleNotFoundError` in `win32comext.axdebug` (#1983, @Avasam)
* Change `mbcs` encoding to `utf-8` in `com.win32com.client` (#2097, @Avasam)
* Avoid using `importlib` directly (#2123, @Avasam)
* Replace most usages of deprecated `distutils`:
* Replace distutils.dep_util with setuptools.modified (#2148, @Avasam)
* Replaced `distutils.FileList` usage with `pathlib` (#2138, @Avasam)
* Replace `distutils.log` with `logging` (#2134, @Avasam)
* Replace `distutils` with direct `setuptools` equivalents where possible (#2134, @Avasam)
* Replaced usages of the removed (in Python 3.12) `imp` module (#2113, @Avasam)
* Fixed registering Python as a scripting language for `axscript`
* Fixed `isapi` install
* Use collection literals and comprehensions where applicable (slight performance improvement) (#2108, @Avasam)
* Cleanup obsolete code for unsupported Python versions (#1990, #2127, #2205, #2214, @Avasam)
The following public names have been removed:
* `pywin.framework.app.Win32RawInput`
* `win32com.client.makepy.error`
* Long obsoleted `dbi` module, use the `odbc` module instead
* `win32com.client.dynamic.MakeMethod`
Added support for the following Python 3 methods:
* `pywin.mfc.dialog.Dialog.__contains__`
* `win32com.client.CoClassBaseClass.__bool__`
* `win32com.client.combrowse.HLIRoot.__lt__`
* `win32com.client.genpy.WritableItem.__lt__`
* `__bool__` in classes generated by `win32com.client.genpy.WritableItem.WriteClassBody`
* `win32/Demos`'s `win32clipboardDemo.Foo.__lt__`
* `win32timezone._SimpleStruct.__le__` (subclassed by `SYSTEMTIME`, `TIME_ZONE_INFORMATION`, `DYNAMIC_TIME_ZONE_INFORMATION`, `TimeZoneDefinition`)
The following methods no longer throw errors (although their implementation is still unvalidated):
* `winnt.PRIMARYLANGID`
* `winnt.SUBLANGID`
* `winnt.LANGIDFROMLCID`
* `winnt.SORTIDFROMLCID`
* Removed obsolete compatibility aliases (#2087, @Avasam)
The following public names have been removed:
* `win32comext.mapi.mapiutil.TupleType`
* `win32comext.mapi.mapiutil.ListType`
* `win32comext.mapi.mapiutil.IntType`
* `netbios.byte_to_int`
* Resolved invalid string escapes warnings (#2045, #2124, @Avasam)
* Idiomatic type comparisons. Better handling of subclasses. (#1991, @Avasam)
* Cleaned up obsolete and redundant code (this should not directly affect the end-user):
* Update and standardise obsolete `OSError` aliases (#2107, @Avasam)
* Removed redundant and obsolete references to older python unicode compatibility (#2085, @Avasam)
* Use byte-string (`b""`) for constant bytes values instead of superfluous `.encode` calls (#2046, @Avasam)
* Cleaned up unused imports (#1986, #2051, #1990, #2124, #2126, @Avasam)
* Removed duplicated declarations, constants and definitions (#2050 , #1950, #1990, @Avasam)
* Small generalized optimization by using augmented assignements (in-place operators) where possible (#2274, @Avasam)
* General speed and size improvements due to all the removed code. (#2046, #1986, #2050, #1950, #2085, #2087, #2051, #1990, #2106, #2127, #2124, #2126, #2177, #2218, #2202, #2205, #2217)
### adodbapi
* Remove references to outdated IronPython (#2049, @Avasam)
This removes the following public names:
* `adodbapi.adodbapi.onWin32`
* `adodbapi.apibase.onIronPython`
* `adodbapi.apibase.NullTypes`
* `adodbapi.apibase.DateTime`
* Remove references to outdated `mxDateTime` (#2048, @Avasam)
This removes the following public names:
* `adodbapi.apibase.mxDateTime`
* `adodbapi.apibase.mxDateTimeConverter`
* Removed obsolete Python 2 aliases (#2088, @Avasam)
This removes the following public names:
* `adodbapi.adodbapi.unicodeType`
* `adodbapi.adodbapi.longType`
* `adodbapi.adodbapi.StringTypes`
* `adodbapi.adodbapi.maxint`
* `adodbapi.apibase.unicodeType`
* `adodbapi.apibase.longType`
* `adodbapi.apibase.StringTypes`
* `adodbapi.apibase.makeByteBuffer`
* `adodbapi.apibase.memoryViewType`
* Remove outdated and unused remote feature (#2098, @Avasam)
* Migrated from `distutils` to `setuptools` (#2133, @Avasam)
Build 306, released 2023-03-26
------------------------------
* Add GetSystemPowerStatus (#2010, @CristiFati)
* Add CascadeWindows (#1999, @CristiFati)
* Add win32gui.ResetDC
* Fix leak in win32pdh.GetFormattedCounterArray
* Fix IIS on later python versions (#2025)
* Fix for service registration code updated in build 305 (#1985)
* Support for Python 3.6 was dropped, support for later versions was improved.
Build 305, released 2022-11-06
------------------------------
* 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)
* Add win32gui.GetTopWindow() and win32gui.GetAncestor() (#1928, @CristiFati)
* 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 Python 2 -> 3.
* 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)
Build 304, released 2022-05-02
------------------------------
* Fixed Unicode issues in the `dde` module (#1861, @markuskimius )
* Add `PRINTER_INFO_6` support for Set/GetPrinter (#1853, @CristiFati)
* Fixed codepage/mojibake issues when non-ascii characters were included in
COM exceptions raised by Python apps. This should be invisible, but might
break any workarounds which were used, such as using specific encodings in
these strings. (#1823, #1833)
* Fixed a bug triggering `win32print.SetJob` to fail due to data type
(`char*` / `wchar_t*`) mismatch (#1849, @CristiFati)
* Fix eventlog initialization (#1845, #1846, @kxrob)
Build 303, released 2021-12-20
------------------------------
* Tweaks to how DLLs are loaded and our installation found, which should
improve virtualenv support and version mismatch issues (#1787, #1794)
* Fixed a bug where `win32clipboard.GetClipboardData()` may have returned extra
data.
* Binary installers for 32-bit 3.10+ are no longer released (#1805)
Build 302, released 2021-10-11
------------------------------
* Fixed support for unicode as a `win32crypt.CREDENTIAL_ATTRIBUTE.Value`
* Support for Python 3.10, dropped support for Python 3.5 (3.5 security support
ended 13 Sep 2020)
* Merged win2kras into win32ras. In the unlikely case that anyone is still
using win2kras, there is a win2kras.py that imports all of win32ras. If you
import win2kras and it fails with 'you must import win32ras first', then it
means an old win2kras.pyd exists, which you should remove.
* github branch 'master' was renamed to 'main'.
Build 301, released 2021-05-30
------------------------------
* Fix some confusion on how dynamic COM object properties work. The old
code was confused, so there's a chance there will be some subtle
regression here - please open a bug if you find anything, but this
should fix #1427.
* COM objects are now registered with the full path to pythoncomXX.dll, fixes
#1704.
* Creating a `win32crypt.CRYPT_ATTRIBUTE` object now correctly sets `cbData`.
* Add wrap and unwrap operations defined in the GSSAPI to the sspi module
and enhance the examples given in this module.
(#1692, Emmanuel Coirier)
* Fix a bug in `win32profile.GetEnvironmentStrings()` relating to environment
variables with an equals sign (@maxim-krikun in #1661)
* Fixed a bug where certain COM dates would fail to be converted to a Python
datetime object with `ValueError: microsecond must be in 0..999999`. Shoutout
to @hujiaxing for reporting and helping reproduce the issue (#1655)
* Added win32com.shell.SHGetKnownFolderPath() and related constants.
* CoClass objects should work better with special methods like __len__ etc.
(#1699)
* Shifted work in win32.lib.pywin32_bootstrap to Python's import system from
manual path manipulations (@wkschwartz in #1651)
* Fixed a bug where win32print.DeviceCapabilities would return strings
containing the null character followed by junk characters.
(#1654, #1660, Lincoln Puzey)
Build 300, released 2020-11-14
------------------------------
* Fixed a bug where win32com.client.VARIANT params were returned in the reverse
order. This only happened when win32com.client.VARIANT was explicitly used
(ie, not when normal params were passed) For example:
```python
arg1 = VARIANT(pythoncom.VT_R4 | pythoncom.VT_BYREF, 2.0)
arg2 = VARIANT(pythoncom.VT_BOOL | pythoncom.VT_BYREF, True)
object.SomeFunction(arg1, arg2)
```
after this call, `arg1.value` was actually the value for `arg2`, and
vice-versa (#1303, #622).
* Fixed a bug that Pythonwin had an empty `sys.argv` (@kxrob in #1607)
* Fixed a bug that prevented win32process.ReadProcessMemory() from working
in all scenarios (#1599)
* Changed how Services implemented with win32serviceutil.ServiceFramework
report that they have stopped. Now if the SvcRun() method (or the SvcDoRun()
method, which is called by SvcRun() by default) raises on Exception,
the Service will report a final SERVICE_STOPPED status with a non-zero error
code. This will cause the Service's recovery actions to be triggered if the
Service has the "Enable actions for stops with errors" option enabled.
(#1563, Lincoln Puzey)
* adodbapi connect() method now accepts a "mode" keyword argument which is the
"Mode" property to set on the ADO "Connection" object before opening the
Connection. See "ConnectModeEnum" for valid values.
(Lincoln Puzey)
* The Windows 10 SDK is now used to build the project. This shouldn't cause any
visible changes, but should make it much easier to build the project yourself.
Python 2 is no longer supported - so long, Python 2, you served us well!
Notable changes in this transition:
* Python 3 builds used to erroneously turn "bytes" into a tuple of integers
instead of a buffer type object. Because this special-casing is important for
performance when using massive buffers, this has been fixed in Python 3 so
it matches the old Python 2 behavior. If you use arrays of VT_UI1 and expect
get back tuples of integers, your code may break.
* Pythonwin's default encoding is now utf-8 (#1559)
* The build environment has been greatly simplified - you just need Visual
Studio and a Windows 10 SDK. (The free compilers probably work too, but
haven't been tested - let me know your experiences!)
Previous
--------
Build 228 (2020-06-13) was the last to support Python 2.0.
Older entries are periodically removed - see the git history of this file
for them.