"stringprep" --- Preparación de cadenas de Internet
***************************************************

**Código fuente:** Lib/stringprep.py

======================================================================

Cuando se quiere identificar cosas (como nombres de host) en internet,
generalmente es necesario comparar tales identificaciones para
"igualdad". La manera en la que esta comparación se ejecuta dependerá
del dominio de la aplicación, ej. si tiene o no tiene que distinguir
entre mayúsculas y minúsculas. Además, en algunos casos será necesario
restringir las posibles identificaciones, de tal manera que solo se
permitan identificadores de caracteres que se puedan "imprimir".

**RFC 3454** define el proceso para la "preparación" de cadenas
Unicode para protocolos de internet. Antes de pasar cadenas a un
cable, se procesan con el proceso de preparación, después del cual
tienen una forma normalizada. El RFC define un conjunto de tablas, que
pueden ser combinadas en perfiles. Cada perfil debe definir qué tablas
usa, y que partes opcionales del proceso "stringprep" son parte del
perfil. Un ejemplo de perfil de "stringprep" es "nameprep", que se usa
para nombres de dominios internacionalizados.

El modulo "stringprep" solo expone las tablas de **RFC 3454**. Como
estas tablas serían muy grandes para representarlas como diccionarios
o listas, el módulo usa la base de datos de los caracteres de Unicode
de manera interna. El código fuente del módulo en sí ha sido generado
usando la herramienta "mkstringprep.py"

Como resultado, estas tablas son presentadas como funciones, no como
estructuras de datos. Hay dos tipos de tablas en el RFC: conjuntos  y
mapeos. Para un conjunto, "stringprep" proporciona una "función
característica", es decir, la función retorna "True" si el parámetro
es parte del conjunto. Para los mapas, proporciona una función de
mapeado: dada una clave, retorna el valor asociado. Abajo se encuentra
una lista con todas las funciones disponibles para este módulo.

stringprep.in_table_a1(code)

   Determina si *code* está en la tablaA.1 (Puntos de Código sin
   asignar en Unicode 3.2).

stringprep.in_table_b1(code)

   Determina si *code* está en la tablaB.1 (Generalmente mapeado a
   nada).

stringprep.map_table_b2(code)

   Retorna el valor mapeado para *code* de acuerdo a la tablaB.2
   (Mapeo para *case-folding* usado con NFKC).

stringprep.map_table_b3(code)

   Retorna el valor mapeado para *code* de acuerdo a tablaB.3 (Mapeo
   para *case-folding* usado sin normalización).

stringprep.in_table_c11(code)

   Determina si *code* está en la tablaC.1.1 (Caracteres de espacio
   ASCII).

stringprep.in_table_c12(code)

   Determina si *code* está en la tablaC.1.2 (Caracteres de espacio
   no-ASCII).

stringprep.in_table_c11_c12(code)

   Determina si *code* está en la tablaC.1 (Caracteres de espacio,
   unión de C.1.1 y C.1.2).

stringprep.in_table_c21(code)

   Determina si *code* está en la tablaC.2.1 (Caracteres de control
   ASCII).

stringprep.in_table_c22(code)

   Determina si *code* está en la tablaC.2.2 (Caracteres de control no
   ASCII).

stringprep.in_table_c21_c22(code)

   Determina si *code* está en la tablaC.2 (Caracteres de control,
   unión de C.2.1 y C.2.2).

stringprep.in_table_c3(code)

   Determina si *code* está en la tablaC.3 (Uso privado).

stringprep.in_table_c4(code)

   Determina si *code* está en la tablaC.4 (Puntos de código sin
   caracteres)

stringprep.in_table_c5(code)

   Determina si *code* está en la tablaC.5 (Códigos surrogados).

stringprep.in_table_c6(code)

   Determina si *code* está en la tablaC.6 (Inadecuado para texto
   plano).

stringprep.in_table_c7(code)

   Determina si *code* está en la tablaC.7 (Inadecuado para la
   representación canónica).

stringprep.in_table_c8(code)

   Determina si *code* está en la tablaC.8 (Cambia las propiedades de
   apariencia o están obsoletas).

stringprep.in_table_c9(code)

   Determina si *code* está en la tablaC.9 (Caracteres de etiquetado).

stringprep.in_table_d1(code)

   Determina si *code* está en la tablaD.1 (Caracteres con propiedad
   bidireccional "R" o "AL").

stringprep.in_table_d2(code)

   Determina si *code* está en la tablaD.2 (Caracteres con propiedad
   bidireccional "L").
