A package for extended built-in types
Project description
typing_ex
A python package for extended typing (python 3.8+)
Notice: yet to be heavily tested, only simple tests are passed.
Frozen frozen.py
FrozenList: ImmutablelistFrozenDict: Immutabledictfrozen_copy: Create frozen copy of supported types (Sequence,Set,Mapping)
TypeInfo type_info.py
TypeInfo: provide type information and run-time type checkingTypeInfo[...].type: typeTypeInfo[...]..origin: unsubscripted typeTypeInfo[...]..args: type argumentsTypeInfo[...]..name: name of type (including arguments)TypeInfo.check_union(t1, t2): check if union type t1 fulfill union type t2TypeInfo[...].check_value(value): check if value matches the type in type infoTypeInfo[...].is_*: check if type is _
# type_a | type_b is only supported when python >= 3.10
TypeInfo[list[int | str]].name # list[int | str]
TypeInfo.check_union(int | str, str | int) # True
TypeInfo.check_union(int, int | str) # True
TypeInfo.check_union(int, Union[int | str]) # True
TypeInfo.check_union(Union[int, str], Union[str, int]) # True
TypeInfo.check_union(int | str, str) # False
TypeInfo.check_union(int | str, int | float) # False
TypeInfo.check_union(Union[int, str], int | float) # False
TypeInfo[int | str].check_value(123) # True
TypeInfo[list[int | str]].check_value([1, "2", 3]) # True
TypeInfo[list[int]].check_value([1, "2", 3]) # False
TypeInfo[list[int | str]].check_value([1.0, "2", 3]) # False
TypedDefaultDict typed_defaultdict.py
-
TypedDefaultDict: combining features ofTypedDictanddefaultdictwith type checking in__init__,__setitem__and__setattr__ -
Good for writing schema as a class for
JSON/YAML/XML/etc. data which provides both static and runtime type checking.
class TestDict(TypedDefaultDict):
foo: str | None = "bar" # default value is "bar"
bar: list[str] = [] # default value is []
testdict = TestDict()
testdict["foo"] # "bar"
testdict.foo # "bar"
testdict.bar # []
# check type and unexpected properties on assignment
testdict.abcd # raises `UnknownPropertyError`
testdict.foo = 123 # raises `PropertyValueError`
testdict = TestDict( # raises `PropertyValueError`
foo = 123
)
# example of loading from JSON
with open("test.json", "r") as f:
# will also check on init
testdict = TestDict(json.load(f))
EnumEx enum_ex.py
EnumExis aEnumlike class that support enum aliasing (keeping same value but different name).EnumEx.__iter__: a generator of all non-alias enum instances.EnumEx.names: a tuple of all enum names.EnumEx.values: a tuple of all enum values.EnumEx.enums: a tuple of all enum instances.EnumEx.value_type: returns__value_type__if defined, int otherwise.
class AliasedEnum(EnumEx):
__value_type__ = str # default is int
foo = "1"
foo2 = foo # alias
bar = "2"
bar2 = bar # alias
foo.name # "foo"
foo.value # 1
foo2.name # "foo2"
foo2.value # 1
foo2.orig_name # "foo"
bar2.name # "bar2"
bar2.value # 2
bar2.orig_name # "bar"
Project details
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 typing_ex-0.1.1.tar.gz.
File metadata
- Download URL: typing_ex-0.1.1.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: pdm/2.12.3 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbbacd9e1e5d53ac316ea05c77d2a3166b77e70dcfb90a744ebfb19a6e23eda8
|
|
| MD5 |
51f9b1594f8675417dcddf842c237037
|
|
| BLAKE2b-256 |
86517601a44160921760c7fda63973c94062ef0ff893e9d6b2a096d202d4ae60
|
File details
Details for the file typing_ex-0.1.1-py3-none-any.whl.
File metadata
- Download URL: typing_ex-0.1.1-py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: pdm/2.12.3 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7d71a5ecd7a77f6384d10e368d2748c9472ebdc25c93de838bb61e23f39438a
|
|
| MD5 |
3a1eb7b393ad867a922ac335be79fad5
|
|
| BLAKE2b-256 |
1d4bbed29d1c0762631332d836785cb1efbe98b52b0d4f5a8eaa96d444b07244
|