¿Por qué Django usa tuplas para configuraciones y no para listas?

Citando esta respuesta :

Además de que las tuplas son inmutables, también hay una distinción semántica que debe guiar su uso. Las tuplas son estructuras de datos heterogéneas (es decir, sus entradas tienen diferentes significados), mientras que las listas son secuencias homogéneas. Las tuplas tienen estructura, las listas tienen orden.

Esto tiene sentido para mí. Pero, ¿por qué Django usa tuplas y no listas para configuraciones? Ejemplo:

INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', ) 

¿No es este (y todos los demás ajustes) un caso perfecto semánticamente para una lista?

Según el útil enlace del usuario1474837 al ticket de Django en esta pregunta, parece claro que las tuplas se usan para la compatibilidad hacia atrás con la forma en que se realizaron las configuraciones desde el principio, que fue con las tuplas debido a la creencia de que eran más rápidas que las listas. (Lo son, pero solo muy ligeramente, según los datos citados en la discusión del ticket).

Específicamente, los documentos de Django solían decir:

Para configuraciones que son secuencias, use tuplas en lugar de listas. Esto es puramente para el rendimiento.

Más adelante en la discusión, un desarrollador de Django señala:

Ciertamente no estamos dispuestos a pasar de tuplas a listas allí porque rompería el código existente que ya espera que las tuplas se conviertan en tuplas. Sin embargo, eliminaré la nota de rendimiento, ya que no vale la pena asustar a la gente.

Tenga en cuenta la palabra “puramente” en la documentación original, que si se toma como valor nominal significaría que indicar que los ajustes son inmutables no es una razón por la que se usan las tuplas. También tenga en cuenta que alguien en la discusión del boleto hace referencia a la configuración como “algo así como inmutable”, por lo que ni siquiera es claro que la configuración sea inmutable.

PD: Para interés, tenga en cuenta que la resolución del ticket finaliza con:

Cambié la recomendación de “escribe tu propia configuración” para mencionar que Django usa tuplas, pero no una recomendación. Eso podría evitar los debates interminables entre las tuplas y las listas.

Esto fue cambiado en Django 1.9:

Las configuraciones predeterminadas que eran tuplas ahora son listas.

La configuración predeterminada en django.conf.global_settings era una combinación de listas y tuplas. Todas las configuraciones que antes eran tuplas ahora son listas.

https://docs.djangoproject.com/en/1.9/releases/1.9/#default-settings-that-were-tuples-are-now-lists

Creo que la parte de la razón es que la tupla es de solo lectura, lo que es más seguro y más adecuado para la configuración.