More on SF bug [#460020] bug or feature: unicode() and subclasses.
Repaired str(i) to return a genuine string when i is an instance of a str
subclass.  New PyString_CheckExact() macro.
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 4c28500..9c873ec 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -2711,7 +2711,7 @@
 	tmp = string_new(&PyString_Type, args, kwds);
 	if (tmp == NULL)
 		return NULL;
-	assert(PyString_Check(tmp));
+	assert(PyString_CheckExact(tmp));
 	new = type->tp_alloc(type, n = PyString_GET_SIZE(tmp));
 	if (new != NULL)
 		memcpy(PyString_AS_STRING(new), PyString_AS_STRING(tmp), n+1);