A Python library that supplies runtime-checkable, fully parameterized, and well-documented protocols for nearly all dunder methods/attributes.
Project description
Install
$ pip install supportsx
Description
A Python library that supplies runtime-checkable, fully parameterized, and well-documented protocols for nearly all dunder methods/attributes.
The goal of this library is to expand what is already available in the typing standard library and _typeshed library, as well as add a number of common union protocols. The full list of available protocols can be found in the documentation section.
Example
from typing import Any
import supportsx
def foo(
value: supportsx.add[Any, int],
ctm: supportsx.u.ctx_mngr
) -> None:
with ctm:
print(value + 1)
from typing import Any
from supportsx import *
def foo(
value: SupportsAdd[Any, int],
ctm: SupportsContextManager
) -> None:
with ctm:
print(value + 1)
As shown above, there are two ways of referencing each protocol. The preferred method is the one shown first (i.e. supportsx.* for primary protocols and supportsx.u.* for union protocols), as it helps keep the global namespace clear (although at the end of the day, it is up to you).
Documentation
Available Protocols
Below is an exhaustive list all available protocols, which methods/attributes they represent, and the available parameters:
Primary protocols
| Protocol | Method/Attribute | Parameter Order | Parameter Form |
|---|---|---|---|
supportsx.abssupportsx.SupportsAbs |
__abs__ |
[_T_co] |
() -> _T_co |
supportsx.addsupportsx.SupportsAdd |
__add__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.aentersupportsx.SupportsAEnter |
__aenter__ |
[_T_co] |
() -> Awaitable[_T_co] |
supportsx.aexitsupportsx.SupportsAExit |
__aexit__ |
(Type[BaseException] | None, BaseException | None, TracebackType | None) -> Awaitable[None] |
|
supportsx.aitersupportsx.SupportsAIter |
__aiter__ |
[_T_co] |
() -> AsyncIterator[_T_co] |
supportsx.and_supportsx.SupportsAnd |
__and__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.anextsupportsx.SupportsANext |
__anext__ |
[_T_co] |
() -> Awaitable[_T_co] |
supportsx.await_supportsx.SupportsAwait |
__await__ |
[_T_co] |
() -> Iterator[_T_co] |
supportsx.boolsupportsx.SupportsBool |
__bool__ |
() -> bool |
|
supportsx.buffersupportsx.SupportsBuffer |
__buffer__ |
(int) -> memoryview |
|
supportsx.bytessupportsx.SupportsBytes |
__bytes__ |
() -> bytes |
|
supportsx.callsupportsx.SupportsCall |
__call__ |
[_P, _T_co] |
(_P) -> _T_co |
supportsx.ceilsupportsx.SupportsCeil |
__ceil__ |
() -> Integral |
|
supportsx.complexsupportsx.SupportsComplex |
__complex__ |
() -> complex |
|
supportsx.containssupportsx.SupportsContains |
__contains__ |
[_T_contra] |
(_T_contra) -> bool |
supportsx.deletesupportsx.SupportsDelete |
__delete__ |
[_T_contra] |
(_T_contra) -> None |
supportsx.delitemsupportsx.SupportsDelItem |
__delitem__ |
[_T_contra] |
(_T_contra) -> None |
supportsx.divmodsupportsx.SupportsDivMod |
__divmod__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.entersupportsx.SupportsEnter |
__enter__ |
[_T_co] |
() -> _T_co |
supportsx.exitsupportsx.SupportsExit |
__exit__ |
(Type[BaseException] | None, BaseException | None, TracebackType | None) -> None |
|
supportsx.floatsupportsx.SupportsFloat |
__float__ |
() -> float |
|
supportsx.floorsupportsx.SupportsFloor |
__floor__ |
() -> Integral |
|
supportsx.floordivsupportsx.SupportsFloorDiv |
__floordiv__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.gesupportsx.SupportsGE |
__ge__ |
[_T_contra] |
(_T_contra) -> bool |
supportsx.getsupportsx.SupportsGet |
__get__ |
[_T_contra, _T_co] |
(_T_contra | None, Type[_T_contra] | None = None) -> _T_co |
supportsx.getattrsupportsx.SupportsGetAttr |
__getattr__ |
[_T_co] |
(str) -> _T_co |
supportsx.getitemsupportsx.SupportsGetItem |
__getitem__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.gtsupportsx.SupportsGT |
__gt__ |
[_T_contra] |
(_T_contra) -> bool |
supportsx.iaddsupportsx.SupportsIAdd |
__iadd__ |
[_T_contra] |
(_T_contra) -> None |
supportsx.iandsupportsx.SupportsIAnd |
__iand__ |
[_T_contra] |
(_T_contra) -> None |
supportsx.ifloordivsupportsx.SupportsIFloorDiv |
__ifloordiv__ |
[_T_contra] |
(_T_contra) -> None |
supportsx.ilshiftsupportsx.SupportsILShift |
__ilshift__ |
[_T_contra] |
(_T_contra) -> None |
supportsx.imatmulsupportsx.SupportsIMatMul |
__imatmul__ |
[_T_contra] |
(_T_contra) -> None |
supportsx.imodsupportsx.SupportsIMod |
__imod__ |
[_T_contra] |
(_T_contra) -> None |
supportsx.imulsupportsx.SupportsIMul |
__imul__ |
[_T_contra] |
(_T_contra) -> None |
supportsx.indexsupportsx.SupportsIndex |
__index__ |
() -> int |
|
supportsx.intsupportsx.SupportsInt |
__int__ |
() -> int |
|
supportsx.invertsupportsx.SupportsInvert |
__invert__ |
[_T_co] |
() -> _T_co |
supportsx.iorsupportsx.SupportsIOr |
__ior__ |
[_T_contra] |
(_T_contra) -> None |
supportsx.ipowsupportsx.SupportsIPow |
__ipow__ |
[_T_contra, _T2_contra] |
(_T_contra, _T2_contra | None = None) -> None |
supportsx.irshiftsupportsx.SupportsIRShift |
__irshift__ |
[_T_contra] |
(_T_contra) -> None |
supportsx.isubsupportsx.SupportsISub |
__isub__ |
[_T_contra] |
(_T_contra) -> None |
supportsx.itersupportsx.SupportsIter |
__iter__ |
[_T_co] |
() -> Iterator[_T_co] |
supportsx.itruedivsupportsx.SupportsITrueDiv |
__itruediv__ |
[_T_contra] |
(_T_contra) -> None |
supportsx.ixorsupportsx.SupportsIXor |
__ixor__ |
[_T_contra] |
(_T_contra) -> None |
supportsx.lesupportsx.SupportsLE |
__le__ |
[_T_contra] |
(_T_contra) -> bool |
supportsx.lensupportsx.SupportsLen |
__len__ |
() -> int |
|
supportsx.length_hintsupportsx.SupportsLengthHint |
__length_hint__ |
() -> int |
|
supportsx.lshiftsupportsx.SupportsLShift |
__lshift__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.ltsupportsx.SupportsLT |
__lt__ |
[_T_contra] |
(_T_contra) -> bool |
supportsx.match_argssupportsx.SupportsMatchArgs |
__match_args__ |
() -> Sequence[str] |
|
supportsx.matmulsupportsx.SupportsMatMul |
__matmul__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.missingsupportsx.SupportsMissing |
__missing__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.modsupportsx.SupportsMod |
__mod__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.mro_entriessupportsx.SupportsMroEntries |
__mro_entries__ |
[_T] |
(Sequence[_T]) -> Sequence[_T] |
supportsx.mulsupportsx.SupportsMul |
__mul__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.negsupportsx.SupportsNeg |
__neg__ |
[_T_co] |
() -> _T_co |
supportsx.nextsupportsx.SupportsNext |
__next__ |
[_T_co] |
() -> _T_co |
supportsx.objclasssupportsx.SupportsObjClass |
__objclass__ |
[_T_co] |
() -> Type[_T_co] |
supportsx.or_supportsx.SupportsOr |
__or__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.possupportsx.SupportsPos |
__pos__ |
[_T_co] |
() -> _T_co |
supportsx.post_initsupportsx.SupportsPostInit |
__post_init__ |
[_P] |
(_P) -> None |
supportsx.powsupportsx.SupportsPow |
__pow__ |
[_T_contra, _T2_contra, _T_co] |
(_T_contra, _T2_contra | None = None) -> _T_co |
supportsx.raddsupportsx.SupportsRAdd |
__radd__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.randsupportsx.SupportsRAnd |
__rand__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.rdivmodsupportsx.SupportsRDivMod |
__rdivmod__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.release_buffersupportsx.SupportsReleaseBuffer |
__release_buffer__ |
(memoryview) -> None |
|
supportsx.reversedsupportsx.SupportsReversed |
__reversed__ |
[_T_co] |
() -> Iterator[_T_co] |
supportsx.rfloordivsupportsx.SupportsRFloorDiv |
__rfloordiv__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.rlshiftsupportsx.SupportsRLShift |
__rlshift__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.rmatmulsupportsx.SupportsRMatMul |
__rmatmul__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.rmodsupportsx.SupportsRMod |
__rmod__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.rmulsupportsx.SupportsRMul |
__rmul__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.rorsupportsx.SupportsROr |
__ror__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.roundsupportsx.SupportsRound |
__round__ |
[_T_co, _T2_co] |
() -> _T_co, (int) -> _T2_co |
supportsx.rpowsupportsx.SupportsRPow |
__rpow__ |
[_T_contra, _T2_contra, _T_co] |
(_T_contra, _T2_contra | None = None) -> _T_co |
supportsx.rrshiftsupportsx.SupportsRRShift |
__rrshift__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.rshiftsupportsx.SupportsRShift |
__rshift__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.rsubsupportsx.SupportsRSub |
__rsub__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.rtruedivsupportsx.SupportsRTrueDiv |
__rtruediv__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.rxorsupportsx.SupportsRXor |
__rxor__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.setsupportsx.SupportsSet |
__set__ |
[_T_contra, _T2_contra] |
(_T_contra, _T2_contra) -> None |
supportsx.setitemsupportsx.SupportsSetItem |
__setitem__ |
[_T_contra, _T2_contra] |
(_T_contra, _T2_contra) -> None |
supportsx.set_namesupportsx.SupportsSetName |
__set_name__ |
[_T_contra] |
(Type[_T_contra], str) -> None |
supportsx.subsupportsx.SupportsSub |
__sub__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.truedivsupportsx.SupportsTrueDiv |
__truediv__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
supportsx.truncsupportsx.SupportsTrunc |
__trunc__ |
() -> Integral |
|
supportsx.xorsupportsx.SupportsXor |
__xor__ |
[_T_contra, _T_co] |
(_T_contra) -> _T_co |
Union Protocols
| Protocol | Parameters (in order) | Bases |
|---|---|---|
supportsx.u.actx_mngrsupportsx.SupportsAsyncContextManagersupportsx.u.SupportsAsyncContextManager |
[_T_co] |
SupportsAEnter[_T_co]SupportsAExit |
supportsx.u.bitopssupportsx.SupportsBitwiseOpssupportsx.u.SupportsBitwiseOps |
[_T_contra, _T_co] |
SupportsAnd[_T_contra, _T_co]SupportsLShift[_T_contra, _T_co]SupportsOr[_T_contra, _T_co]SupportsRAnd[_T_contra, _T_co]SupportsRLShift[_T_contra, _T_co]SupportsROr[_T_contra, _T_co]SupportsRRShift[_T_contra, _T_co]SupportsRShift[_T_contra, _T_co]SupportsRXor[_T_contra, _T_co]SupportsXor[_T_contra, _T_co] |
supportsx.u.cmpssupportsx.SupportsComparisonssupportsx.u.SupportsComparisons |
[_T_contra] |
SupportsGE[_T_contra]SupportsGT[_T_contra]SupportsLE[_T_contra]SupportsLT[_T_contra] |
supportsx.u.ctx_mngrsupportsx.SupportsContextManagersupportsx.u.SupportsContextManager |
[_T_co] |
SupportsEnter[_T_co]<br>SupportsExit |
supportsx.u.data_descsupportsx.SupportsDataDescriptorsupportsx.u.SupportsDataDescriptor |
[_T_contra, _T2_contra, _T_co] |
SupportsDelete[_T_contra]SupportsGet[_T_contra, _T_co]SupportsSet[_T_contra, _T2_contra] |
supportsx.u.ibitopssupportsx.SupportsIBitwiseOpssupportsx.u.SupportsIBitwiseOps |
[_T_contra] |
SupportsIAnd[_T_contra]SupportsILShift[_T_contra]SupportsIOr[_T_contra]SupportsIRShift[_T_contra]SupportsIXor[_T_contra] |
supportsx.u.imathopssupportsx.SupportsIMathOpssupportsx.u.SupportsIMathOps |
[_T_contra, _T2_contra] |
SupportsIAdd[_T_contra]SupportsIFloorDiv[_T_contra]SupportsIMod[_T_contra]SupportsIMul[_T_contra]SupportsIPow[_T_contra, _T2_contra]SupportsISub[_T_contra]SupportsITrueDiv[_T_contra] |
supportsx.u.imathops2supportsx.SupportsIMathOps2supportsx.u.SupportsIMathOps2 |
[_T_contra, _T2_contra] |
SupportsIMathOps[_T_contra, _T2_contra]SupportsIMatMul[_T_contra] |
supportsx.u.itemssupportsx.SupportsItemssupportsx.u.SupportsItems |
[_T_contra, _T2_contra, _T_co] |
SupportsDelItem[_T_contra]SupportsGetItem[_T_contra, _T_co]SupportsSetItem[_T_contra, _T2_contra] |
supportsx.u.lengthsupportsx.SupportsLengthsupportsx.u.SupportsLength |
SupportsLenSupportsLengthHint |
|
supportsx.u.math_funcssupportsx.SupportsMathFunctionssupportsx.u.SupportsMathFunctions |
[_T_contra, _T_co, _T2_co, _T3_co, _T4_co] |
SupportsAbs[_T2_co]SupportsCeilSupportsDivMod[_T_contra, _T_co]SupportsFloorSupportsRDivMod[_T_contra, _T_co]SupportsRound[_T3_co, _T4_co]SupportsTrunc |
supportsx.u.mathopssupportsx.SupportsMathOpssupportsx.u.SupportsMathOps |
[_T_contra, _T2_contra, _T_co] |
SupportsAdd[_T_contra, _T_co]SupportsFloorDiv[_T_contra, _T_co]SupportsMod[_T_contra, _T_co]SupportsMul[_T_contra, _T_co]SupportsPow[_T_contra, _T2_contra, _T_co]SupportsRAdd[_T_contra, _T_co]SupportsRFloorDiv[_T_contra, _T_co]SupportsRMod[_T_contra, _T_co]SupportsRMul[_T_contra, _T_co]SupportsRPow[_T_contra, _T2_contra, _T_co]SupportsRSub[_T_contra, _T_co]SupportsRTrueDiv[_T_contra, _T_co]SupportsSub[_T_contra, _T_co]SupportsTrueDiv[_T_contra, _T_co] |
supportsx.u.mathops2supportsx.SupportsMathOps2supportsx.u.SupportsMathOps2 |
[_T_contra, _T2_contra, _T_co] |
SupportsMathOps[_T_contra, _T2_contra, _T_co]SupportsMatMul[_T_contra, _T_co]SupportsRMatMul[_T_contra, _T_co] |
supportsx.u.type_conversionsupportsx.SupportsTypeConversionsupportsx.u.SupportsTypeConversion |
SupportsBytesSupportsComplexSupportsFloatSupportsIndexSupportsInt |
|
supportsx.u.type_conversion2supportsx.SupportsTypeConversion2supportsx.u.SupportsTypeConversion2 |
SupportsBoolSupportsTypeConversion |
|
supportsx.u.unary_opssupportsx.SupportsUnaryOpssupportsx.u.SupportsUnaryOps |
[_T_co] |
SupportsInvert[_T_co]SupportsNeg[_T_co]SupportsPos[_T_co] |
Excluded Methods and Attributes
The following methods are available on all objects, and are thus excluded:
__delattr__ |
__dir__ |
__eq__ |
__format__ |
__getattribute__ |
__getstate__ |
__hash__ |
__init__ |
__init_subclass__ |
__ne__ |
__new__ |
__reduce__ |
__reduce_ex__ |
__repr__ |
__setattr__ |
__sizeof__ |
__str__ |
__subclasshook__ |
The following methods are available on all types, and are thus excluded:
__instancecheck__ |
__prepare__ |
__subclasscheck__ |
__subclasses__ |
mro |
The following attributes are available on all types, and are thus excluded:
__base__ |
__bases__ |
__basicsize__ |
__class__ |
__dictoffset__ |
__flags__ |
__itemsize__ |
__module__ |
__mro__ |
__name__ |
__qualname__ |
__text_signature__ |
__type_params__ |
__weakrefoffset__ |
Although __slots__ and __dict__ may not appear on an object, protocols for those objects are not currently supported by the Python specification due to the part they play in attribute access.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file supportsx-0.0.3.tar.gz.
File metadata
- Download URL: supportsx-0.0.3.tar.gz
- Upload date:
- Size: 28.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f34d9195323b845e95ac90bd7939f43b18b26c77fb8c5f16e3e431f6f375d19
|
|
| MD5 |
511cca5c15bdfb5b946522f3a2f93853
|
|
| BLAKE2b-256 |
519cb6ed03a050071c0062d7ba0e49b84a6c51803326968315faef18313f7f10
|
File details
Details for the file supportsx-0.0.3-py3-none-any.whl.
File metadata
- Download URL: supportsx-0.0.3-py3-none-any.whl
- Upload date:
- Size: 21.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1427f9f4cb60f656227d9f71ad5b115ba908a6d729958208612a44e8f8f261c7
|
|
| MD5 |
dd36e1ae9614595510c336127de09d31
|
|
| BLAKE2b-256 |
0dadd7893723acbfcd912e6a70750d4061d728221d7f2583ef96738e90dda8e9
|