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.
Metadata
Release files for supportsx 0.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| supportsx-0.0.3.tar.gz | 28.6 kB | Without provenance | Details for supportsx-0.0.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| supportsx-0.0.3-py3-none-any.whl | Python 3 | none | any | Details for supportsx-0.0.3-py3-none-any.whl |
Total release size: 49.8 kB
Release files / supportsx-0.0.3.tar.gz
| Download URL | supportsx-0.0.3.tar.gz |
|---|---|
| Size | 28.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5f34d9195323b845e95ac90bd7939f43b18b26c77fb8c5f16e3e431f6f375d19
|
|
BLAKE2b-256 checksum How to use checksums |
519cb6ed03a050071c0062d7ba0e49b84a6c51803326968315faef18313f7f10
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.2
|
Release files / supportsx-0.0.3-py3-none-any.whl
| Download URL | supportsx-0.0.3-py3-none-any.whl |
|---|---|
| Size | 21.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1427f9f4cb60f656227d9f71ad5b115ba908a6d729958208612a44e8f8f261c7
|
|
BLAKE2b-256 checksum How to use checksums |
0dadd7893723acbfcd912e6a70750d4061d728221d7f2583ef96738e90dda8e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.2
|
Security for supportsx 0.0.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.