一个便捷实用的上下文管理工具
Project description
功能
- 上下文管理/切换
- 描述器支持
- 一流的类型支持
安装
pip install mapgraph
Or
pdm add mapgraph
入门指南
全局上下文对象
from mapgraph.instance_of import get_instance
from mapgraph.globals import GLOBAL_INSTANCE_CONTEXT
GLOBAL_INSTANCE_CONTEXT.store(666)
assert get_instance(int) == 666
描述器支持
from mapgraph.instance_of import InstanceOf, get_instance
from mapgraph.globals import GLOBAL_INSTANCE_CONTEXT
GLOBAL_INSTANCE_CONTEXT.store(666)
class Test:
a = InstanceOf(int)
assert Test().a == 666
实例上下文
from mapgraph.instance_of import InstanceOf, get_instance
from mapgraph.context import InstanceContext
from mapgraph.globals import GLOBAL_INSTANCE_CONTEXT
context = InstanceContext()
GLOBAL_INSTANCE_CONTEXT.store(666)
context.store(6, "6")
assert get_instance(int) == 666
with context.scope():
assert get_instance(int) == 6
assert get_instance(str) == "6"
泛型支持
from typing import TypeVar, Generic
from typing_extensions import Annotated
from mapgraph.instance_of import get_instance
from mapgraph.context import InstanceContext
from mapgraph.globals import GLOBAL_INSTANCE_CONTEXT
from pydantic import Field
T = TypeVar("T")
class Obj(Generic[T]):
a: T
def __init__(self, a: T):
self.a = a
context = InstanceContext()
local_context = InstanceContext()
GLOBAL_INSTANCE_CONTEXT.store("GLOBAL", 10, {"a": 10}, Obj[int](10))
local_context.store(1, {1: "a"}, Obj[str]("1"))
context.store("context")
assert get_instance(Obj[int]).a == 10
with local_context.scope():
assert get_instance(Obj[str]).a == "1"
with context.scope():
assert get_instance(int) == 1
assert get_instance(Annotated[int, Field(gt=1)]) == 10
assert get_instance(dict) == {1: "a"}
assert get_instance(dict[str, int]) == {"a": 10}
支持类型
like_isinstance
- 基础类型 str/int/...
- 容器泛型 list[T]/dict[K, V]/...
- Union 类型类型
- Type
- TypeVar 类型变量
- 泛型类 Generic[T]
- Annotated/Field 注解类型
- Protocol 协议类型
- Protocol[T] 泛型协议类型
- TypedDict 字典类型
like_issubclass
- 基础类型 str/int
- 容器泛型 list[T]/dict[K, V]
- Union 类型类型
- Type
- TypeVar 类型变量
- 泛型类 Generic[T]
- Protocol 协议类型
- Protocol[T] 泛型协议类型
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
mapgraph-0.1.5.tar.gz
(10.3 kB
view details)
Built Distribution
mapgraph-0.1.5-py3-none-any.whl
(10.2 kB
view details)
File details
Details for the file mapgraph-0.1.5.tar.gz
.
File metadata
- Download URL: mapgraph-0.1.5.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: pdm/2.17.3 CPython/3.10.12 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c84d3d73bda7fd41d00fb971820e13456dbeb760f06c4eb52c62f62bd993054 |
|
MD5 | 5a808235c450271424b2e04cd9dbb607 |
|
BLAKE2b-256 | f88b3fa49f5983ef47fb74d0cd7defe7aa85e8ba00f9094c02a635adb961df8d |
File details
Details for the file mapgraph-0.1.5-py3-none-any.whl
.
File metadata
- Download URL: mapgraph-0.1.5-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: pdm/2.17.3 CPython/3.10.12 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7601babffdc798d7b02e7532a68424d7b7ae534bae25bcce2207023750c5bb7 |
|
MD5 | 00ff51ec776c175a1ccd292352a48b4e |
|
BLAKE2b-256 | d4989fc8e471f21d04d347d58089826363b2c21019100f2e44f1520cd2f7fcde |