From 2fc7858125f6b88cd57768e72d1ccccde1731c07 Mon Sep 17 00:00:00 2001
From: Giovanni Bussi <giovanni.bussi@gmail.com>
Date: Mon, 22 Jul 2019 15:52:57 +0200
Subject: [PATCH] Set language_level

Set cython language_level to the level of the used interpreter.
Should be ok as plumed.pyx is portable.

Also allows forcing pypi source code to be distributed with
language_level=2, which seems to be required for backward
portabilty.
---
 python/Makefile |  2 +-
 python/setup.py | 12 +++++++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/python/Makefile b/python/Makefile
index 5cd7f978d..9649addc6 100644
--- a/python/Makefile
+++ b/python/Makefile
@@ -41,7 +41,7 @@ pypi:
 	mkdir -p pypi
 	cp -r test pypi/
 	cp ../src/wrapper/Plumed.h README.rst MANIFEST.in cplumed.pxd plumed.pyx setup.py ../VERSION pypi/
-	cd pypi ; $(python_bin) setup.py sdist
+	cd pypi ; plumed_language_level=2 $(python_bin) setup.py sdist
 	echo "now use: $(python_bin) -m twine upload dist/plumed-$(VERSION).tar.gz"
 
 clean:
diff --git a/python/setup.py b/python/setup.py
index 45a824491..8ff2032e5 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -37,6 +37,15 @@ from distutils.version import LooseVersion
 def is_platform_mac():
     return sys.platform == 'darwin'
 
+language_level=os.getenv("plumed_language_level")
+if language_level is None:
+  if (sys.version_info > (3, 0)):
+      language_level=3
+  else:
+      language_level=2
+else:
+  language_level=int(language_level)
+
 if os.getenv("plumed_macports") is not None:
     copyfile("../VERSION","VERSION")
     copyfile("../src/wrapper/Plumed.h","Plumed.h")
@@ -119,7 +128,8 @@ ext_modules=[Extension(
   )]
 
 if USE_CYTHON:
-    ext_modules=cythonize(ext_modules)
+    print('using language level',language_level)
+    ext_modules=cythonize(ext_modules,language_level=language_level)
 
 setup(
   name=plumedname,
-- 
GitLab