8.2.34 | Linux | www-data (uid:33)
👁 View: _threading_local.py
📁 //snap/core18/2999/usr/lib/python3.6/_threading_local.py
"""Thread-local objects. (Note that this module provides a Python version of the threading.local class. Depending on the version of Python you're using, there may be a faster one available. You should always import the `local` class from `threading`.) Thread-local objects support the management of thread-local data. If you have data that you want to be local to a thread, simply create a thread-local object and use its attributes: >>> mydata = local() >>> mydata.number = 42 >>> mydata.number 42 You can also access the local-object's dictionary: >>> mydata.__dict__ {'number': 42} >>> mydata.__dict__.setdefault('widgets', []) [] >>> mydata.widgets [] What's important about thread-local objects is that their data are local to a thread. If we access the data in a different thread: >>> log = [] >>> def f(): ... items = sorted(mydata.__dict__.items()) ... log.append(items) ... mydata.number = 11 ... log.append(mydata.number) >>> import threading >>> thread = threading.Thread(target=f) >>> thread.start() >>> thread.join() >>> log [[], 11] we get different data. Furthermore, changes made in the other thread don't affect data seen in this thread: >>> mydata.number 42 Of course, values you get from a local object, including a __dict__ attribute, are for whatever thread was current at the time the attribute was read. For that reason, you generally don't want to save these values across threads, as they apply only to the thread they came from. You can create custom local objects by subclassing the local class: >>> class MyLocal(local): ... number = 2 ... def __init__(self, **kw): ... self.__dict__.update(kw) ... def squared(self): ... return self.number ** 2 This can be useful to support default values, methods and initialization. Note that if you define an __init__ method, it will be called each time the local object is used in a separate thread. This is necessary to initialize each thread's dictionary. Now if we create a local object: >>> mydata = MyLocal(color='red') Now we have a default number: >>> mydata.number 2 an initial color: >>> mydata.color 'red' >>> del mydata.color And a method that operates on the data: >>> mydata.squared() 4 As before, we can access the data in a separate thread: >>> log = [] >>> thread = threading.Thread(target=f) >>> thread.start() >>> thread.join() >>> log [[('color', 'red')], 11] without affecting this thread's data: >>> mydata.number 2 >>> mydata.color Traceback (most recent call last): ... AttributeError: 'MyLocal' object has no attribute 'color' Note that subclasses can define slots, but they are not thread local. They are shared across threads: >>> class MyLocal(local): ... __slots__ = 'number' >>> mydata = MyLocal() >>> mydata.number = 42 >>> mydata.color = 'red' So, the separate thread: >>> thread = threading.Thread(target=f) >>> thread.start() >>> thread.join() affects what we see: >>> mydata.number 11 >>> del mydata """ from weakref import ref from contextlib import contextmanager __all__ = ["local"] # We need to use objects from the threading module, but the threading # module may also want to use our `local` class, if support for locals # isn't compiled in to the `thread` module. This creates potential problems # with circular imports. For that reason, we don't import `threading` # until the bottom of this file (a hack sufficient to worm around the # potential problems). Note that all platforms on CPython do have support # for locals in the `thread` module, and there is no circular import problem # then, so problems introduced by fiddling the order of imports here won't # manifest. class _localimpl: """A class managing thread-local dicts""" __slots__ = 'key', 'dicts', 'localargs', 'locallock', '__weakref__' def __init__(self): # The key used in the Thread objects' attribute dicts. # We keep it a string for speed but make it unlikely to clash with # a "real" attribute. self.key = '_threading_local._localimpl.' + str(id(self)) # { id(Thread) -> (ref(Thread), thread-local dict) } self.dicts = {} def get_dict(self): """Return the dict for the current thread. Raises KeyError if none defined.""" thread = current_thread() return self.dicts[id(thread)][1] def create_dict(self): """Create a new dict for the current thread, and return it.""" localdict = {} key = self.key thread = current_thread() idt = id(thread) def local_deleted(_, key=key): # When the localimpl is deleted, remove the thread attribute. thread = wrthread() if thread is not None: del thread.__dict__[key] def thread_deleted(_, idt=idt): # When the thread is deleted, remove the local dict. # Note that this is suboptimal if the thread object gets # caught in a reference loop. We would like to be called # as soon as the OS-level thread ends instead. local = wrlocal() if local is not None: dct = local.dicts.pop(idt) wrlocal = ref(self, local_deleted) wrthread = ref(thread, thread_deleted) thread.__dict__[key] = wrlocal self.dicts[idt] = wrthread, localdict return localdict @contextmanager def _patch(self): impl = object.__getattribute__(self, '_local__impl') try: dct = impl.get_dict() except KeyError: dct = impl.create_dict() args, kw = impl.localargs self.__init__(*args, **kw) with impl.locallock: object.__setattr__(self, '__dict__', dct) yield class local: __slots__ = '_local__impl', '__dict__' def __new__(cls, *args, **kw): if (args or kw) and (cls.__init__ is object.__init__): raise TypeError("Initialization arguments are not supported") self = object.__new__(cls) impl = _localimpl() impl.localargs = (args, kw) impl.locallock = RLock() object.__setattr__(self, '_local__impl', impl) # We need to create the thread dict in anticipation of # __init__ being called, to make sure we don't call it # again ourselves. impl.create_dict() return self def __getattribute__(self, name): with _patch(self): return object.__getattribute__(self, name) def __setattr__(self, name, value): if name == '__dict__': raise AttributeError( "%r object attribute '__dict__' is read-only" % self.__class__.__name__) with _patch(self): return object.__setattr__(self, name, value) def __delattr__(self, name): if name == '__dict__': raise AttributeError( "%r object attribute '__dict__' is read-only" % self.__class__.__name__) with _patch(self): return object.__delattr__(self, name) from threading import current_thread, RLock
← Back
💻 Terminal
📤 Upload
📂
Click or Drag & Drop
📁 //snap/core18/2999/usr/lib/python3.6
NameSizePermModifiedActions
📁 __pycache__/-07552026-02-04 00:15🗑 Delete
📁 asyncio/-07552026-02-04 00:15🗑 Delete
📁 collections/-07552026-02-04 00:15🗑 Delete
📁 concurrent/-07552026-02-04 00:15🗑 Delete
📁 ctypes/-07552026-02-04 00:15🗑 Delete
📁 curses/-07552026-02-04 00:15🗑 Delete
📁 dbm/-07552026-02-04 00:15🗑 Delete
📁 distutils/-07552026-02-04 00:15🗑 Delete
📁 email/-07552026-02-04 00:15🗑 Delete
📁 encodings/-07552026-02-04 00:15🗑 Delete
📁 html/-07552026-02-04 00:15🗑 Delete
📁 http/-07552026-02-04 00:15🗑 Delete
📁 importlib/-07552026-02-04 00:15🗑 Delete
📁 json/-07552026-02-04 00:15🗑 Delete
📁 lib-dynload/-07552026-02-04 00:15🗑 Delete
📁 lib2to3/-07552026-02-04 00:15🗑 Delete
📁 logging/-07552026-02-04 00:15🗑 Delete
📁 multiprocessing/-07552026-02-04 00:15🗑 Delete
📁 pydoc_data/-07552026-02-04 00:15🗑 Delete
📁 sqlite3/-07552026-02-04 00:15🗑 Delete
📁 test/-07552026-02-04 00:15🗑 Delete
📁 unittest/-07552026-02-04 00:15🗑 Delete
📁 urllib/-07552026-02-04 00:15🗑 Delete
📁 venv/-07552026-02-04 00:15🗑 Delete
📁 wsgiref/-07552026-02-04 00:15🗑 Delete
📁 xml/-07552026-02-04 00:15🗑 Delete
📁 xmlrpc/-07552026-02-04 00:15🗑 Delete
LICENSE.txt12.5K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
__future__.py4.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
__phello__.foo.py64B06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
_bootlocale.py1.3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
_collections_abc.py25.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
_compat_pickle.py8.5K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
_compression.py5.2K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
_dummy_thread.py5K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
_markupbase.py14.3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
_osx_support.py18.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
_pydecimal.py224.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
_pyio.py86K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
_sitebuiltins.py3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
_strptime.py24.2K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
_sysconfigdata_m_linux_x86_64-linux-gnu.py21.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
_threading_local.py7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
_weakrefset.py5.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
abc.py8.5K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
aifc.py31.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
antigravity.py477B06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
argparse.py88.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
ast.py11.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
asynchat.py11.1K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
asyncore.py19.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
base64.py19.9K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
bdb.py23K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
binhex.py13.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
bisect.py2.5K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
bz2.py12.2K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
cProfile.py5.2K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
calendar.py22.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
cgi.py35.9K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
cgitb.py11.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
chunk.py5.3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
cmd.py14.5K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
code.py10.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
codecs.py35.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
codeop.py5.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
colorsys.py4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
compileall.py11.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
configparser.py52.3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
contextlib.py12.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
copy.py8.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
copyreg.py6.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
crypt.py1.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
csv.py15.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
datetime.py80.1K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
decimal.py320B06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
difflib.py82.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
dis.py17.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
doctest.py101.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
dummy_threading.py2.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
enum.py32.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
filecmp.py9.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
fileinput.py14.1K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
fnmatch.py3.1K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
formatter.py14.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
fractions.py23.1K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
ftplib.py34.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
functools.py30.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
genericpath.py4.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
getopt.py7.3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
getpass.py5.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
gettext.py21.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
glob.py5.5K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
gzip.py19.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
hashlib.py9.3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
heapq.py22.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
hmac.py4.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
imaplib.py52K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
imghdr.py3.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
imp.py10.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
inspect.py114.2K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
io.py3.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
ipaddress.py72.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
keyword.py2.2K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
linecache.py5.2K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
locale.py75.5K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
lzma.py12.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
macpath.py5.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
macurl2path.py2.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
mailbox.py76.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
mailcap.py8.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
mimetypes.py20.5K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
modulefinder.py22.5K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
netrc.py5.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
nntplib.py42.1K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
ntpath.py20.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
nturl2path.py2.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
numbers.py10K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
opcode.py5.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
operator.py10.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
optparse.py59K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
os.py36.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
pathlib.py47.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
pdb.py59.9K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
pickle.py54.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
pickletools.py89.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
pipes.py8.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
pkgutil.py20.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
platform.py47.1K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
plistlib.py32K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
poplib.py14.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
posixpath.py15.3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
pprint.py20.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
profile.py21.5K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
pstats.py25.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
pty.py4.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
py_compile.py7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
pyclbr.py13.2K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
pydoc.py101.4K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
queue.py8.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
quopri.py7.1K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
random.py26.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
re.py15.2K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
reprlib.py5.2K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
rlcompleter.py6.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
runpy.py11.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
sched.py6.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
secrets.py2K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
selectors.py19K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
shelve.py8.3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
shlex.py12.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
shutil.py39.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
signal.py2.1K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
site.py21.3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
sitecustomize.pyB01970-01-01 00:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
smtpd.py33.9K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
smtplib.py43.2K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
sndhdr.py6.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
socket.py26.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
socketserver.py26.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
sre_compile.py18.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
sre_constants.py6.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
sre_parse.py35.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
ssl.py45.3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
stat.py4.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
statistics.py20.2K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
string.py11.5K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
stringprep.py12.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
struct.py257B06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
subprocess.py60.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
sunau.py17.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
symbol.py2.1K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
symtable.py7.1K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
sysconfig.py24.5K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
tabnanny.py11.1K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
tarfile.py92.7K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
telnetlib.py22.6K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
tempfile.py31.1K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
textwrap.py19.1K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
this.py1003B06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
threading.py47.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
timeit.py13K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
token.py3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
tokenize.py28.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
trace.py28K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
traceback.py22.9K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
tracemalloc.py16.3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
tty.py879B06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
turtle.py140.3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
types.py8.7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
typing.py78.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
uu.py6.6K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
uuid.py23.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
warnings.py18.1K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
wave.py17.3K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
weakref.py20K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
webbrowser.py21.2K07552025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
xdrlib.py5.8K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
zipapp.py7K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
zipfile.py76.4K06442025-11-18 13:14👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del