"stringprep" --- Internet String Preparation
********************************************

**Código-fonte:** Lib/stringprep.py

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

Ao identificar coisas (como nomes de host) na internet, muitas vezes é
necessário comparar tais identificações para "igualdade". Exatamente
como essa comparação é executada pode depender do domínio da
aplicação, por exemplo, se deve ser insensível a maiúsculas e
minúsculas ou não. Também pode ser necessário restringir as possíveis
identificações, para permitir apenas identificações consistindo de
caracteres "imprimíveis".

**RFC 3454** define um procedimento para "preparar" strings Unicode em
protocolos de internet. Antes de passar strings para o fio, elas são
processadas com o procedimento de preparação, após o qual elas têm uma
certa forma normalizada. O RFC define um conjunto de tabelas, que
podem ser combinadas em perfis. Cada perfil deve definir quais tabelas
ele usa, e quais outras partes opcionais do procedimento "stringprep"
são parte do perfil. Um exemplo de um perfil "stringprep" é
"nameprep", que é usado para nomes de domínio internacionalizados.

O módulo "stringprep" expõe apenas as tabelas do **RFC 3454**. Como
essas tabelas seriam muito grandes para representar como dicionários
ou listas, o módulo usa o banco de dados de caracteres Unicode
internamente. O código-fonte do módulo em si foi gerado usando o
utilitário "mkstringprep.py".

Como resultado, essas tabelas são expostas como funções, não como
estruturas de dados. Existem dois tipos de tabelas no RFC: conjuntos e
mapeamentos. Para um conjunto, "stringprep" fornece a "função
característica", ou seja, uma função que retorna "True" se o parâmetro
fizer parte do conjunto. Para mapeamentos, ele fornece a função de
mapeamento: dada a chave, ele retorna o valor associado. Abaixo está
uma lista de todas as funções disponíveis no módulo.

stringprep.in_table_a1(code)

   Determina se *code* está na tabela A.1 (pontos de código não
   atribuídos no Unicode 3.2).

stringprep.in_table_b1(code)

   Determina se *code* está na tabela B.1 (comumente mapeado para
   nada).

stringprep.map_table_b2(code)

   Retorna o valor mapeado para *code* de acordo com a tabela B.2
   (mapeamento para dobramento de casos usado com NFKC).

stringprep.map_table_b3(code)

   Retorna o valor mapeado para *code* de acordo com a tabela B.3
   (mapeamento para dobramento de casos usado com nenhuma
   normalização).

stringprep.in_table_c11(code)

   Determina se *code* está na tabela C.1.1 (caracteres de espaço
   ASCII).

stringprep.in_table_c12(code)

   Determina se *code* está na tabela C.1.2 (caracteres de espaço não-
   ASCII).

stringprep.in_table_c11_c12(code)

   Determina se *code* está na tabela C.1 (caracteres de espaço, união
   de C.1.1 e C.1.2).

stringprep.in_table_c21(code)

   Determina se *code* está na tabela C.2.1 (caracteres de controle
   ASCII).

stringprep.in_table_c22(code)

   Determina se *code* está na tabela C.2.2 (caracteres de controle
   não-ASCII).

stringprep.in_table_c21_c22(code)

   Determina se *code* está na tabela C.2 (caracteres de controle,
   união de C.2.1 e C.2.2).

stringprep.in_table_c3(code)

   Determina se *code* está na tabela C.3 (uso privado).

stringprep.in_table_c4(code)

   Determina se *code* está na tabela C.4 (pontos de código não-
   caracteres).

stringprep.in_table_c5(code)

   Determina se *code* está na tabela C.5 (códigos substitutos).

stringprep.in_table_c6(code)

   Determina se *code* está na tabela C.6 (inapropriado para texto
   simples).

stringprep.in_table_c7(code)

   Determina se *code* está na tabela C.7 (inapropriado para para
   representação canônica).

stringprep.in_table_c8(code)

   Determina se *code* está na tabela C.8 (alteram propriedades de
   exibição ou estão descontinuadas).

stringprep.in_table_c9(code)

   Determina se *code* está na tabela C.9 (caracteres de tag).

stringprep.in_table_d1(code)

   Determina se *code* está na tabela D.1 (Caracteres com propriedade
   bidirecional "R" ou "AL").

stringprep.in_table_d2(code)

   Determina se *code* está na tabela D.2 (Caracteres com propriedade
   bidirecional "L").
