[bumpversion]
-current_version = 67.3.2
+current_version = 67.3.3
commit = True
tag = True
+v67.3.3
+-------
+
+
+Misc
+^^^^
+* #3820: Restore quoted ``#include`` argument to ``has_function``.
+
+
v67.3.2
-------
Changes
^^^^^^^
-* #3809: Merge with distutils@8c3c3d29, including fix for ``sysconfig.get_python_inc()`` (pypa/distutils#178), fix for segfault on MinGW (pypa/distutils#196), and better ``has_function`` support (pypa/distutils#195).
+* #3809: Merge with distutils@8c3c3d29, including fix for ``sysconfig.get_python_inc()`` (pypa/distutils#178), fix for segfault on MinGW (pypa/distutils#196), and better ``has_function`` support (pypa/distutils#195, #3648).
v67.1.0
whose names coincidentally match installed packages
may take precedence in :doc:`Python's import system <python:reference/import>`.
Users are encouraged to avoid such scenarios [#cwd]_.
+- Setuptools will try to give the right precedence to modules in an editable install.
+ However this is not always an easy task. If you have a particular order in
+ ``sys.path`` or some specific import precedence that needs to be respected,
+ the editable installation as supported by Setuptools might not be able to
+ fulfil this requirement, and therefore it might not be the right tool for your use case.
.. attention::
Editable installs are **not a perfect replacement for regular installs**
objects are just a design abstraction that encapsulate logic and help to
organise the code.
-You can overwrite exiting commands (or add new ones) by defining entry
+You can overwrite existing commands (or add new ones) by defining entry
points in the ``distutils.commands`` group. For example, if you wanted to add
a ``foo`` command, you might add something like this to your project:
[metadata]
name = setuptools
-version = 67.3.2
+version = 67.3.3
author = Python Packaging Authority
author_email = distutils-sig@python.org
description = Easily download, build, install, upgrade, and uninstall Python packages
f = os.fdopen(fd, "w")
try:
for incl in includes:
- f.write("""#include %s\n""" % incl)
+ f.write("""#include "%s"\n""" % incl)
if not includes:
# Use "char func(void);" as the prototype to follow
# what autoconf does. This prototype does not match
assert compiler.has_function('exit')
with pytest.deprecated_call(match='includes is deprecated'):
# abort() is a valid expression with the <stdlib.h> prototype.
- assert compiler.has_function('abort', includes=['<stdlib.h>'])
+ assert compiler.has_function('abort', includes=['stdlib.h'])
with pytest.deprecated_call(match='includes is deprecated'):
# But exit() is not valid with the actual prototype in scope.
- assert not compiler.has_function('exit', includes=['<stdlib.h>'])
+ assert not compiler.has_function('exit', includes=['stdlib.h'])
# And setuptools_does_not_exist is not declared or defined at all.
assert not compiler.has_function('setuptools_does_not_exist')
with pytest.deprecated_call(match='includes is deprecated'):
assert not compiler.has_function(
- 'setuptools_does_not_exist', includes=['<stdio.h>']
+ 'setuptools_does_not_exist', includes=['stdio.h']
)