本文由 大侠(AhcaoZhu)原创,转载请声明。
链接: https://blog.csdn.net/Ahcao2008
一图看懂 itsdangerous 模块:将受信任的数据传递到不受信任的环境的帮助工具,资料整理+笔记(大全)
- 🧊摘要
- 🧊模块图
- 🧊类关系图
- 🧊模块全展开
- ☘️【itsdangerous】
- 🔵统计
- 🔵模块
- 🌿1 itsdangerous.exc
- 🌿2 itsdangerous.encoding
- 🌿3 itsdangerous.signer
- 🌿4 itsdangerous.serializer
- 🌿5 itsdangerous.timed
- 🌿6 itsdangerous._json
- 🌿7 itsdangerous.url_safe
- 🔵函数
- 🌿8 base64_decode(string: Union[str, bytes]) -> bytes
- 🌿9 base64_encode(string: Union[str, bytes]) -> bytes
- 🌿10 want_bytes(s: Union[str, bytes], encoding: str = 'utf-8', errors: str = 'strict') -> bytes
- 🔵类
- 🌿11 itsdangerous.exc.BadData
- 🌿12 itsdangerous.exc.BadHeader
- 🌿13 itsdangerous.exc.BadPayload
- 🌿14 itsdangerous.exc.BadSignature
- 🌿15 itsdangerous.exc.BadTimeSignature
- 🌿16 itsdangerous.exc.SignatureExpired
- 🌿17 itsdangerous.serializer.Serializer
- data
- property
- method
- 5 dump(self, obj: _t.Any, f: _t.IO, salt: _t_opt_str_bytes = None) -> None:
- 6 dump_payload(self, obj: _t.Any) -> bytes:
- 7 dumps(self, obj: _t.Any, salt: _t_opt_str_bytes = None) -> _t_str_bytes:
- 8 iter_unsigners(self, salt: _t_opt_str_bytes = None) -> _t.Iterator[Signer]:
- 9 load(self, f: _t.IO, salt: _t_opt_str_bytes = None) -> _t.Any:
- 10 load_payload(
- 11 load_unsafe(self, f: _t.IO, salt: _t_opt_str_bytes = None) -> _t_load_unsafe:
- 12 loads(
- 13 loads_unsafe(
- 14 make_signer(self, salt: _t_opt_str_bytes = None) -> Signer:
- 🌿18 itsdangerous.signer.HMACAlgorithm
- method
- 1 get_signature(self, key: bytes, value: bytes) -> bytes:
- static method
- 2 default_digest_method()
- 🌿19 itsdangerous.signer.NoneAlgorithm
- method
- 1 get_signature(self, key: bytes, value: bytes) -> bytes:
- 🌿20 itsdangerous.signer.Signer
- data
- property
- method
- 3 derive_key(self, secret_key: _t_opt_str_bytes = None) -> bytes:
- 4 get_signature(self, value: _t_str_bytes) -> bytes:
- 5 sign(self, value: _t_str_bytes) -> bytes:
- 6 unsign(self, signed_value: _t_str_bytes) -> bytes:
- 7 validate(self, signed_value: _t_str_bytes) -> bool:
- 8 verify_signature(self, value: _t_str_bytes, sig: _t_str_bytes) -> bool:
- static method
- 9 default_digest_method()
- 🌿21 itsdangerous.timed.TimedSerializer
- data
- method
- 2 iter_unsigners(
- 3 loads(
- 4 loads_unsafe(
- 🌿22 itsdangerous.timed.TimestampSigner
- method
- 1 get_timestamp(self) -> int:
- 2 sign(self, value: _t_str_bytes) -> bytes:
- 3 timestamp_to_datetime(self, ts: int) -> datetime:
- 4 unsign(
- 5 validate(self, signed_value: _t_str_bytes, max_age: _t_opt_int = None) -> bool:
- 🌿23 itsdangerous.url_safe.URLSafeSerializer
- 🌿24 itsdangerous.url_safe.URLSafeTimedSerializer
- 🔵私有或局部
- ☘️【itsdangerous.exc】
- ☘️【itsdangerous.encoding】
- ☘️【itsdangerous.signer】
- ☘️【itsdangerous.serializer】
- ☘️【itsdangerous.timed】
- ☘️【itsdangerous._json】
- ☘️【itsdangerous.url_safe】
- ☘️【typing】
- ☘️【base64】
- ☘️【string】
- ☘️【struct】
- ☘️【hashlib】
- ☘️【hmac】
- ☘️【json】
- ☘️【time】
- ☘️【zlib】
🧊摘要
- 全文介绍python的 itsdangerous 模块(将受信任的数据传递到不受信任的环境的帮助工具)、函数、类及类的方法和属性。
- 它通过代码抓取并经AI智能翻译和人工校对。
- 是一部不可多得的权威字典类工具书。它是系列集的一部分。后续陆续发布、敬请关注。【原创:AhcaoZhu大侠】
🧊模块图
itsdangerous
itsdangerous.exc
itsdangerous.encoding
◆base64
itsdangerous.signer
◆hmac
itsdangerous.serializer
itsdangerous.timed
itsdangerous._json
itsdangerous.url_safe
🧊类关系图
◆object
◆BaseException
◆Exception
itsdangerous.exc.BadData
itsdangerous.exc.BadPayload
itsdangerous.exc.BadSignature
itsdangerous.exc.BadHeader
itsdangerous.exc.BadTimeSignature
itsdangerous.exc.SignatureExpired
itsdangerous._json._CompactJSON
itsdangerous.serializer.Serializer
itsdangerous.timed.TimedSerializer
itsdangerous.url_safe.URLSafeSerializerMixin
itsdangerous.url_safe.URLSafeSerializer
itsdangerous.url_safe.URLSafeTimedSerializer
itsdangerous.url_safe.URLSafeSerializerMixin
itsdangerous.signer.Signer
itsdangerous.timed.TimestampSigner
itsdangerous.signer.SigningAlgorithm
itsdangerous.signer.HMACAlgorithm
itsdangerous.signer.NoneAlgorithm
🧊模块全展开
☘️【itsdangerous】
itsdangerous, fullname=itsdangerous, file=itsdangerous_init_.py
🔵统计
序号 | 类别 | 数量 |
---|---|---|
4 | str | 5 |
6 | list | 1 |
8 | dict | 1 |
9 | module | 7 |
10 | class | 14 |
11 | function | 3 |
13 | residual | 3 |
14 | system | 10 |
15 | private | 1 |
16 | all | 34 |
🔵模块
🌿1 itsdangerous.exc
exc, fullname=itsdangerous.exc, file=itsdangerous\exc.py
🌿2 itsdangerous.encoding
encoding, fullname=itsdangerous.encoding, file=itsdangerous\encoding.py
🌿3 itsdangerous.signer
signer, fullname=itsdangerous.signer, file=itsdangerous\signer.py
🌿4 itsdangerous.serializer
serializer, fullname=itsdangerous.serializer, file=itsdangerous\serializer.py
🌿5 itsdangerous.timed
timed, fullname=itsdangerous.timed, file=itsdangerous\timed.py
🌿6 itsdangerous._json
_json, fullname=itsdangerous._json, file=itsdangerous_json.py
🌿7 itsdangerous.url_safe
url_safe, fullname=itsdangerous.url_safe, file=itsdangerous\url_safe.py
🔵函数
🌿8 base64_decode(string: Union[str, bytes]) -> bytes
base64_decode(string: Union[str, bytes]) -> bytes, module=itsdangerous.encoding, line:28 at site-packages\itsdangerous\encoding.py
Base64解码url安全的字节或文本字符串。结果是字节。
🌿9 base64_encode(string: Union[str, bytes]) -> bytes
base64_encode(string: Union[str, bytes]) -> bytes, module=itsdangerous.encoding, line:20 at site-packages\itsdangerous\encoding.py
Base64编码一串字节或文本。生成的字节可以安全地用于url。
🌿10 want_bytes(s: Union[str, bytes], encoding: str = ‘utf-8’, errors: str = ‘strict’) -> bytes
want_bytes(s: Union[str, bytes], encoding: str = ‘utf-8’, errors: str = ‘strict’) -> bytes, module=itsdangerous.encoding, line:11 at site-packages\itsdangerous\encoding.py
🔵类
🌿11 itsdangerous.exc.BadData
BadData, itsdangerous.exc.BadData, module=itsdangerous.exc, line:8 at site-packages\itsdangerous\exc.py
如果遇到任何类型的坏数据将被引发。
这是ItsDangerous定义的所有异常的基础。
版本: 0.15
🌿12 itsdangerous.exc.BadHeader
BadHeader, itsdangerous.exc.BadHeader, module=itsdangerous.exc, line:67 at site-packages\itsdangerous\exc.py
如果带符号的标头在某种形式下无效,将被引发。
这只会发生在带有签名头的序列化器上。
版本: 0.24
🌿13 itsdangerous.exc.BadPayload
BadPayload, itsdangerous.exc.BadPayload, module=itsdangerous.exc, line:93 at site-packages\itsdangerous\exc.py
如果有效载荷无效将被引发。
如果在无效签名的情况下加载了有效负载,或者序列化器和反序列化器之间不匹配,则可能发生这种情况。
在加载过程中发生的原始异常被存储为 :attr:`original_error`。
版本: 0.15
🌿14 itsdangerous.exc.BadSignature
BadSignature, itsdangerous.exc.BadSignature, module=itsdangerous.exc, line:23 at site-packages\itsdangerous\exc.py
如果签名不匹配将被引发。
🌿15 itsdangerous.exc.BadTimeSignature
BadTimeSignature, itsdangerous.exc.BadTimeSignature, module=itsdangerous.exc, line:37 at site-packages\itsdangerous\exc.py
如果基于时间的签名无效将被引发。这是 :class:`BadSignature` 的子类。
🌿16 itsdangerous.exc.SignatureExpired
SignatureExpired, itsdangerous.exc.SignatureExpired, module=itsdangerous.exc, line:61 at site-packages\itsdangerous\exc.py
如果签名时间戳大于 ``max_age`` 将被引发。这是 :exc:`BadTimeSignature` 的子类。
🌿17 itsdangerous.serializer.Serializer
Serializer, itsdangerous.serializer.Serializer, module=itsdangerous.serializer, line:25 at site-packages\itsdangerous\serializer.py
序列化器包装一个 :class:`~itsdangerous.signer.Signer`。
启用序列化和安全地签名字节以外的数据。它可以取消签名以验证数据没有被更改。
序列化器提供 :meth:`dumps` 和 :meth:`loads`,类似于 :mod:`json`,默认情况下在内部使用 :mod:`json`将数据序列化为字节。
密钥应该是一个随机的“字节”字符串,不应该保存到代码或版本控制中。在不同的语境中,应该使用不同的盐来区分手语。
有关密钥和salt的安全性的信息,请参阅 :doc:`/concepts`。
:param secret_key: 签名和验证的秘钥。可以是一个键列表,从旧的到最新的,支持键轮换。
:param salt: 与 ``secret_key`` 组合的额外密钥,以区分不同上下文中的签名。
:param serializer: 一个对象,提供 ``dumps`` 和 ``loads``方法,用于将数据序列化为字符串。默认为 :attr:`default_serializer`, 默认为 :mod:`json`。
:param serializer_kwargs: 调用``serializer.dumps``时要传递的关键字参数。
:param signer: 一个 ``Signer``类, 在签名数据时要实例化的。默认为:`default_signer`, 默认为:class:`~itsdangerous.signer.Signer`。
:param signer_kwargs: 实例化``Signer``类时要传递的关键字参数。
:param fallback_signers: 使用默认签名者取消签名失败时要尝试的签名者参数列表。每个项可以是 ``signer_kwargs``, 一个类,或列表``(signer, signer_kwargs)``.默认为:attr:`default_fallback_signers`。
版本: 2.0
增加了通过传递一个列表给``secret_key``
版本: 2.0
从``default_fallback_signers``中删除了默认的SHA-512回退签名人。
版本: 1.1
增加了对 ``fallback_signers`` 的支持,并配置了默认的SHA-512回退。这个后退是为使用1.0.0版本的用户提供的,该版本默认为SHA-512。
版本: 0.14
``signer`` 和 ``signer_kwargs`` 参数被添加到构造函数中。
data
1 default_fallback_signers=[] kind:data type:list class:<class ‘itsdangerous.serializer.Serializer’>
2 default_serializer=<module ‘json’ from ‘…\lib\json\init.py’> kind:data type:module class:<class ‘itsdangerous.serializer.Serializer’>
3 default_signer=<class ‘itsdangerous.signer.Signer’> kind:data type:type class:<class ‘itsdangerous.serializer.Serializer’>
property
4 secret_key=<property object at 0x0000020CD8357138> kind:property type:property class:<class ‘itsdangerous.serializer.Serializer’>
method
5 dump(self, obj: _t.Any, f: _t.IO, salt: _t_opt_str_bytes = None) -> None:
kind=method class=Serializer objtype=function line:215 at …\lib\site-packages\itsdangerous\serializer.py
比如:meth:`dumps`,但是转储到一个文件中。文件句柄必须与内部序列化器所期望的兼容。
6 dump_payload(self, obj: _t.Any) -> bytes:
kind=method class=Serializer objtype=function line:164 at …\lib\site-packages\itsdangerous\serializer.py
转储已编码的对象。返回值总是字节。如果内部序列化器返回文本,则该值将被编码为UTF-8。
7 dumps(self, obj: _t.Any, salt: _t_opt_str_bytes = None) -> _t_str_bytes:
kind=method class=Serializer objtype=function line:202 at …\lib\site-packages\itsdangerous\serializer.py
返回用内部序列化器序列化的带符号字符串。
返回值可以是字节或unicode字符串,具体取决于内部序列化器的格式。
8 iter_unsigners(self, salt: _t_opt_str_bytes = None) -> _t.Iterator[Signer]:
kind=method class=Serializer objtype=function line:180 at …\lib\site-packages\itsdangerous\serializer.py
遍历要尝试取消签名的所有签名者。
从配置的签名者开始,然后构造 ``fallback_signers`` 中指定的每个签名者。
9 load(self, f: _t.IO, salt: _t_opt_str_bytes = None) -> _t.Any:
kind=method class=Serializer objtype=function line:238 at …\lib\site-packages\itsdangerous\serializer.py
像 :meth:`loads` 一样,但是是从文件加载的。
10 load_payload(
kind=method class=Serializer objtype=function line:137 at …\lib\site-packages\itsdangerous\serializer.py
加载已编码的对象。
这个函数引发 :class:`.BadPayload`,如果有效载荷无效。
``serializer``参数可用于覆盖存储在类上的序列化器。编码的``payload``应该始终是字节。
11 load_unsafe(self, f: _t.IO, salt: _t_opt_str_bytes = None) -> _t_load_unsafe:
kind=method class=Serializer objtype=function line:290 at …\lib\site-packages\itsdangerous\serializer.py
比如 :meth:`loads_unsafe` ,但从文件加载。
版本: 0.15
12 loads(
kind=method class=Serializer objtype=function line:221 at …\lib\site-packages\itsdangerous\serializer.py
与 :meth:`dumps` 相反。
如果签名验证失败,则为抛出 :exc:`.BadSignature` 。
13 loads_unsafe(
kind=method class=Serializer objtype=function line:242 at …\lib\site-packages\itsdangerous\serializer.py
类似于 :meth:`loads` ,但不验证签名。根据序列化器的工作方式,使用这种方法可能非常危险。
返回值是``(signature_valid, payload)``而不仅仅是有效载荷。第一项将是一个布尔值,指示签名是否有效。
这个函数永远不会失败。如果你知道你的序列化器模块是不可利用的(例如,不要将它与pickle序列化器一起使用),则只能将其用于调试。
版本: 0.15
14 make_signer(self, salt: _t_opt_str_bytes = None) -> Signer:
kind=method class=Serializer objtype=function line:171 at …\lib\site-packages\itsdangerous\serializer.py
创建要使用的签名器的新实例。
默认实现使用 :class:`.Signer` 基类。
🌿18 itsdangerous.signer.HMACAlgorithm
HMACAlgorithm, itsdangerous.signer.HMACAlgorithm, module=itsdangerous.signer, line:41 at site-packages\itsdangerous\signer.py
提供hmac签名生成功能。
method
1 get_signature(self, key: bytes, value: bytes) -> bytes:
kind=method class=HMACAlgorithm objtype=function line:55 at …\lib\site-packages\itsdangerous\signer.py
static method
2 default_digest_method()
kind=static method class=HMACAlgorithm objtype=staticmethod
staticmethod(function) -> method将函数转换为静态方法。
🌿19 itsdangerous.signer.NoneAlgorithm
NoneAlgorithm, itsdangerous.signer.NoneAlgorithm, module=itsdangerous.signer, line:32 at site-packages\itsdangerous\signer.py
提供不执行任何签名并返回空签名的算法。
method
1 get_signature(self, key: bytes, value: bytes) -> bytes:
kind=method class=NoneAlgorithm objtype=function line:37 at …\lib\site-packages\itsdangerous\signer.py
🌿20 itsdangerous.signer.Signer
Signer, itsdangerous.signer.Signer, module=itsdangerous.signer, line:67 at site-packages\itsdangerous\signer.py
签名者对字节进行安全签名,然后取消签名以验证值未被更改。
密钥应该是一个随机的“字节”字符串,不应该保存到代码或版本控制中。
在不同的语境中,应该使用不同的盐来区分上下文。有关密钥和盐的安全性的信息,请参阅 :doc:`/concepts`。
:参数secret key:
:param secret_key: 签名和验证的秘钥。可以是一个键列表,从旧的到最新的,支持键轮换。
:param salt: 与 ``secret_key`` 组合的额外密钥,以区分不同上下文中的签名。
:param sep: 签名与值之间的分隔符
:param key_derivation: 如何从密钥和盐中派生签名密钥。可能的值是 ``concat``, ``django-concat`` 或 ``hmac``。
默认为 :attr:`default_key_derivation`, 默认为 ``django-concat``。
:param digest_method: 生成HMAC签名时使用的哈希函数。默认为 :attr:`default_digest_method`, 默认为 :func:`hashlib.sha1`.
请注意,在HMAC中间使用散列时,单独使用散列的安全性并不适用。
:param algorithm: 一个实例 :class:`SigningAlgorithm` 来代替用``digest_method方法``构建一个默认的 :class:`HMACAlgorithm`。
版本: 2.0
通过传递一个列表给 ``secret_key``增加了对键轮换的支持。
版本: 0.18
``algorithm`` 被添加为类构造函数的参数。
版本: 0.14
``key_derivation`` 和 ``digest_method`` 被添加为类构造函数的参数。
data
1 default_key_derivation=django-concat kind:data type:str class:<class ‘itsdangerous.signer.Signer’>
property
2 secret_key=<property object at 0x0000020CD8352BD8> kind:property type:property class:<class ‘itsdangerous.signer.Signer’>
method
3 derive_key(self, secret_key: _t_opt_str_bytes = None) -> bytes:
kind=method class=Signer objtype=function line:173 at …\lib\site-packages\itsdangerous\signer.py
调用此方法来派生密钥。
这里可以覆盖默认的键派生选择。
密钥派生不打算用作从短密码中生成复杂密钥的安全方法。
相反,您应该使用大型随机密钥。
:param secret_key: 要派生的特定密钥。默认为 :attr:`secret_keys`。
版本: 2.0
增加了 ``secret_key`` 参数。
4 get_signature(self, value: _t_str_bytes) -> bytes:
kind=method class=Signer objtype=function line:206 at …\lib\site-packages\itsdangerous\signer.py
返回给定值的签名。
5 sign(self, value: _t_str_bytes) -> bytes:
kind=method class=Signer objtype=function line:213 at …\lib\site-packages\itsdangerous\signer.py
给给定字符串加符号。
6 unsign(self, signed_value: _t_str_bytes) -> bytes:
kind=method class=Signer objtype=function line:235 at …\lib\site-packages\itsdangerous\signer.py
取消给定字符串的符号。
7 validate(self, signed_value: _t_str_bytes) -> bool:
kind=method class=Signer objtype=function line:249 at …\lib\site-packages\itsdangerous\signer.py
仅验证给定的带符号值。如果签名存在并且有效,则返回``True``。
8 verify_signature(self, value: _t_str_bytes, sig: _t_str_bytes) -> bool:
kind=method class=Signer objtype=function line:218 at …\lib\site-packages\itsdangerous\signer.py
验证给定值的签名。
static method
9 default_digest_method()
kind=static method class=Signer objtype=staticmethod
staticmethod(function) -> method将函数转换为静态方法。
🌿21 itsdangerous.timed.TimedSerializer
TimedSerializer, itsdangerous.timed.TimedSerializer, module=itsdangerous.timed, line:176 at site-packages\itsdangerous\timed.py
用法 :class:`TimestampSigner`代替默认的 :class:`.Signer`。
data
1 default_signer=<class ‘itsdangerous.timed.TimestampSigner’> kind:data type:type class:<class ‘itsdangerous.timed.TimedSerializer’>
method
2 iter_unsigners(
kind=method class=TimedSerializer objtype=function line:183 at …\lib\site-packages\itsdangerous\timed.py
3 loads(
kind=method class=TimedSerializer objtype=function line:191 at …\lib\site-packages\itsdangerous\timed.py
与 :meth:`dumps`相反,引发 :exc:`.BadSignature`,如果签名验证失败。
如果提供了``max_age`` ,它将确保签名不会超过该时间(以秒为单位)。
如果签名过期,引发:exc:`.SignatureExpired`。所有参数都转发给签名者的 :meth:`~TimestampSigner.unsign` 方法。
4 loads_unsafe(
kind=method class=TimedSerializer objtype=function line:228 at …\lib\site-packages\itsdangerous\timed.py
🌿22 itsdangerous.timed.TimestampSigner
TimestampSigner, itsdangerous.timed.TimestampSigner, module=itsdangerous.timed, line:26 at site-packages\itsdangerous\timed.py
像常规的:class:`.Signer`一样工作,还记录了签名的时间,并可用于使签名过期。
:meth:`unsign`方法可以引发:exc:`.SignatureExpired`。
如果由于签名过期而取消签名失败。
method
1 get_timestamp(self) -> int:
kind=method class=TimestampSigner objtype=function line:33 at …\lib\site-packages\itsdangerous\timed.py
返回当前时间戳。函数必须返回一个整数。
2 sign(self, value: _t_str_bytes) -> bytes:
kind=method class=TimestampSigner objtype=function line:49 at …\lib\site-packages\itsdangerous\timed.py
对给定字符串进行签名,并附加时间信息。
3 timestamp_to_datetime(self, ts: int) -> datetime:
kind=method class=TimestampSigner objtype=function line:39 at …\lib\site-packages\itsdangerous\timed.py
将时间戳从:meth:`get_timestamp`转换为一个:class`datetime.datetime`。
版本: 2.0
时间戳返回为UTC的时区感知 ``datetime``,而不是假定为UTC的 ``datetime``。
4 unsign(
kind=method class=TimestampSigner objtype=function line:61 at …\lib\site-packages\itsdangerous\timed.py
就像普通的:meth:`.Signer.unsign`,但也可以验证时间。有关一般行为,请参阅类的基文档字符串。
如果``return timestamp``为``True``,签名的时间戳将作为一个 :class:`datetime.datetime`返回。
版本: 2.0
时间戳返回为UTC的时区感知 ``datetime``,而不是假定为UTC的 ``datetime``。
5 validate(self, signed_value: _t_str_bytes, max_age: _t_opt_int = None) -> bool:
kind=method class=TimestampSigner objtype=function line:166 at …\lib\site-packages\itsdangerous\timed.py
仅验证给定的带符号值。如果签名存在并且有效,则返回``True``。
🌿23 itsdangerous.url_safe.URLSafeSerializer
URLSafeSerializer, itsdangerous.url_safe.URLSafeSerializer, module=itsdangerous.url_safe, line:12 at site-packages\itsdangerous\url_safe.py
类似于 :class:`.Serializer`,但转储并加载到一个URL安全字符串,该字符串由字母的大小写字符以及``'_'``, ``'-'`` 和 ``'.'``组成。
🌿24 itsdangerous.url_safe.URLSafeTimedSerializer
URLSafeTimedSerializer, itsdangerous.url_safe.URLSafeTimedSerializer, module=itsdangerous.url_safe, line:76 at site-packages\itsdangerous\url_safe.py
类似于 :class:`.TimedSerializer`,但会将其转储并加载到URL安全字符串中,该字符串由字母的大小写字符以及``'_'``, ``'-'`` 和 ``'.'``组成。
🔵私有或局部
25 _json <module ‘itsdangerous._json’ from ‘…\lib\site-packages\itsdangerous\_json.py’>
☘️【itsdangerous.exc】
exc, fullname=itsdangerous.exc, file=itsdangerous\exc.py
☘️【itsdangerous.encoding】
encoding, fullname=itsdangerous.encoding, file=itsdangerous\encoding.py
☘️【itsdangerous.signer】
signer, fullname=itsdangerous.signer, file=itsdangerous\signer.py
☘️【itsdangerous.serializer】
serializer, fullname=itsdangerous.serializer, file=itsdangerous\serializer.py
☘️【itsdangerous.timed】
timed, fullname=itsdangerous.timed, file=itsdangerous\timed.py
☘️【itsdangerous._json】
_json, fullname=itsdangerous._json, file=itsdangerous_json.py
☘️【itsdangerous.url_safe】
url_safe, fullname=itsdangerous.url_safe, file=itsdangerous\url_safe.py
☘️【typing】
typing, fullname=typing, file=typing.py
☘️【base64】
base64, fullname=base64, file=base64.py
☘️【string】
string, fullname=string, file=string.py
☘️【struct】
struct, fullname=struct, file=struct.py
☘️【hashlib】
hashlib, fullname=hashlib, file=hashlib.py
☘️【hmac】
hmac, fullname=hmac, file=hmac.py
☘️【json】
json, fullname=json, file=json_init_.py
☘️【time】
time, fullname=time
☘️【zlib】
zlib, fullname=zlib