一个便捷实用的上下文管理工具
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.6.tar.gz
(10.5 kB
view details)
Built Distribution
mapgraph-0.1.6-py3-none-any.whl
(10.3 kB
view details)
File details
Details for the file mapgraph-0.1.6.tar.gz
.
File metadata
- Download URL: mapgraph-0.1.6.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: pdm/2.18.0 CPython/3.10.12 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c21a55b5bc4a0372ae239ed0ee71a610122230f4735adc5c501f70c05b498e0 |
|
MD5 | 103bfb2df8f4aaaa1f2060a73b7195ac |
|
BLAKE2b-256 | 6e49eb828ffd7a8151415416c72b2f8e8a94ddd2fb524d365a5f907506b73bfd |
File details
Details for the file mapgraph-0.1.6-py3-none-any.whl
.
File metadata
- Download URL: mapgraph-0.1.6-py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: pdm/2.18.0 CPython/3.10.12 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f40131a7dbbb4fe6e1bb98cb2ed1fc9adc1bbdab174beb925cd363261fdc67a |
|
MD5 | 6d1cda0feb7666218ce47bb8c503ada3 |
|
BLAKE2b-256 | 99231024529f100d2f7785034bda86b2c535200084a2e9bf90dca248b5936b8a |