this repo has no description
at trunk 114 lines 2.4 kB view raw
1#!/usr/bin/env python3 2# Copyright (c) Facebook, Inc. and its affiliates. (http://www.facebook.com) 3 4from _builtins import _address, _builtin, _ContextVar_guard, _Token_guard, _Unbound 5 6 7def _ContextVar_default_value(ctxvar): 8 _builtin() 9 10 11def _ContextVar_name(ctxvar): 12 _builtin() 13 14 15def _Token_used(token): 16 _builtin() 17 18 19def _Token_var(token): 20 _builtin() 21 22 23def _thread_context(): 24 _builtin() 25 26 27class Context(bootstrap=True): 28 def __contains__(self, var): 29 _builtin() 30 31 def __eq__(self, other): 32 _builtin() 33 34 def __getitem__(self, var): 35 _builtin() 36 37 __hash__ = None 38 39 def __iter__(self): 40 _builtin() 41 42 @staticmethod 43 def __new__(cls): 44 _builtin() 45 46 def __len__(self): 47 _builtin() 48 49 def copy(self): 50 _builtin() 51 52 def get(self, var, default=None): 53 _builtin() 54 55 def items(self): 56 _builtin() 57 58 def keys(self): 59 _builtin() 60 61 def run(self, callable, *args, **kwargs): 62 _builtin() 63 64 def values(self): 65 _builtin() 66 67 68class ContextVar(bootstrap=True): 69 @classmethod 70 def __class_getitem__(cls, item): 71 if cls is not ContextVar: 72 raise TypeError( 73 f"descriptor '__class_getitem__' requires a subtype of 'ContextVar' but received '{cls.__name__}'" 74 ) 75 return cls 76 77 @staticmethod 78 def __new__(cls, name, default=_Unbound): 79 _builtin() 80 81 def __repr__(self): 82 _ContextVar_guard(self) 83 name = _ContextVar_name(self) 84 default_value = _ContextVar_default_value(self) 85 default_value_str = ( 86 "" if default_value is _Unbound else f"default={default_value} " 87 ) 88 return f"<ContextVar name='{name}' {default_value_str}at {_address(self):#x}>" 89 90 def get(self, default=_Unbound): 91 _builtin() 92 93 def reset(self, token): 94 _builtin() 95 96 def set(self, value): 97 _builtin() 98 99 100class Token(bootstrap=True): 101 MISSING = _Unbound 102 103 @staticmethod 104 def __new__(cls, context, var, old_value): 105 raise RuntimeError("Tokens can only be created by ContextVars") 106 107 def __repr__(self): 108 _Token_guard(self) 109 used = "used " if _Token_used(self) else "" 110 return f"<Token {used}var={_Token_var(self)} at {_address(self):#x}>" 111 112 113def copy_context(): 114 return _thread_context().copy()