Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/issue_template.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: New issue
about: Do not open github issues for general support requests
about: Do not open GitHub issues for general support requests
---

<!--
Expand Down
4 changes: 2 additions & 2 deletions CHANGES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Coming in build 311, as yet unreleased
Build 310, released 2025/03/16
------------------------------
* Fixed a regression where `win32com.client.DispatchWithEvents` and win32com.client.WithEvents` would throw a `TypeError` on the second call (#2491, @Avasam)
* Fixed regresion causing `win32com.shell.shell` to be missing a number of `IID`s. (#2487, @Avasam)
* Fixed regression causing `win32com.shell.shell` to be missing a number of `IID`s. (#2487, @Avasam)
* As part of the above, Windows 7 is now minimum supported.

Build 309, released 2025/03/09
Expand Down Expand Up @@ -356,7 +356,7 @@ Build 302, released 2021-10-11
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'.
* GitHub branch 'master' was renamed to 'main'.

Build 301, released 2021-05-30
------------------------------
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
This is a copy of Scintilla 4.4.6 used for Pythonwin.

Scintilla's home is https://www.scintilla.org/
Scintilla's home is <https://www.scintilla.org/>

Only the sources relevant to Scintilla under Pythonwin are
included (plus the Scintilla Licence.txt and README).
included (plus the Scintilla `License.txt` and `README`).
For the full set of Scintilla sources, including its documentation
and companion editor SciTE, see https://www.scintilla.org/ .
and companion editor SciTE, see <https://www.scintilla.org/>.

When updating the Scintilla source, also update the copyright year
in Pythonwin/pywin/framework/app.py and regenerate
Expand Down
2 changes: 1 addition & 1 deletion Pythonwin/Scintilla/lexers/LexBaan.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -906,7 +906,7 @@ void SCI_METHOD LexerBaan::Fold(Sci_PositionU startPos, Sci_Position length, int
// Section Foldings.
// One way of implementing Section Foldings, as there is no END markings of sections.
// first section ends on the previous line of next section.
// Re-written whole folding to accomodate this.
// Re-written whole folding to accommodate this.
if (options.baanFoldSections && atEOL) {
currLineStyle = mainOrSubSectionLine(lineCurrent, styler);
nextLineStyle = mainOrSubSectionLine(lineCurrent + 1, styler);
Expand Down
2 changes: 1 addition & 1 deletion Pythonwin/dllmain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ extern "C" __declspec(dllexport) int __stdcall DllMainwin32ui(HINSTANCE hInstanc
// insert into resource chain.
pDLL = new CDynLinkLibrary(extensionDLL);

#else // Frozen .EXE that embedds win32ui is initializing
#else // Frozen .EXE that embeds win32ui is initializing
TRACE("win32ui in frozen %s initializing.\n", path);
#endif
}
Expand Down
4 changes: 2 additions & 2 deletions Pythonwin/pywin/framework/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ def OnDropFiles(self, msg):
# except:
# # take copies of the exception values, else other (handled) exceptions may get
# # copied over by the other fns called.
# win32ui.SetStatusText('An exception occured in a windows command handler.')
# win32ui.SetStatusText('An exception occurred in a windows command handler.')
# t, v, tb = sys.exc_info()
# traceback.print_exception(t, v, tb.tb_next)
# try:
Expand All @@ -297,7 +297,7 @@ def OnDropFiles(self, msg):

# Command handlers.
def OnFileMRU(self, id, code):
"Called when a File 1-n message is recieved"
"Called when a File 1-n message is received"
fileName = win32ui.GetRecentFileList()[id - win32ui.ID_FILE_MRU_FILE1]
win32ui.GetApp().OpenDocumentFile(fileName)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Pythonwin IDLE directory

This directory contains IDLE extensions used by
Pythonwin. The files in this directory that also appear in the main IDLE
directory are intended be indentical to the latest available for IDLE.
directory are intended be identical to the latest available for IDLE.

If you use IDLE from the CVS sources, then the files should be
identical. If you have a Python version installed that is more recent
Expand Down
2 changes: 1 addition & 1 deletion Pythonwin/win32uimodule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -625,7 +625,7 @@ void DefaultExceptionHandler(int action, const TCHAR *context, const TCHAR *extr
PyObject *type, *value, *traceback;
PyErr_Fetch(&type, &value, &traceback);
if (!type) {
TRACE("DefaultExceptionHandler: no exception occured!\n");
TRACE("DefaultExceptionHandler: no exception occurred!\n");
return;
}
if (action == EHA_PRINT_ERROR) {
Expand Down
2 changes: 1 addition & 1 deletion Pythonwin/win32win.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -429,7 +429,7 @@ PyObject *PyCWnd::CreateControl(PyObject *self, PyObject *args)
&id, // @pyparm int|id||The child ID for the view
&obPersist, // @pyparm object|obPersist|None|Place holder for future support.
&bStorage, // @pyparm int|bStorage|FALSE|Not used.
&obLicKey)) // @pyparm string|licKey|None|The licence key for the control.
&obLicKey)) // @pyparm string|licKey|None|The license key for the control.
return NULL;

if (!PyWinObject_AsTCHAR(obClass, &szClass, FALSE))
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ python -m pip install --upgrade pywin32
There is a post-install script (see below) which should *not* be run inside virtual environments;
it should only be run in "global" installs.

For unreleased changes, you can download builds made by [github actions](https://github.com/mhammond/pywin32/actions/) -
For unreleased changes, you can download builds made by [GitHub actions](https://github.com/mhammond/pywin32/actions/) -
choose any "workflow" from the `main` branch and download its "artifacts"

### Installing globally
Expand Down Expand Up @@ -153,7 +153,7 @@ Since build 307 the release process is based on the artifacts created by Github
section for the next unreleased version. (ie, a new, empty "Coming in build XXX, as yet unreleased"
section)

* Push these changes to github, wait for the actions to complete, then
* Push these changes to GitHub, wait for the actions to complete, then
download the artifacts from that run.

* Upload `.whl` artifacts to pypi - we do this before pushing the tag because they might be
Expand All @@ -164,7 +164,7 @@ Since build 307 the release process is based on the artifacts created by Github
* Update setup.py with the new build number + ".1" (eg, 123.1), to ensure
future test builds aren't mistaken for the real release.

* Make sure everything is pushed to github, including the tag (ie,
* Make sure everything is pushed to GitHub, including the tag (ie,
`git push --tags`)

* Send mail to python-win32
Expand All @@ -186,12 +186,12 @@ the builds. Build 306 was the last released with this process.

* Commit setup.py (so the new build number is in the repo), create a new git tag

* Upload the .exe installers to github.
* Upload the .exe installers to GitHub.

* Update setup.py with the new build number + ".1" (eg, 123.1), to ensure
future test builds aren't mistaken for the real release.

* Make sure everything is pushed to github, including the tag (ie,
* Make sure everything is pushed to GitHub, including the tag (ie,
`git push --tags`)

* Send mail to python-win32
7 changes: 4 additions & 3 deletions SWIG/readme.txt → SWIG/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@ SWIG for Win32 Extensions Readme
This is a release of SWIG 1.1 with slight customizations for Windows.
This release of SWIG should be used only for building the various Win32
and COM extensions for Windows. For the official releases of SWIG and
more information about SWIG, please visit www.swig.org
more information about SWIG, please visit <www.swig.org>

To use this:
To use this
-----------

You need to set 2 environment variables for this to work.

SWIG_LIB: Required by SWIG, and must be set to point to the "swig_lib"
Expand All @@ -17,4 +18,4 @@ SWIG_EXE: Required by the Win32 extension makefiles, and should be the
fully qualified path to the .exe in this archive. Note that as this
environment variable is used by MSVC, you probably need to set this
variable globally (ie, either in autoexec.bat, or Control Panel->System-
>Environment.
>Environment).
6 changes: 3 additions & 3 deletions com/help/asp.d
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ you need some way to tell the server that the following is code. Since
python is not used by default, you need to set your page to use
it. You can do that by having the first line say: \<%@ LANGUAGE
=Python%\>. Then after that point, anything between '\<%' and '%\>'
delimeters will run as python code. Everything else will be treated as
delimeter will run as python code. Everything else will be treated as
HTML. It is important to note that a python loop ends in the python
block -- they don't extend past intervening html to the next block. For
me that normally isn't an issue, since I do not like mixing code and
html. Prefering a clean split of code and html, I generally
html. Preferring a clean split of code and html, I generally
generate webpages using templates all in python w/HTMLgen. Take a look
at: https://wiki.python.org/moin/WebBrowserProgramming and
https://wiki.python.org/moin/Asking%20for%20Help/How%20to%20run%20python%20from%20HTML
Expand Down Expand Up @@ -70,7 +70,7 @@ for i in query_database():

#notice no raw HTML at all. We instead use a template html file
#generated however you want (perhaps frontpage) that substitutes
#anything delimeted by {} for output from our python. In this case
#anything delimited by {} for output from our python. In this case
#text {mid} in the template is substituted for results.

import HTMLgen
Expand Down
2 changes: 1 addition & 1 deletion com/win32com/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ def __PackageSupportBuildPath__(package_path):
__gen_path__ = os.path.abspath(os.path.join(__path__[0], "gen_py"))
if not os.path.isdir(__gen_path__):
# We used to dynamically create a directory under win32com -
# but this sucks. If the dir doesn't already exist, we we
# but this sucks. If the dir doesn't already exist, we
# create a version specific directory under the user temp
# directory.
__gen_path__ = os.path.join(
Expand Down
2 changes: 1 addition & 1 deletion com/win32com/src/PythonCOM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -748,7 +748,7 @@ static PyObject *pythoncom_WrapObject(PyObject *self, PyObject *args)
// The gateway must exist (ie, we _must_ support PyGIXXX

// XXX - do we need an optional arg for "base object"?
// XXX - If we did, we would unwrap it like thus:
// XXX - If we did, we would unwrap it like this:
/****
IUnknown *pLook = (IUnknown *)(*ppv);
IInternalUnwrapPythonObject *pTemp;
Expand Down
2 changes: 1 addition & 1 deletion com/win32com/test/testExplorer.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

bVisibleEventFired = 0

# These are errors we might see when this is run in automation (eg, on github)
# These are errors we might see when this is run in automation (eg, on GitHub)
# Not sure exactly what -2125463506 is, but google shows it's a common error
# possibly related to how IE is configured WRT site permissions etc.
HRESULTS_IN_AUTOMATION = [-2125463506, winerror.MK_E_UNAVAILABLE]
Expand Down
4 changes: 2 additions & 2 deletions com/win32com/test/testall.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
# rather than the version installed - otherwise every .py change needs a full install to
# test!
# We can't patch win32comext as most of them have a .pyd in their root :(
# This clearly ins't ideal or perfect :)
# This clearly isn't ideal or perfect :)
win32com.__path__[0] = win32com_src_dir

import pythoncom
Expand Down Expand Up @@ -129,7 +129,7 @@ def testit(self):
testConversionErrors
""".split(),
# Level 2 tests - wants our demo COM objects registered.
# (these are strange; on github CI they get further than expected when
# (these are strange; on GitHub CI they get further than expected when
# our objects are not installed, so fail to quietly fail with "can't
# register" like they do locally. So really just a nod to CI)
"""
Expand Down
2 changes: 1 addition & 1 deletion com/win32comext/adsi/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
# helpers.

# Of specific note - most of the interfaces supported by ADSI
# derive from IDispatch - thus, you get the custome methods from the
# derive from IDispatch - thus, you get the custom methods from the
# interface, as well as via IDispatch.
import pythoncom

Expand Down
2 changes: 1 addition & 1 deletion com/win32comext/axscript/client/pyscript_rexec.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# As of Python 2.2, rexec is simply not available - thus, if you use this,
# a HTML page can do almost *anything* at all on your machine.

# You almost certainly do NOT want to use thus!
# You almost certainly do NOT want to use this!

import pythoncom
from win32com.axscript import axscript
Expand Down
4 changes: 2 additions & 2 deletions com/win32comext/directsound/src/directsound.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -353,8 +353,8 @@ PYWIN_MODULE_INIT_FUNC(directsound)
// in an IDirectSound::CreateSoundBuffer call. With this flag set, an application using DirectSound can continue to
// play its sticky focus buffers if the user switches to another application not using DirectSound. In this
// situation, the application's normal buffers are muted, but the sticky focus buffers are still audible. This is
// useful for nongame applications, such as movie playback (DirectShow), when the user wants to hear the soundtrack
// while typing in Microsoft Word or Microsoft Excel, for example. However, if the user switches to another
// useful for nongame applications, such as movie playback (DirectShow®), when the user wants to hear the soundtrack
// while typing in Microsoft Word or Microsoft® Excel, for example. However, if the user switches to another
// DirectSound application, all sound buffers, both normal and sticky focus, in the previous application are muted.
ADD_CONSTANT(DSBCAPS_STICKYFOCUS);
// @const directsound|DSBCAPS_GLOBALFOCUS|The buffer is a global sound buffer. With this flag set, an application
Expand Down
2 changes: 1 addition & 1 deletion com/win32comext/directsound/test/ds_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ def testEnumerate(self):
self.assertTrue(len(devices[0]) == 3)

def testCreate(self):
"""DirectSoundCreate()"""
"""DirectSoundCaptureCreate()"""
try:
d = ds.DirectSoundCaptureCreate(None, None)
except pythoncom.com_error as exc:
Expand Down
2 changes: 1 addition & 1 deletion com/win32comext/mapi/src/exchangeguids.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#define USES_IID_IExchangeFolderACLs

#ifndef BUILD_FREEZE
/* In a frozen environemt, these are likely to be picked
/* In a frozen environemnt, these are likely to be picked
up by the MAPI module */

#define USES_IID_IMsgStore
Expand Down
2 changes: 1 addition & 1 deletion com/win32comext/shell/demos/servers/column_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Using Shell Column Handlers for Detailed File Information,
# Raymond Chen, Microsoft Corporation, February 2000
#
# To demostrate:
# To demonstrate:
# * Execute this script to register the namespace.
# * Open Windows Explorer
# * Right-click an explorer column header - select "More"
Expand Down
2 changes: 1 addition & 1 deletion com/win32comext/shell/demos/servers/context_menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Adds a 'Hello from Python' menu entry to .py files. When clicked, a
# simple message box is displayed.
#
# To demostrate:
# To demonstrate:
# * Execute this script to register the context menu.
# * Open Windows Explorer, and browse to a directory with a .py file.
# * Right-Click on a .py file - locate and click on 'Hello from Python' on
Expand Down
2 changes: 1 addition & 1 deletion com/win32comext/shell/demos/servers/copy_hook.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# A sample shell copy hook.

# To demostrate:
# To demonstrate:
# * Execute this script to register the context menu.
# * Open Windows Explorer
# * Attempt to move or copy a directory.
Expand Down
2 changes: 1 addition & 1 deletion com/win32comext/shell/demos/servers/icon_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# ICO file. ICO files are found in the Python directory - generally there will
# be 3 icons found.
#
# To demostrate:
# To demonstrate:
# * Execute this script to register the context menu.
# * Open Windows Explorer, and browse to a directory with a .py file.
# * Note the pretty, random selection of icons!
Expand Down
2 changes: 1 addition & 1 deletion com/win32comext/shell/demos/servers/shell_view.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# A sample shell namespace view

# To demostrate:
# To demonstrate:
# * Execute this script to register the namespace.
# * Open Windows Explorer, and locate the new "Python Path Shell Browser"
# folder off "My Computer"
Expand Down
2 changes: 1 addition & 1 deletion isapi/src/Utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ char *HTMLErrorResp(const char *msg)
{
const char *htmlBody =
"<html><head><title>Python ISAPI Error</title></head>"
"<body><h2>An Error occured while processing your request</h2>"
"<body><h2>An Error occurred while processing your request</h2>"
"<font color=\"Red\"> %s </font></body></html>";
// should not need the "+1" as the "%s" will be consumed, but...
int newLen = strlen(htmlBody) + strlen(msg) + 1;
Expand Down
8 changes: 4 additions & 4 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ def __init__(
("DISTUTILS_BUILD", None),
("_CRT_SECURE_NO_WARNINGS", None),
# CRYPT_DECRYPT_MESSAGE_PARA.dwflags is in an ifdef for some unknown reason
# See github PR #1444 for more details...
# See GitHub PR #1444 for more details...
("CRYPT_DECRYPT_MESSAGE_PARA_HAS_EXTRA_FIELDS", None),
# Minimum Windows version supported (Windows 7)
# https://learn.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt
Expand Down Expand Up @@ -1897,9 +1897,9 @@ def expand_modules(module_dir: str | os.PathLike[str]):


# NOTE: somewhat counter-intuitively, a result list a-la:
# [('Lib/site-packages\\pythonwin', ('pythonwin/license.txt',)),]
# will 'do the right thing' in terms of installing licence.txt into
# 'Lib/site-packages/pythonwin/licence.txt'. We exploit this to
# [('Lib/site-packages\\pythonwin', ('pythonwin/License.txt',)),]
# will 'do the right thing' in terms of installing License.txt into
# 'Lib/site-packages/pythonwin/License.txt'. We exploit this to
# get 'com/win32com/whatever' installed to 'win32com/whatever'
def convert_data_files(files: Iterable[str]):
ret: list[tuple[str, tuple[str]]] = []
Expand Down
2 changes: 1 addition & 1 deletion win32/Lib/win32timezone.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
Copyright © 2003-2012.
All Rights Reserved.

This module is licenced for use in Mark Hammond's pywin32
This module is licensed for use in Mark Hammond's pywin32
library under the same terms as the pywin32 library.

To use this time zone module with the datetime module, simply pass
Expand Down
4 changes: 2 additions & 2 deletions win32/help/security_directories.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<TR>
<TD valign=middle width="100%"
bgcolor="#99ccff"> <font face="sans-serif" size="+1"
color="#111111">&nbsp;&nbsp;&nbsp;Extending Python (directory permisisions w/GetNamedSecurityInfo) </font>
color="#111111">&nbsp;&nbsp;&nbsp;Extending Python (directory permissions w/GetNamedSecurityInfo) </font>
</TD>
</TR>
</TABLE>
Expand Down Expand Up @@ -542,7 +542,7 @@ <H1><A NAME="Further Info">Further Info</A></H1>
<TR>
<TD valign=middle
bgcolor="#99ccff"> <font face="sans-serif" size="+1"
color="#111111">&nbsp;&nbsp;&nbsp;Extending Python (directory permisisions w/GetNamedSecurityInfo) </font>
color="#111111">&nbsp;&nbsp;&nbsp;Extending Python (directory permissions w/GetNamedSecurityInfo) </font>
</TD>
</TR>
</TABLE>
Expand Down
4 changes: 2 additions & 2 deletions win32/src/win32event.i
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@

#define EVENT_ALL_ACCESS EVENT_ALL_ACCESS // Specifies all possible access flags for the event object.

#define EVENT_MODIFY_STATE EVENT_MODIFY_STATE // Enables use of the event handle in the SetEvent and ResetEventfunctions to modify the events state.
#define EVENT_MODIFY_STATE EVENT_MODIFY_STATE // Enables use of the event handle in the SetEvent and ResetEvent functions to modify the event's state.

#define SYNCHRONIZE SYNCHRONIZE // Windows NT only:Enables use of the event handle in any of the wait functionsto wait for the events state to be signaled.
#define SYNCHRONIZE SYNCHRONIZE // Windows NT only: Enables use of the event handle in any of the wait functions to wait for the event's state to be signaled.
Comment on lines -87 to +89
Copy link
Collaborator Author

@Avasam Avasam Mar 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I couldn't figure out what the other were supposed to be here. Probably special spaces.


// @pyswig |CancelWaitableTimer|Cancels a waiting timer.
BOOLAPI CancelWaitableTimer(PyHANDLE handle);
Expand Down
Loading