¿Dónde en la documentación de python permite que el operador `in` esté encadenado?

Recientemente descubrí que lo siguiente devuelve True :

 'a' in 'ab' in 'abc' 

Soy consciente del encadenamiento de comparación de python como a < b < c , pero no puedo ver nada en la documentación sobre si esto es legal.

¿Es esta una característica accidental en la implementación de CPython, o se especifica este comportamiento?

Este es un comportamiento completamente especificado, no una característica accidental. El encadenamiento de operadores se define en la sección Operadores de comparación :

Las comparaciones se pueden encadenar arbitrariamente, por ejemplo, x < y <= z es equivalente a x < y and y <= z , excepto que y se evalúa solo una vez (pero en ambos casos z no se evalúa en absoluto cuando se encuentra x < y ser falso).

in es uno de los operadores de comparación; de la misma sección:

 comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "<>" | "!=" | "is" ["not"] | ["not"] "in" 

No se hacen excepciones para combinaciones que pueden no tener mucho sentido.

La expresión específica que usaste como ejemplo se ejecuta así como 'a' in 'ab' and 'ab' in 'abc' , con el literal 'ab' solo ejecutándose (cargando) una vez.