Skip to content

Commit fbfaff7

Browse files
authored
Merge pull request #38 from da-woods/fix-unicode-modules
Fixed get_export_symbols for unicode filenames
2 parents 7423f07 + 0d00e6e commit fbfaff7

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

distutils/command/build_ext.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -690,13 +690,15 @@ def get_export_symbols(self, ext):
690690
provided, "PyInit_" + module_name. Only relevant on Windows, where
691691
the .pyd file (DLL) must export the module "PyInit_" function.
692692
"""
693-
suffix = '_' + ext.name.split('.')[-1]
693+
name = ext.name.split('.')[-1]
694694
try:
695695
# Unicode module name support as defined in PEP-489
696696
# https://www.python.org/dev/peps/pep-0489/#export-hook-name
697-
suffix.encode('ascii')
697+
name.encode('ascii')
698698
except UnicodeEncodeError:
699-
suffix = 'U' + suffix.encode('punycode').replace(b'-', b'_').decode('ascii')
699+
suffix = 'U_' + name.encode('punycode').replace(b'-', b'_').decode('ascii')
700+
else:
701+
suffix = "_" + name
700702

701703
initfunc_name = "PyInit" + suffix
702704
if initfunc_name not in ext.export_symbols:

distutils/tests/test_build_ext.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ def test_unicode_module_names(self):
316316
self.assertRegex(cmd.get_ext_filename(modules[0].name), r'foo(_d)?\..*')
317317
self.assertRegex(cmd.get_ext_filename(modules[1].name), r'föö(_d)?\..*')
318318
self.assertEqual(cmd.get_export_symbols(modules[0]), ['PyInit_foo'])
319-
self.assertEqual(cmd.get_export_symbols(modules[1]), ['PyInitU_f_gkaa'])
319+
self.assertEqual(cmd.get_export_symbols(modules[1]), ['PyInitU_f_1gaa'])
320320

321321
def test_compiler_option(self):
322322
# cmd.compiler is an option and

0 commit comments

Comments
 (0)