Skip to main content

一个便捷实用的上下文管理工具

Project description

Mapgraph

Mapgraph 是一个便捷实用的上下文管理工具

一阴一阳之谓道

CodeFactor GitHub CodeQL

功能

  • 上下文管理/切换
  • 描述器支持
  • 一流的类型支持

安装

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


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.9.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

mapgraph-0.1.9-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file mapgraph-0.1.9.tar.gz.

File metadata

  • Download URL: mapgraph-0.1.9.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

Hashes for mapgraph-0.1.9.tar.gz
Algorithm Hash digest
SHA256 9553b2aea14e4a5ae5c110bbaefbcb72345eae5b8a26e01a7aacd15575bd316a
MD5 6c0501cb345499772456cf0b487564aa
BLAKE2b-256 71abd46bacd88f52687116a647af3ea1002c4c157c1dc187e07baae9a3eb6f9e

See more details on using hashes here.

File details

Details for the file mapgraph-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: mapgraph-0.1.9-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

Hashes for mapgraph-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 f63f6f52410b7d6251a13069ce9257b7cb95ba7d7b9449f0f05bd0927ec0ac86
MD5 f1aad28af8dab586bdf32c209d8e7935
BLAKE2b-256 8ec6d04d1b4555fb4df0e46382a456c093801fde0469729c24de7eff70086745

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page