# `stringprep` --- Internet String Preparation

Code source : Lib/stringprep.py

Nommer les différentes choses d'internet (comme les hôtes) amène souvent au besoin de comparer ces identifiants, ce qui nécessite un critère d'« égalité ». La manière dont cette comparaison est effectuée dépend du domaine d'application, c'est-à-dire si elle doit être sensible à la casse ou non. Il peut être aussi nécessaire de restreindre les identifiants possibles, pour permettre uniquement les identifiants composés de caractères « imprimables ».

La RFC 3454 définit une procédure pour "préparer" des chaines de caractères Unicode dans les protocoles internet. Avant de passer des chaines de caractères sur le câble, elles sont traitées avec la procédure de préparation, après laquelle ils obtiennent une certaines forme normalisée. Les RFC définissent un lot de tables, qui peuvent être combinées en profils. Chaque profil doit définir quelles tables il utilise et quelles autres parties optionnelles de la procédure stringprep font partie du profil. Un exemple de profil stringprep est nameprep, qui est utilisé pour les noms de domaine internationalisés.

The module `stringprep` only exposes the tables from RFC 3454. As these tables would be very large to represent as dictionaries or lists, the module uses the Unicode character database internally. The module source code itself was generated using the `mkstringprep.py` utility.

As a result, these tables are exposed as functions, not as data structures. There are two kinds of tables in the RFC: sets and mappings. For a set, `stringprep` provides the "characteristic function", i.e. a function that returns `True` if the parameter is part of the set. For mappings, it provides the mapping function: given the key, it returns the associated value. Below is a list of all functions available in the module.

stringprep.in_table_a1(code)

  Détermine si le code est en table A.1 (points de code non-assigné dans Unicode 3.2).

stringprep.in_table_b1(code)

  Détermine si le code est en table B.1 (habituellement mis en correspondance avec rien).

stringprep.map_table_b2(code)

  Renvoie la valeur correspondante à code selon la table B.2 (mise en correspondance pour la gestion de la casse utilisée avec NFKC).

stringprep.map_table_b3(code)

  Renvoie la valeur correspondante à code dans la table B.3 (mise en correspondance pour la gestion de la casse utilisée sans normalisation).

stringprep.in_table_c11(code)

  Détermine si le code est dans la table C.1.1 (caractères d'espacement ASCII).

stringprep.in_table_c12(code)

  Détermine si le code est dans la table C.1.2 (caractères d'espacement non ASCII).

stringprep.in_table_c11_c12(code)

  Détermine si le code est dans la table C.1 (caractères d'espacement, union de C.1.1 et C.1.2).

stringprep.in_table_c21(code)

  Détermine si le code est dans la table C.2.1 (caractères de contrôle ASCII).

stringprep.in_table_c22(code)

  Détermine si le code est en table C.2.2 (caractères de contrôle non ASCII).

stringprep.in_table_c21_c22(code)

  Détermine si le code est dans la table C.2 (caractères de contrôle, union de C.2.1 et C.2.2).

stringprep.in_table_c3(code)

  Détermine si le code est en table C.3 (usage privé).

stringprep.in_table_c4(code)

  Détermine si le code est dans la table C.4 (points de code non-caractère).

stringprep.in_table_c5(code)

  Détermine si le code est en table C.5 (codes substituts).

stringprep.in_table_c6(code)

  Détermine si le code est dans la table C.6 (Inapproprié pour texte brut).

stringprep.in_table_c7(code)

  Détermine si le code est dans la table C.7 (inapproprié pour les représentations canonics1).

stringprep.in_table_c8(code)

  Détermine si le code est dans la table C.8 (change de propriétés d'affichage ou sont obsolètes).

stringprep.in_table_c9(code)

  Détermine si le code est dans la table C.9 (caractères de marquage).

stringprep.in_table_d1(code)

  Détermine si le code est en table D.1 (caractères avec propriété bidirectionnelle "R" ou "AL").

stringprep.in_table_d2(code)

  Détermine si le code est dans la table D.2 (caractères avec propriété bidirectionnelle "L").