Spec-Zone.ru › Werkzeug

Структуры данных

Werkzeug предоставляет некоторые подклассы общих объектов Python, чтобы расширить их дополнительными функциями. Некоторые из них используются для их неизменяемости, другие используются для изменения некоторых семантик для лучшей работы с HTTP.

Общие цели

Журнал изменений

Изменено в версии 0.6: Теперь классы общего назначения могут быть сериализованы в каждом протоколе, если только содержащиеся объекты могут быть сериализованы. Это означает, что FileMultiDict не будет сериализована, как только она будет содержать файл.

class werkzeug.datastructures.TypeConversionDict

Работает как обычный словарь, но метод get() может выполнять преобразования типов. MultiDict и CombinedMultiDict являются подклассами этого класса и предоставляют ту же функцию.

Журнал изменений

Добавлен в версии 0.5.

get(key: K) → V | None
get(key:K, default:V) → V
get(key:K, default:T) → V|T
get(key:str, type:Callable[[V],T]) → T|None
get(key:str, default:T, type:Callable[[V],T]) → T

Возвращает значение по умолчанию, если запрашиваемые данные не существуют. Если type указан и является вызываемым объектом, он должен преобразовать значение, вернуть его или вызвать ValueError, если это невозможно. В этом случае функция вернёт значение по умолчанию, как если бы значение не было найдено:

>>> d = TypeConversionDict(foo='42', bar='blub')
>>> d.get('foo', type=int)
42
>>> d.get('bar', -1, type=int)
-1
Параметры:
  • key – Ключ для поиска.
  • default – Значение по умолчанию, которое будет возвращено, если ключ не найден. Если не указано иначе, возвращается None.
  • type – Вызываемый объект, используемый для преобразования значения в MultiDict. Если ValueError или TypeError вызывается этим вызываемым объектом, возвращается значение по умолчанию.
Журнал изменений

Изменено в версии 3.0.2: Возвращает значение по умолчанию при TypeError также.

class werkzeug.datastructures.ImmutableTypeConversionDict

Работает как TypeConversionDict, но не поддерживает изменения.

Журнал изменений

Добавлен в версии 0.5.

copy()

Возвращает поверхностную изменяемую копию этого объекта. Имейте в виду, что стандартная функция библиотеки copy() является пустой операцией для этого класса, как и для любого другого неизменяемого типа Python (например: tuple).

Возвращаемый тип:

TypeConversionDict[K, V]

class werkzeug.datastructures.MultiDict(mapping=None)

A MultiDict is a dictionary subclass customized to deal with multiple values for the same key which is for example used by the parsing functions in the wrappers. This is necessary because some HTML form elements pass multiple values for the same key.

MultiDict implements all standard dictionary methods. Internally, it saves all values for a key as a list, but the standard dict access methods will only return the first value for a key. If you want to gain access to the other values, too, you have to use the list methods as explained below.

Basic Usage:

>>> d = MultiDict([('a', 'b'), ('a', 'c')])
>>> d
MultiDict([('a', 'b'), ('a', 'c')])
>>> d['a']
'b'
>>> d.getlist('a')
['b', 'c']
>>> 'a' in d
True

It behaves like a normal dict thus all dict functions will only return the first value when multiple values for one key are found.

From Werkzeug 0.3 onwards, the KeyError raised by this class is also a subclass of the BadRequest HTTP exception and will render a page for a 400 BAD REQUEST if caught in a catch-all for HTTP exceptions.

A MultiDict can be constructed from an iterable of (key, value) tuples, a dict, a MultiDict or from Werkzeug 0.2 onwards some keyword parameters.

Parameters:

mapping (MultiDict[K, V] | cabc.Mapping[K, V | list[V] | tuple[V, ...] | set[V]] | cabc.Iterable[tuple[K, V]] | None) – the initial value for the MultiDict. Either a regular dict, an iterable of (key, value) tuples or None.

Changelog

Changed in version 3.1: Implement | and |= operators.

add(key, value)

Adds a new value for the key.

Changelog

Added in version 0.6.

Parameters:
  • key (K) – the key for the value.
  • value (V) – the value to add.
Return type:

None

getlist(key: K) → list[V]
getlist(key:K, type:Callable[[V],T]) → list[T]

Return the list of items for a given key. If that key is not in the MultiDict, the return value will be an empty list. Just like get, getlist accepts a type parameter. All items will be converted with the callable defined there.

Parameters:
  • key – The key to be looked up.
  • type – Callable to convert each value. If a ValueError or TypeError is raised, the value is omitted.
Returns:

a list of all the values for the key.

Changelog

Changed in version 3.1: Catches TypeError in addition to ValueError.

setlist(key, new_list)

Remove the old values for a key and add new ones. Note that the list you pass the values in will be shallow-copied before it is inserted in the dictionary.

>>> d = MultiDict()
>>> d.setlist('foo', ['1', '2'])
>>> d['foo']
'1'
>>> d.getlist('foo')
['1', '2']
Parameters:
  • key (K) – The key for which the values are set.
  • new_list (Iterable[V]) – An iterable with the new values for the key. Old values are removed first.
Return type:

None

setdefault(key: K) → None
setdefault(key:K, default:V) → V

Returns the value for the key if it is in the dict, otherwise it returns default and sets that value for key.

Parameters:
  • key – The key to be looked up.
  • default – The default value to be returned if the key is not in the dict. If not further specified it’s None.
setlistdefault(key, default_list=None)

Like setdefault but sets multiple values. The list returned is not a copy, but the list that is actually used internally. This means that you can put new values into the dict by appending items to the list:

>>> d = MultiDict({"foo": 1})
>>> d.setlistdefault("foo").extend([2, 3])
>>> d.getlist("foo")
[1, 2, 3]
Parameters:
  • key (K) – The key to be looked up.
  • default_list (Iterable[V] | None) – An iterable of default values. It is either copied (in case it was a list) or converted into a list before returned.
Returns:

a list

Return type:

list[V]

items(multi=False)

Return an iterator of (key, value) pairs.

Parameters:

multi (bool) – If set to True the iterator returned will have a pair for each value of each key. Otherwise it will only contain pairs for the first value of each key.

Return type:

Iterable[tuple[K, V]]

lists()

Возвращает итератор пар (key, values), где значения — список всех значений, связанных с ключом.

Тип возвращаемого значения:

Iterable[кортеж[K, список[V]]]

values()

Возвращает итератор первого значения в списке значений для каждого ключа.

Тип возвращаемого значения:

Iterable[V]

listvalues()

Возвращает итератор всех значений, связанных с ключом. Сопоставление с keys() эквивалентно вызову lists():

>>> d = MultiDict({"foo": [1, 2, 3]})
>>> zip(d.keys(), d.listvalues()) == d.lists()
True
Тип возвращаемого значения:

Iterable[список[V]]

copy()

Возвращает поверхностную копию этого объекта.

Тип возвращаемого значения:

te.Self

deepcopy(memo=None)

Возвращает глубокую копию этого объекта.

Параметры:

memo (t.Any)

Тип возвращаемого значения:

te.Self

to_dict() → dict[K, V]
to_dict(flat:Literal[False]) → словарь[K,список[V]]

Возвращает содержимое в виде обычного словаря. Если flat равно True, возвращаемый словарь будет содержать только первое значение, если flat равно False, все значения будут возвращены в виде списков.

Параметры:

flat – Если установлено в False, возвращаемый словарь будет содержать списки со всеми значениями. В противном случае он будет содержать только первое значение для каждого ключа.

Возвращает:

словарь dict

update(mapping)

update() расширяет, а не заменяет существующие списки ключей:

>>> a = MultiDict({'x': 1})
>>> b = MultiDict({'x': 2, 'y': 3})
>>> a.update(b)
>>> a
MultiDict([('y', 3), ('x', 1), ('x', 2)])

Если список значений для ключа в other_dict пуст, новые значения не будут добавлены в словарь, и ключ не будет создан:

>>> x = {'empty_list': []}
>>> y = MultiDict()
>>> y.update(x)
>>> y
MultiDict([])
Параметры:

mapping (MultiDict[K, V] | Mapping[K, V | список[V] | кортеж[V, ...] | множество[V]] | Iterable[кортеж[K, V]])

Тип возвращаемого значения:

None

pop(key: K) → V
pop(key:K, default:V) → V
pop(key:K, default:T) → V|T

Извлекает первое значение из списка значений в словаре. После чего ключ удаляется из словаря, и дополнительные значения игнорируются:

>>> d = MultiDict({"foo": [1, 2, 3]})
>>> d.pop("foo")
1
>>> "foo" in d
False
Параметры:
  • key – ключ для извлечения.
  • default – если указано, значение, которое будет возвращено, если ключ не найден в словаре.
popitem()

Извлекает пару ключ-значение из словаря.

Тип возвращаемого значения:

кортеж[K, V]

poplist(key)

Извлекает список значений для ключа из словаря. Если ключ не найден в словаре, возвращается пустой список.

Журнал изменений

Изменено в версии 0.5: Если ключ больше не существует, возвращается список, а не возникает ошибка.

Параметры:

key (K)

Тип возвращаемого значения:

список[V]

popitemlist()

Извлекает (key, list) кортеж из словаря.

Тип возвращаемого значения:

кортеж[K, список[V]]

clear() → None. Remove all items from D.
fromkeys(value=None, /)

Создаёт новый словарь с ключами из итерируемого объекта и значениями, установленным в value.

get(key, default=None, type=None)

Возвращает значение по умолчанию, если запрошенные данные не существуют. Если type предоставлен и является вызываемым объектом, он должен преобразовать значение, вернуть его или вызвать исключение ValueError, если это невозможно. В этом случае функция вернёт значение по умолчанию, как если бы значение не было найдено:

>>> d = TypeConversionDict(foo='42', bar='blub')
>>> d.get('foo', type=int)
42
>>> d.get('bar', -1, type=int)
-1
Параметры:
  • ключ (K) – Ключ для поиска.
  • значение_по_умолчанию (V | T | None) – Значение по умолчанию, которое будет возвращено, если ключ не найден. Если не указано иначе, возвращается None.
  • тип (Callable[[V], T] | None) – Вызываемый объект, используемый для преобразования значения в MultiDict. Если этот вызываемый объект вызывает ValueError или TypeError, возвращается значение по умолчанию.
Тип возвращаемого значения:

V | T | None

Журнал изменений

Изменено в версии 3.0.2: Возвращает значение по умолчанию при возникновении TypeError также.

keys() → a set-like object providing a view on D's keys
class werkzeug.datastructures.OrderedMultiDict

Работает как обычный MultiDict, но сохраняет порядок полей. Чтобы преобразовать упорядоченный многослойный словарь в список, можно использовать метод items() и передать ему multi=True.

В целом, OrderedMultiDict на порядок медленнее, чем MultiDict.

примечание

Из-за ограничения в Python невозможно преобразовать упорядоченный многослойный словарь в обычный словарь, используя dict(multidict). Вместо этого необходимо использовать метод to_dict(), иначе внутренние объекты буфера будут доступны.

Устарело начиная с версии 3.1: Будет удалено в Werkzeug 3.2. Используйте MultiDict вместо этого.

class werkzeug.datastructures.ImmutableMultiDict

Неизменяемый OrderedMultiDict.

Устарело начиная с версии 3.1: Будет удалено в Werkzeug 3.2. Используйте ImmutableMultiDict вместо этого.

Журнал изменений

Добавлен в версии 0.6.

werkzeug.datastructures.ImmutableOrderedMultiDict

псевдоним _ImmutableOrderedMultiDict

class werkzeug.datastructures.CombinedMultiDict(dicts=None)

Только для чтения MultiDict, которому можно передать несколько экземпляров MultiDict в качестве последовательности, и он объединит возвращаемые значения всех обернутых словарей:

>>> from werkzeug.datastructures import CombinedMultiDict, MultiDict
>>> post = MultiDict([('foo', 'bar')])
>>> get = MultiDict([('blub', 'blah')])
>>> combined = CombinedMultiDict([get, post])
>>> combined['foo']
'bar'
>>> combined['blub']
'blah'

Это работает для всех операций чтения и вызовет исключение TypeError для методов, которые обычно изменяют данные, что невозможно.

Начиная с Werkzeug 0.3, исключение KeyError от этого класса также является подклассом исключения BadRequest HTTP и отобразит страницу для 400 BAD REQUEST при перехвате в обработчике исключений HTTP.

Параметры:

словари (cabc.Iterable[MultiDict[K, V]] | None)

class werkzeug.datastructures.ImmutableDict

Неизменяемый dict.

Журнал изменений

Добавлен в версии 0.5.

copy()

Возвращает поверхностную изменяемую копию этого объекта. Имейте в виду, что стандартная функция библиотеки copy() для этого класса, как и для любого другого неизменяемого типа Python (например, tuple), является бесполезной операцией.

Тип возвращаемого значения:

dict[K, V]

class werkzeug.datastructures.ImmutableList(iterable=(), /)

Неизменяемый list.

Журнал изменений

Добавлен в версии 0.5.

Приватный:
class werkzeug.datastructures.FileMultiDict(mapping=None)

Специальный MultiDict, имеющий удобные методы для добавления файлов. Он используется для EnvironBuilder и полезен для тестирования.

Журнал изменений

Добавлен в версии 0.5.

Параметры:

mapping (MultiDict[K, V] | cabc.Mapping[K, V | список[V] | кортеж[V, ...] | множество[V]] | cabc.Iterable[кортеж[K, V]] | None)

add_file(name, file, filename=None, content_type=None)

Добавляет новый файл в словарь. file может быть именем файла или объектом типа file или FileStorage.

Параметры:
  • name (строка) – имя поля.
  • file (строка | PathLike[строка] | IO[байты] | FileStorage) – имя файла или объект типа file.
  • filename (строка | None) – необязательное имя файла
  • content_type (строка | None) – необязательный тип контента
Тип возвращаемого значения:

None

HTTP Связанные

class werkzeug.datastructures.Headers([defaults])

Объект, хранящий заголовки. Он имеет интерфейс типа dict, но упорядочен, может хранить один и тот же ключ несколько раз, и при итерации возвращает (key, value) пары вместо только ключей.

Эта структура данных полезна, если вам нужно более удобное средство обработки заголовков WSGI, которые хранятся в списке кортежей.

Начиная с Werkzeug 0.3, KeyError исключение, генерируемое этим классом, также является подклассом BadRequest исключения HTTP и отобразит страницу для 400 BAD REQUEST , если будет перехвачено в обработчике исключений HTTP.

Заголовки в основном совместимы с классом Python wsgiref.headers.Headers, за исключением __getitem__. wsgiref вернёт None для headers['missing'], в то время как Headers вызовет KeyError.

Чтобы создать новый Headers объект, передайте ему список, словарь или другой Headers объект со значениями по умолчанию. Эти значения проверяются так же, как и значения, добавленные позже.

Параметры:

defaults (Headers | MultiDict[str, t.Any] | cabc.Mapping[str, t.Any | list[t.Any] | tuple[t.Any, ...] | set[t.Any]] | cabc.Iterable[tuple[str, t.Any]] | None) – Список значений по умолчанию для Headers.

Изменения

Изменено в версии 3.1: Реализация | и |= операторов.

Изменено в версии 2.1.0: Значения по умолчанию проверяются так же, как и значения, добавленные позже.

Изменено в версии 0.9: Эта структура данных теперь хранит значения unicode аналогично тому, как это делают multi dicts. Основное различие заключается в том, что также можно установить байты, которые будут автоматически декодированы с помощью latin1.

Изменено в версии 0.9: Функция linked() была удалена без замены, так как это был API, не поддерживающий изменения модели кодирования.

get(key: str) → str | None
get(key:str, default:str) → str
get(key:str, default:T) → str|T
get(key:str, type:Callable[[str],T]) → T|None
get(key:str, default:T, type:Callable[[str],T]) → T

Возвращает значение по умолчанию, если запрашиваемые данные отсутствуют. Если type предоставлено и является вызываемым объектом, оно должно преобразовать значение, вернуть его или поднять ValueError, если это невозможно. В этом случае функция вернёт значение по умолчанию, как если бы значение не было найдено:

>>> d = Headers([('Content-Length', '42')])
>>> d.get('Content-Length', type=int)
42
Параметры:
  • key – Ключ для поиска.
  • default – Значение по умолчанию, которое будет возвращено, если ключ не найден. Если не указано, возвращается None.
  • type – Вызываемый объект, используемый для преобразования значения в Headers. Если этот вызываемый объект вызывает ValueError, возвращается значение по умолчанию.
Изменения

Изменено в версии 3.0: Параметр as_bytes был удалён.

Изменено в версии 0.9: Параметр as_bytes был добавлен.

getlist(key: str) → list[str]
getlist(key:str, type:Callable[[str],T]) → list[T]

Возвращает список значений для заданного ключа. Если ключ отсутствует в Headers, возвращается пустой список. Аналогично get(), getlist() принимает параметр type. Все элементы преобразуются с помощью указанной функции.

Параметры:
  • key – Ключ для поиска.
  • type – Функция, используемая для преобразования значения в Headers. Если эта функция вызывает ValueError, значение удаляется из списка.
Возвращает:

Список list всех значений для ключа.

Журнал изменений

Изменено в версии 3.0: Параметр as_bytes был удален.

Изменено в версии 0.9: Параметр as_bytes был добавлен.

get_all(name)

Возвращает список всех значений для указанного поля.

Этот метод совместим с методом wsgiref get_all().

Параметры:

name (str)

Тип возвращаемого значения:

list[str]

extend(arg=None, /, **kwargs)

Расширяет заголовки в этом объекте элементами из другого объекта, содержащего заголовки, а также именованными аргументами.

Чтобы заменить существующие ключи вместо расширения, используйте update().

Если задан, первый аргумент может быть другим объектом Headers, MultiDict, dict или итерируемым набором пар.

Журнал изменений

Изменено в версии 1.0: Поддержка MultiDict. Разрешено передавать kwargs.

Параметры:
  • arg (Headers | MultiDict[str, Any] | Mapping[str, Any | list[Any] | tuple[Any, ...] | set[Any]] | Iterable[tuple[str, Any]] | None)
  • kwargs (str)
Тип возвращаемого значения:

None

remove(key)

Удаляет ключ.

Параметры:

key (str) – Ключ для удаления.

Тип возвращаемого значения:

None

pop() → tuple[str, str]
pop(key:str) → str
pop(key:int|None=None) → tuple[str,str]
pop(key:str, default:str) → str
pop(key:str, default:T) → str|T

Удаляет и возвращает значение ключа или индекса.

Параметры:

key – Ключ для удаления. Если это целое число, удаляется элемент по этому индексу, если это строка, удаляется значение для этого ключа. Если ключ опущен или None удаляется последний элемент.

Возвращает:

элемент.

popitem()

Удаляет пару ключ-значение и возвращает её.

Тип возвращаемого значения:

tuple[str, str]

add(key, value, /, **kwargs)

Добавляет новую пару заголовок-значение в список.

Используя ключевые аргументы, можно указать дополнительные параметры для значения заголовка, при этом символы нижнего подчеркивания преобразуются в дефисы:

>>> d = Headers()
>>> d.add('Content-Type', 'text/plain')
>>> d.add('Content-Disposition', 'attachment', filename='foo.png')

Обработка ключевых аргументов происходит с помощью dump_options_header().

Изменения

Изменено в версии 0.4.1: Добавлены ключевые аргументы для совместимости с wsgiref.

Параметры:
  • key (str)
  • value (Any)
  • kwargs (Any)
Тип возвращаемого значения:

None

add_header(key, value, /, **kwargs)

Добавляет новую пару заголовок-значение в список.

Псевдоним для add() для совместимости с wsgiref методом add_header().

Параметры:
  • key (str)
  • value (Any)
  • kwargs (Any)
Тип возвращаемого значения:

None

clear()

Очищает все заголовки.

Тип возвращаемого значения:

None

set(key, value, /, **kwargs)

Удаляет все заголовки для key и добавляет новый. Новый ключ либо добавляется в конец списка, если записи не было, либо заменяет первую.

Используя ключевые аргументы, можно указать дополнительные параметры для значения заголовка, при этом символы нижнего подчеркивания преобразуются в дефисы. См. add() для дополнительной информации.

Изменения

Изменено в версии 0.6.1: set() теперь принимает те же аргументы, что и add().

Параметры:
  • key (str) – Ключ для вставки.
  • value (Any) – Значение для вставки.
  • kwargs (Any)
Тип возвращаемого значения:

None

setlist(key, values)

Удаляет существующие значения для заголовка и добавляет новые.

Параметры:
  • key (str) – Ключ заголовка для установки.
  • values (Iterable[Any]) – Итерируемый объект значений для установки по ключу.
Тип возвращаемого значения:

None

Изменения

Добавлен в версии 1.0.

setdefault(key, default)

Возвращает первое значение для ключа, если оно есть в заголовках, в противном случае устанавливает заголовок со значением, заданным default, и возвращает его.

Параметры:
  • ключ (str) – Ключ заголовка для получения.
  • значение по умолчанию (Any) – Значение для установки ключа, если он не указан в заголовках.
Тип возвращаемого значения:

str

setlistdefault(key, default)

Возвращает список значений для ключа, если он указан в заголовках, в противном случае устанавливает заголовок со списком значений, заданным default, и возвращает его.

В отличие от MultiDict.setlistdefault(), изменение возвращаемого списка не повлияет на заголовки.

Параметры:
  • ключ (str) – Ключ заголовка для получения.
  • значение по умолчанию (Iterable[Any]) – Итерируемый объект значений для установки ключа, если он не указан в заголовках.
Тип возвращаемого значения:

list[str]

Журнал изменений

Добавлен в версии 1.0.

update(arg=None, /, **kwargs)

Заменяет заголовки в этом объекте значениями из другого объекта заголовков и именованных аргументов.

Для расширения существующих ключей вместо их замены используйте extend().

Если предоставлен, первый аргумент может быть другим объектом Headers, MultiDict, dict, или итерируемым объектом пар.

Журнал изменений

Добавлен в версии 1.0.

Параметры:
  • arg (Headers | MultiDict[str, Any] | Mapping[str, Any | list[Any] | tuple[Any, ...] | Set[Any]] | Iterable[tuple[str, Any]] | None)
  • kwargs (Any | list[Any] | tuple[Any, ...] | Set[Any])
Тип возвращаемого значения:

None

to_wsgi_list()

Преобразует заголовки в список, подходящий для WSGI.

Возвращаемое значение:

список

Тип возвращаемого значения:

list[tuple[str, str]]

class werkzeug.datastructures.EnvironHeaders(environ)

Только для чтения версия заголовков из среды WSGI. Она предоставляет тот же интерфейс, что и Headers, и создается из среды WSGI. Начиная с Werkzeug 0.3, исключение KeyError, генерируемое этим классом, также является подклассом исключения BadRequest HTTP и отобразит страницу для 400 BAD REQUEST при перехвате в обработчике исключений HTTP.

Параметры:

environ (WSGIEnvironment)

class werkzeug.datastructures.HeaderSet(headers=None, on_update=None)

Аналогично классу ETags, он реализует структуру, похожую на множество. В отличие от ETags, этот класс нечувствителен к регистру и используется для заголовков vary, allow и content-language.

Если не использована функция parse_set_header(), создание экземпляра происходит следующим образом:

>>> hs = HeaderSet(['foo', 'bar', 'baz'])
>>> hs
HeaderSet(['foo', 'bar', 'baz'])
Параметры:
  • headers (cabc.Iterable[str] | None)
  • on_update (cabc.Callable[[te.Self], None] | None)
add(header)

Добавить новый заголовок в множество.

Параметры:

header (str)

Тип возвращаемого значения:

None

remove(header)

Удалить заголовок из множества. Вызовет исключение KeyError, если заголовок не найден.

Журнал изменений

Изменено в версии 0.5: В старых версиях вместо исключения KeyError возникало исключение IndexError при отсутствии объекта.

Параметры:
  • header (str) – заголовок для удаления.
  • self (te.Self)
Тип возвращаемого значения:

None

update(iterable)

Добавить все заголовки из итерируемого объекта в множество.

Параметры:
  • iterable (cabc.Iterable[str]) – обновляет множество элементами из итерируемого объекта.
  • self (te.Self)
Тип возвращаемого значения:

None

discard(header)

Аналогично remove(), но игнорирует ошибки.

Параметры:

header (str) – заголовок для удаления.

Тип возвращаемого значения:

None

find(header)

Возвращает индекс заголовка в множестве, или -1, если не найден.

Параметры:

header (str) – заголовок для поиска.

Тип возвращаемого значения:

int

index(header)

Возвращает индекс заголовка в множестве или вызывает исключение IndexError.

Параметры:

header (str) – заголовок для поиска.

Тип возвращаемого значения:

int

clear()

Очистить множество.

Параметры:

self (te.Self)

Тип возвращаемого значения:

None

as_set(preserve_casing=False)

Возвращает множество как настоящий тип Python set. При вызове все элементы преобразуются в нижний регистр, и порядок теряется.

Параметры:

preserve_casing (bool) – если установлено значение True, элементы в возвращаемом множестве будут иметь исходный регистр, как и в HeaderSet, в противном случае они будут в нижнем регистре.

Тип возвращаемого значения:

set[str]

to_header()

Преобразовать множество заголовков в строку заголовка HTTP.

Тип возвращаемого значения:

str

class werkzeug.datastructures.Accept(values=())

Объект Accept — это просто подкласс списка для списков кортежей (value, quality). Он автоматически сортируется по специфичности и качеству.

Все объекты Accept работают подобно списку, но предоставляют дополнительную функциональность для работы с данными. Проверки на включение нормализуются по правилам данного заголовка:

>>> a = CharsetAccept([('ISO-8859-1', 1), ('utf-8', 0.7)])
>>> a.best
'ISO-8859-1'
>>> 'iso-8859-1' in a
True
>>> 'UTF8' in a
True
>>> 'utf7' in a
False

Чтобы получить качество для элемента, можно использовать обычный доступ к элементам:

>>> print a['utf-8']
0.7
>>> a['utf7']
0
Журнал изменений

Изменено в версии 1.0.0: Accept внутренние значения больше не упорядочиваются по алфавиту для тегов с равным качеством. Вместо этого сохраняется начальный порядок.

Изменено в версии 0.5: Accept объекты теперь принудительно являются неизменяемыми.

Параметры:

values (Accept | cabc.Iterable[кортеж[строка, вещественное число]] | None)

quality(key)

Возвращает качество ключа.

Журнал изменений

Добавлен в версии 0.6: В предыдущих версиях вам приходилось использовать синтаксис доступа к элементам (например: obj[key] вместо obj.quality(key))

Параметры:

key (строка)

Тип возвращаемого значения:

вещественное число

index(key)

Получить позицию записи или вызвать ValueError.

Параметры:

key (строка | кортеж[строка, вещественное число]) – Ключ для поиска.

Тип возвращаемого значения:

целое число

Журнал изменений

Изменено в версии 0.5: Ранее это вызывало IndexError, что не соответствовало API списка.

find(key)

Получить позицию записи или вернуть -1.

Параметры:

key (строка | кортеж[строка, вещественное число]) – Ключ для поиска.

Тип возвращаемого значения:

целое число

values()

Итерироваться по всем значениям.

Тип возвращаемого значения:

Итератор[строка]

to_header()

Преобразовать набор заголовков в строку HTTP-заголовка.

Тип возвращаемого значения:

строка

best_match(matches: Iterable[str]) → str | None
best_match(matches:Iterable[строка], default:строка=None) → строка

Возвращает наилучшее соответствие из списка возможных соответствий на основе специфичности и качества клиента. Если два элемента имеют одинаковое качество и специфичность, возвращается тот, который встречается первым.

Параметры:
  • matches – список соответствий для проверки
  • default – значение, возвращаемое, если соответствия нет
property best: str | None

Наиболее подходящее значение.

class werkzeug.datastructures.MIMEAccept(values=())

Подобно Accept, но с особыми методами и поведением для MIME-типов.

Параметры:

values (Accept | cabc.Iterable[кортеж[строка, вещественное число]] | None)

property accept_html: bool

Истинно, если этот объект принимает HTML.

property accept_xhtml: bool

Истинно, если этот объект принимает XHTML.

property accept_json: bool

Истинно, если этот объект принимает JSON.

class werkzeug.datastructures.CharsetAccept(values=())

Как Accept, но с нормализацией для наборов символов.

Параметры:

values (Accept | cabc.Iterable[кортеж[строка, число с плавающей точкой]] | None)

class werkzeug.datastructures.LanguageAccept(values=())

Как Accept, но с нормализацией для тегов языка.

Параметры:

values (Accept | cabc.Iterable[кортеж[строка, число с плавающей точкой]] | None)

class werkzeug.datastructures.RequestCacheControl(values=(), on_update=None)

Управление кешированием для запросов. Это неизменяемый объект, предоставляющий доступ ко всем заголовкам управления кешированием, относящимся к запросу.

Чтобы получить заголовок объекта RequestCacheControl снова, можно преобразовать объект в строку или вызвать метод to_header(). Если вы планируете создать подкласс и добавить собственные элементы, обратитесь к исходному коду этого класса.

Журнал изменений

Изменено в версии 3.1: Значения словарей всегда str | None. Установка свойств преобразует значение в строку. Установка свойства, отличного от булевого, в False эквивалентна установке его в None. Получение типизированных свойств вернет None если преобразование вызывает ValueError, а не строку.

Изменено в версии 3.1: max_age равно None при наличии без значения, а не -1.

Изменено в версии 3.1: no_cache – булево значение; если присутствует без значения, то оно равно True вместо "*".

Изменено в версии 3.1: max_stale равно True при наличии без значения, а не "*".

Изменено в версии 3.1: no_transform – булево значение. Ранее оно всегда ошибочно было None.

Изменено в версии 3.1: min_fresh равно None при наличии без значения, а не "*".

Изменено в версии 2.1: Установка целочисленных свойств, таких как max_age приведет к преобразованию значения в целое число.

Добавлена в версии 0.5: Свойства, относящиеся только к ответам, отсутствуют в этом классе запроса.

Параметры:
  • values (cabc.Mapping[строка, t.Any] | cabc.Iterable[кортеж[строка, t.Any]] | None)
  • on_update (cabc.Callable[[_CacheControl], None] | None)
property max_stale

Атрибут max-stale. Значение int, True если присутствует без значения, или None если отсутствует.

property min_fresh

Атрибут min-fresh. Значение int, или None если отсутствует.

property no_cache

Атрибут no-cache. Значение bool, либо он отсутствует.

property only_if_cached

Атрибут only-if-cached. Значение bool, либо он отсутствует.

class werkzeug.datastructures.ResponseCacheControl(values=(), on_update=None)

Управление кэшированием для ответов. В отличие от RequestCacheControl, этот объект изменяемый и предоставляет доступ к заголовкам управления кэшем, относящимся к ответу.

Чтобы получить заголовок объекта ResponseCacheControl, можно преобразовать объект в строку или вызвать метод to_header(). Если вы планируете создать подкласс и добавить собственные элементы, ознакомьтесь с исходным кодом этого класса.

Журнал изменений

Изменено в версии 3.1: Значения словаря всегда str | None. Установка свойств преобразует значение в строку. Установка свойства, отличного от булевого, в False эквивалентно установке в None. Получение типизированных свойств вернет None, если преобразование вызовет ValueError, а не строку.

Изменено в версии 3.1: no_cache равно True, если он присутствует без значения, а не "*".

Изменено в версии 3.1: private равно True, если он присутствует без значения, а не "*".

Изменено в версии 3.1: no_transform является булевым значением. Ранее он ошибочно всегда был None.

Изменено в версии 3.1: Добавлены свойства must_understand, stale_while_revalidate, и stale_if_error.

Изменено в версии 2.1.1: s_maxage преобразует значение в целое число.

Изменено в версии 2.1: Установка свойств типа int, таких как max_age приведет к преобразованию значения в целое число.

Добавлен в версии 0.5: Свойства, доступные только для запросов, отсутствуют в этом классе ответов.

Параметры:
  • values (cabc.Mapping[str, t.Any] | cabc.Iterable[tuple[str, t.Any]] | None)
  • on_update (cabc.Callable[[_CacheControl], None] | None)
static cache_property(key, empty, type, *, doc=None)

Возвращает новый объект свойства для заголовка кэша. Полезно, если вы хотите добавить поддержку расширения кэша в подклассе.

Параметры:
  • key (str) – Имя атрибута, присутствующего в обработанном словаре заголовков управления кэшем.
  • empty (Any) – Значение, используемое, если ключ присутствует без значения.
  • type (type[Any] | None) – Тип, в который нужно преобразовать строковое значение вместо строки. Если преобразование вызовет ValueError, возвращаемое значение равно None.
  • doc (str | None) – Строка документации для свойства. Если не указана, она генерируется на основе других параметров.
Тип возвращаемого значения:

Any

Журнал изменений

Изменено в версии 3.1: Добавлен параметр doc.

Изменено в версии 2.0: Переименовано из cache_property.

to_header()

Преобразует сохраненные значения в заголовок управления кэшем.

Тип возвращаемого значения:

str

property immutable

Атрибут immutable. Присутствует или отсутствует.

property max_age

Атрибут max-age. Присутствует или отсутствует, или None, если не указан.

property must_revalidate

Атрибут must-revalidate. Присутствует или отсутствует.

property must_understand

Атрибут must-understand. Присутствует или отсутствует.

property no_cache

Атрибут no-cache. Присутствует или отсутствует, True если присутствует без значения, или None если не указан.

property no_store

Атрибут no-store. Присутствует или отсутствует.

property no_transform

Атрибут no-transform. Присутствует или отсутствует.

property private

Атрибут private. Присутствует или отсутствует, True если присутствует без значения, или None если не указан.

property proxy_revalidate

Атрибут proxy-revalidate. Присутствует или отсутствует.

property public

Атрибут public. Присутствует или отсутствует.

property s_maxage

Атрибут s-maxage. Присутствует или отсутствует, или None если не указан.

property stale_if_error

Атрибут stale-if-error. Присутствует или отсутствует, или None если не указан.

property stale_while_revalidate

Атрибут stale-while-revalidate. Присутствует или отсутствует, или None если не указан.

END_OF_DOCUMENT_MARKER
class werkzeug.datastructures.ETags(strong_etags=None, weak_etags=None, star_tag=False)

Множество, которое можно использовать для проверки, присутствует ли один тег в коллекции тегов.

Параметры:
  • strong_etags (cabc.Iterable[строка] | None)
  • weak_etags (cabc.Iterable[строка] | None)
  • star_tag (булево)
as_set(include_weak=False)

Преобразовать объект ETags в множество Python. По умолчанию все слабые теги не являются частью этого множества.

Параметры:

include_weak (булево)

Тип возвращаемого значения:

множество[строка]

is_weak(etag)

Проверить, является ли тег слабым.

Параметры:

etag (строка)

Тип возвращаемого значения:

булево

is_strong(etag)

Проверить, является ли тег сильным.

Параметры:

etag (строка)

Тип возвращаемого значения:

булево

contains_weak(etag)

Проверить, входит ли тег в множество, включающее слабые и сильные теги.

Параметры:

etag (строка)

Тип возвращаемого значения:

булево

contains(etag)

Проверить, входит ли тег в множество, игнорируя слабые теги. Также можно использовать оператор in.

Параметры:

etag (строка)

Тип возвращаемого значения:

булево

contains_raw(etag)

При передаче тега в кавычках, проверяет, входит ли этот тег в множество. Если тег слабый, он проверяется по отношению к слабым и сильным тегам, в противном случае только по отношению к сильным.

Параметры:

etag (строка)

Тип возвращаемого значения:

булево

to_header()

Преобразовать множество тегов в строку заголовка HTTP.

Тип возвращаемого значения:

строка

class werkzeug.datastructures.Authorization(auth_type, data=None, token=None)

Представляет части заголовка запроса Authorization.

Request.authorization возвращает экземпляр, если заголовок задан.

Экземпляр можно использовать с параметром auth методов запроса Client для отправки заголовка в тестовых запросах.

В зависимости от схемы аутентификации, будет установлено значение либо parameters, либо token. Токен схемы Basic декодируется в параметры username и password.

Для удобства, auth["key"] и auth.key оба обращаются к ключу в словаре parameters, вместе с auth.get("key") и "key" in auth.

Журнал изменений

Изменено в версии 2.3: Параметр token и атрибут были добавлены для поддержки схем аутентификации, использующих токен вместо параметров, таких как Bearer.

Изменено в версии 2.3: Объект больше не является dict.

Изменено в версии 0.5: Объект является неизменяемым словарем.

Параметры:
  • auth_type (str)
  • data (dict[str, str | None] | None)
  • token (str | None)
type

Схема аутентификации, например basic, digest, или bearer.

parameters

Словарь параметров, разобранных из заголовка. Для данной схемы будет иметь значение либо это, либо token.

token

Токен, разобранный из заголовка. Для данной схемы будет иметь значение либо это, либо parameters.

Журнал изменений

Добавлен в версии 2.3.

classmethod from_header(value)

Разбор значения заголовка Authorization и возврат экземпляра, или None если значение пустое.

Параметры:

value (str | None) – Значение заголовка для разбора.

Тип возвращаемого значения:

те.Self | None

Журнал изменений

Добавлен в версии 2.3.

to_header()

Создание значения заголовка Authorization, представляющего эти данные.

Журнал изменений

Добавлен в версии 2.0.

Тип возвращаемого значения:

str

class werkzeug.datastructures.WWWAuthenticate(auth_type, values=None, token=None)

Представляет части заголовка ответа WWW-Authenticate.

Установите Response.www_authenticate на экземпляр списка экземпляров, чтобы установить значения для этого заголовка в ответе. Изменение этого экземпляра изменит значение заголовка.

В зависимости от схемы аутентификации, должно быть установлено значение либо parameters, либо token. Схема Basic закодирует параметры username и password в токен.

Для удобства, auth["key"] и auth.key оба действуют со словарем parameters и могут использоваться для получения, установки или удаления параметров. Также предоставляются auth.get("key") и "key" in auth.

Журнал изменений

Изменено в версии 2.3: Параметр token и атрибут были добавлены для поддержки схем аутентификации, использующих токен вместо параметров, таких как Bearer.

Изменено в версии 2.3: Объект больше не является dict.

Изменено в версии 2.3: Параметр on_update был удален.

Параметры:
  • auth_type (str)
  • values (dict[str, str | None] | None)
  • token (str | None)
property type: str

Схема аутентификации, например basic, digest, или bearer.

property parameters: dict[str, str | None]

Словарь параметров для заголовка. Только одно из этого или token должно иметь значение для данной схемы.

property token: str | None

Словарь параметров для заголовка. Только одно из этого или token должно иметь значение для данной схемы.

classmethod from_header(value)

Разбор значения заголовка WWW-Authenticate и возврат экземпляра, или None если значение пустое.

Параметры:

value (str | None) – Значение заголовка для разбора.

Тип возвращаемого значения:

те.Self | None

Журнал изменений

Добавлен в версии 2.3.

to_header()

Создание значения заголовка WWW-Authenticate, представляющего эти данные.

Тип возвращаемого значения:

str

class werkzeug.datastructures.IfRange(etag=None, date=None)

Очень простой объект, представляющий заголовок If-Range в обработанном виде. У него либо нет тега или даты, либо есть только один из них, но никогда оба.

Журнал изменений

Добавлен в версии 0.7.

Параметры:
  • etag (str | None)
  • date (datetime | None)
etag

Обработанный и неуточнённый тег etag. Диапазоны всегда работают со строгими тегами etag, поэтому информация о слабых тегах не нужна.

date

Дата в обработанном формате или None.

to_header()

Преобразует объект обратно в HTTP-заголовок.

Тип возвращаемого значения:

str

class werkzeug.datastructures.Range(units, ranges)

Представляет заголовок Range. Все методы поддерживают только байты в качестве единицы измерения. Сохраняет список диапазонов, если он задан, но методы работают только если указан только один диапазон.

Исключения:

ValueError – Если указанные диапазоны некорректны.

Параметры:
  • units (str)
  • ranges (cabc.Sequence[tuple[int, int | None]])
Журнал изменений

Изменено в версии 0.15: Переданные диапазоны проверяются.

Добавлен в версии 0.7.

units

Единицы измерения этого диапазона. Обычно «байты».

ranges

Список (begin, end) кортежей диапазонов для указанного заголовка диапазона. Диапазоны не включают конечные значения.

range_for_length(length)

Если диапазон для байтов, длина не равна None, и есть ровно один диапазон, и он удовлетворяет условиям, возвращает кортеж (start, stop), иначе None.

Параметры:

length (int | None)

Тип возвращаемого значения:

tuple[int, int] | None

make_content_range(length)

Создаёт объект ContentRange из текущего диапазона и заданной длины содержимого.

Параметры:

length (int | None)

Тип возвращаемого значения:

ContentRange | None

to_header()

Преобразует объект обратно в HTTP-заголовок.

Тип возвращаемого значения:

str

to_content_range_header(length)

Преобразует объект в заголовок Content-Range HTTP, на основе заданной длины.

Параметры:

length (int | None)

Тип возвращаемого значения:

str | None

class werkzeug.datastructures.ContentRange(units, start, stop, length=None, on_update=None)

Представляет заголовок content range.

Журнал изменений

Добавлен в версии 0.7.

Параметры:
  • units (str | None)
  • start (int | None)
  • stop (int | None)
  • length (int | None)
  • on_update (cabc.Callable[[ContentRange], None] | None)
units: str | None

Единицы измерения, обычно «байты»

start: int | None

Начальная точка диапазона или None.

stop: int | None

Конечная точка диапазона (не включая) или None. Может быть None только если start также None.

length: int | None

Длина диапазона или None.

set(start, stop, length=None, units='bytes')

Простой метод для обновления диапазонов.

Параметры:
  • start (int | None)
  • stop (int | None)
  • length (int | None)
  • units (str | None)
Тип возвращаемого значения:

None

unset()

Устанавливает единицы измерения в None, что указывает на то, что заголовок больше не должен использоваться.

Тип возвращаемого значения:

None

Другие

class werkzeug.datastructures.FileStorage(stream=None, filename=None, name=None, content_type=None, content_length=None, headers=None)

Класс FileStorage — это тонкая оболочка над входными файлами. Он используется объектом запроса для представления загруженных файлов. Все атрибуты потока обертки проксируются файловым хранилищем, поэтому можно использовать storage.read() вместо длинной формы storage.stream.read().

Параметры:
  • stream (t.IO[байты] | None)
  • filename (строка | None)
  • name (строка | None)
  • content_type (строка | None)
  • content_length (целое число | None)
  • headers (Headers | None)
stream

Поток ввода загруженного файла. Обычно указывает на открытый временный файл.

filename

Имя файла на стороне клиента. Может быть str, или экземпляром os.PathLike.

name

Имя поля формы.

headers

Заголовки multipart в виде объекта Headers. Обычно содержит неактуальную информацию, но в сочетании с пользовательскими multipart запросами, исходные заголовки могут быть интересными.

Changelog

Добавлен в версии 0.6.

property content_type: str | None

Тип содержимого, отправленный в заголовке. Обычно недоступен.

property content_length: int

Длина содержимого, отправленная в заголовке. Обычно недоступна.

property mimetype: str

Аналогично content_type, но без параметров (например, без charset, type и т. д.) и всегда в нижнем регистре. Например, если тип содержимого text/HTML; charset=utf-8, то mimetype будет 'text/html'.

Changelog

Добавлен в версии 0.7.

property mimetype_params: dict[str, str]

Параметры mimetype в виде словаря. Например, если тип содержимого text/html; charset=utf-8, то параметры будут {'charset': 'utf-8'}.

Changelog

Добавлен в версии 0.7.

save(dst, buffer_size=16384)

Сохранить файл в целевой путь или объект файла. Если целевой объект является объектом файла, вы должны закрыть его самостоятельно после вызова. Размер буфера — это количество байтов, хранящихся в памяти во время процесса копирования. По умолчанию он равен 16 КБ.

Для безопасного сохранения файла см. также secure_filename().

Параметры:
  • dst (строка | PathLike[строка] | IO[байты]) – имя файла, os.PathLike или открытый объект файла для записи.
  • buffer_size (целое число) – Передается как параметр length функции shutil.copyfileobj().
Тип возвращаемого значения:

None

Changelog

Изменено в версии 1.0: Поддерживает pathlib.

close()

Закрыть базовый файл, если это возможно.

Тип возвращаемого значения:

None

© 2007 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/latest/datastructures/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API