Updated script that can be controled by Nodejs web app
This commit is contained in:
40
lib/python3.13/site-packages/openpyxl/compat/singleton.py
Normal file
40
lib/python3.13/site-packages/openpyxl/compat/singleton.py
Normal file
@ -0,0 +1,40 @@
|
||||
# Copyright (c) 2010-2024 openpyxl
|
||||
|
||||
import weakref
|
||||
|
||||
|
||||
class Singleton(type):
|
||||
"""
|
||||
Singleton metaclass
|
||||
Based on Python Cookbook 3rd Edition Recipe 9.13
|
||||
Only one instance of a class can exist. Does not work with __slots__
|
||||
"""
|
||||
|
||||
def __init__(self, *args, **kw):
|
||||
super().__init__(*args, **kw)
|
||||
self.__instance = None
|
||||
|
||||
def __call__(self, *args, **kw):
|
||||
if self.__instance is None:
|
||||
self.__instance = super().__call__(*args, **kw)
|
||||
return self.__instance
|
||||
|
||||
|
||||
class Cached(type):
|
||||
"""
|
||||
Caching metaclass
|
||||
Child classes will only create new instances of themselves if
|
||||
one doesn't already exist. Does not work with __slots__
|
||||
"""
|
||||
|
||||
def __init__(self, *args, **kw):
|
||||
super().__init__(*args, **kw)
|
||||
self.__cache = weakref.WeakValueDictionary()
|
||||
|
||||
def __call__(self, *args):
|
||||
if args in self.__cache:
|
||||
return self.__cache[args]
|
||||
|
||||
obj = super().__call__(*args)
|
||||
self.__cache[args] = obj
|
||||
return obj
|
Reference in New Issue
Block a user