stringprep
— Подготовка строк для Интернета¶
Исходный код: Lib/stringprep.py
При идентификации каких-либо сущностей (например, имен хостов) в Интернете часто приходится сравнивать такие идентификации для «равенства». Именно то, как это сравнение выполняется, может зависеть от области приложения, например, должно ли оно быть нечувствительным к регистру или нет. Может быть также необходимо ограничить возможные идентификации, чтобы разрешить только идентификации, состоящие из «печатаемых» символов.
RFC 3454 определяет процедуру «подготовки» строки Юникода в интернет-
протоколах. Перед передачей строки по проводу их обрабатывают
процедурой подготовки, после чего они имеют определённую нормализованную
форму. RFC определяет набор таблиц, которые могут быть объединены в профили.
Каждый профиль должен определить, какие таблицы он использует и какие другие
необязательные части процедуры stringprep
являются частью профиля. Одним из
примеров профиля stringprep
является nameprep
, который используемый для
интернационализированных доменных имен.
Модуль stringprep
предоставляет только таблицы из RFC 3454. Поскольку эти
таблицы будут очень большими для представления их в виде словарей или списков,
модуль использует базу данных символов Юникода внутри. Сам исходный
код модуля был создан с помощью утилиты mkstringprep.py
.
В результате эти таблицы отображаются как функции, а не как структуры данных. В
RFC существует два вида таблиц: наборы и сопоставления. Для аппарата stringprep
предоставляет «характеристическую функцию», т.е. функцию, которая возвращает
True
, если параметр является частью аппарата. Для сопоставлений он
предоставляет функцию отображения: учитывая ключ, он возвращает связанный
значение. Ниже приведен список всех функций, доступных в модуле.
-
stringprep.
in_table_a1
(code)¶ Определить, находится ли code в tableA.1 (неназначенные кодовый точки в Юникоде 3.2).
-
stringprep.
in_table_b1
(code)¶ Определить, находится ли code в tableB.1 (Обычно не сопоставляется ни с чем).
-
stringprep.
map_table_b2
(code)¶ Возвращает отображенный значение для code в соответствии с tableB.2 (Отображение для сворачивания используемый с NFKC).
-
stringprep.
map_table_b3
(code)¶ Возвращает отображенный значение для code в соответствии с tableB.3 (Отображение для используемый сворачивания без нормализации).
-
stringprep.
in_table_c11
(code)¶ Определить, находится ли code в tableC.1.1 (символы пробела ASCII).
-
stringprep.
in_table_c12
(code)¶ Определить, находится ли code в tableC.1.2 (символы, не относящиеся к ASCII).
-
stringprep.
in_table_c11_c12
(code)¶ Определить, находится ли code в tableC.1 (пробел, объединение C.1.1 и C.1.2).
-
stringprep.
in_table_c21
(code)¶ Определить, находится ли code в tableC.2.1 (управляющие символы ASCII).
-
stringprep.
in_table_c22
(code)¶ Определить, находится ли code в tableC.2.2 (не-ASCII управляющие символы).
-
stringprep.
in_table_c21_c22
(code)¶ Определить, находится ли code в tableC.2 (управляющие символы, объединение C.2.1 и C.2.2).
-
stringprep.
in_table_c3
(code)¶ Определить, находится ли code в tableC.3 (частное использование).
-
stringprep.
in_table_c4
(code)¶ Определить, находится ли code в tableC.4 (Non-символ код points).
-
stringprep.
in_table_c5
(code)¶ Определить, находится ли code в tableC.5 (суррогат коды).
-
stringprep.
in_table_c6
(code)¶ Определить, находится ли code в tableC.6 (неподходящий для обычного текста).
-
stringprep.
in_table_c7
(code)¶ Определить, находится ли code в tableC.7 (неподходящем для канонического представления).
-
stringprep.
in_table_c8
(code)¶ Определить, находится ли code в tableC.8 (Изменить графические свойства или устареть).
-
stringprep.
in_table_c9
(code)¶ Определить, находится ли code в tableC.9 (Символы тегов).
-
stringprep.
in_table_d1
(code)¶ Определить, находится ли code в tableD.1 (символы с двунаправленными свойствами «R» или «AL»).
-
stringprep.
in_table_d2
(code)¶ Определить, находится ли code в tableD.2 (символы с двунаправленным свойством «L»).