/opt/imh-python/lib/python3.9/site-packages
NameSizeModeActions
amqp/-0755rm
amqp-5.3.1.dist-info/-0755rm
apache_libcloud-3.1.0.dist-info/-0755rm
appdirs-1.4.4.dist-info/-0755rm
apscheduler/-0755rm
APScheduler-3.11.0.dist-info/-0755rm
arrow/-0755rm
arrow-1.2.3.dist-info/-0755rm
astroid/-0755rm
astroid-3.3.9.dist-info/-0755rm
asttokens/-0755rm
asttokens-3.0.0.dist-info/-0755rm
attr/-0755rm
attrs/-0755rm
attrs-25.3.0.dist-info/-0755rm
autocommand/-0755rm
autocommand-2.2.2.dist-info/-0755rm
automat/-0755rm
automat-25.4.16.dist-info/-0755rm
backports/-0755rm
backports.tarfile-1.2.0.dist-info/-0755rm
bakauth/-0755rm
bakauth-1.6.2.dist-info/-0755rm
bcrypt/-0755rm
bcrypt-3.2.2.dist-info/-0755rm
billiard/-0755rm
billiard-4.2.1.dist-info/-0755rm
blessings/-0755rm
blessings-1.7.dist-info/-0755rm
boto3/-0755rm
boto3-1.16.63.dist-info/-0755rm
botocore/-0755rm
botocore-1.19.63.dist-info/-0755rm
celery/-0755rm
celery-5.4.0.dist-info/-0755rm
certifi/-0755rm
certifi-2025.4.26.dist-info/-0755rm
cffi/-0755rm
cffi-1.17.1.dist-info/-0755rm
chardet/-0755rm
chardet-3.0.4.dist-info/-0755rm
cheroot/-0755rm
cheroot-10.0.1.dist-info/-0755rm
cherrypy/-0755rm
CherryPy-18.6.1.dist-info/-0755rm
cinderclient/-0755rm
click/-0755rm
click-8.1.8.dist-info/-0755rm
click_didyoumean/-0755rm
click_didyoumean-0.3.1.dist-info/-0755rm
click_plugins/-0755rm
click_plugins-1.1.1.dist-info/-0755rm
click_repl/-0755rm
click_repl-0.3.0.dist-info/-0755rm
constantly/-0755rm
constantly-23.10.4.dist-info/-0755rm
construct/-0755rm
construct-2.10.70.dist-info/-0755rm
cpapis/-0755rm
cpapis-1.0.dist-info/-0755rm
cproc/-0755rm
cproc-1.0.dist-info/-0755rm
croniter/-0755rm
croniter-2.0.1.dist-info/-0755rm
crossplane/-0755rm
crossplane-0.5.8.dist-info/-0755rm
Crypto/-0755rm
Cryptodome/-0755rm
cryptography/-0755rm
cryptography-36.0.2.dist-info/-0755rm
cwp/-0755rm
cwp-0.1.2.dist-info/-0755rm
dateutil/-0755rm
debtcollector/-0755rm
debtcollector-3.0.0.dist-info/-0755rm
decorator-5.2.1.dist-info/-0755rm
dill/-0755rm
dill-0.4.0.dist-info/-0755rm
distro/-0755rm
distro-1.9.0.dist-info/-0755rm
dns/-0755rm
dnspython-2.7.0.dist-info/-0755rm
dogpile/-0755rm
dogpile_cache-1.4.0.dist-info/-0755rm
exceptiongroup/-0755rm
exceptiongroup-1.2.2.dist-info/-0755rm
executing/-0755rm
executing-2.2.0.dist-info/-0755rm
fabric/-0755rm
fab_classic-1.19.1.dist-info/-0755rm
flask/-0755rm
Flask-1.1.2.dist-info/-0755rm
flask_apscheduler/-0755rm
Flask_APScheduler-1.11.0.dist-info/-0755rm
flask_redis/-0755rm
flask_redis-0.4.0.dist-info/-0755rm
flask_sqlalchemy/-0755rm
Flask_SQLAlchemy-2.4.4.dist-info/-0755rm
future/-0755rm
future-1.0.0.dist-info/-0755rm
gunicorn/-0755rm
gunicorn-20.0.4.dist-info/-0755rm
hyperlink/-0755rm
hyperlink-21.0.0.dist-info/-0755rm
idna/-0755rm
idna-2.10.dist-info/-0755rm
importlib_metadata/-0755rm
importlib_metadata-4.13.0.dist-info/-0755rm
incremental/-0755rm
incremental-22.10.0.dist-info/-0755rm
influxdb/-0755rm
influxdb-5.3.2.dist-info/-0755rm
IPython/-0755rm
ipython-8.18.1.dist-info/-0755rm
iso8601/-0755rm
iso8601-2.1.0.dist-info/-0755rm
isort/-0755rm
isort-6.0.1.dist-info/-0755rm
itsdangerous/-0755rm
itsdangerous-1.1.0.dist-info/-0755rm
jaraco/-0755rm
jaraco.collections-5.1.0.dist-info/-0755rm
jaraco.context-6.0.1.dist-info/-0755rm
jaraco.functools-4.1.0.dist-info/-0755rm
jaraco.text-4.0.0.dist-info/-0755rm
jedi/-0755rm
jedi-0.19.2.dist-info/-0755rm
jinja2/-0755rm
Jinja2-2.11.3.dist-info/-0755rm
jmespath/-0755rm
jmespath-0.10.0.dist-info/-0755rm
jsonpatch-1.33.dist-info/-0755rm
jsonpointer-3.0.0.dist-info/-0755rm
keystoneauth1/-0755rm
keystoneauth1-5.10.0.dist-info/-0755rm
kombu/-0755rm
kombu-5.5.3.dist-info/-0755rm
ldap/-0755rm
libcloud/-0755rm
libfuturize/-0755rm
libpasteurize/-0755rm
markupsafe/-0755rm
MarkupSafe-1.1.1.dist-info/-0755rm
matplotlib_inline/-0755rm
matplotlib_inline-0.1.7.dist-info/-0755rm
mccabe-0.7.0.dist-info/-0755rm
mdstat/-0755rm
mdstat-1.0.4.dist-info/-0755rm
meld3/-0755rm
meld3-2.0.1.dist-info/-0755rm
more_itertools/-0755rm
more_itertools-10.7.0.dist-info/-0755rm
msgpack/-0755rm
msgpack-0.6.1.dist-info/-0755rm
mtrlib/-0755rm
mtrlib-1.2.0.dist-info/-0755rm
munch/-0755rm
munch-4.0.0.dist-info/-0755rm
nacl/-0755rm
netaddr/-0755rm
netaddr-0.8.0.dist-info/-0755rm
netifaces-0.10.9.dist-info/-0755rm
netmiko/-0755rm
netmiko-3.4.0.dist-info/-0755rm
ntc_templates/-0755rm
ntc_templates-7.8.0.dist-info/-0755rm
numpy/-0755rm
numpy-1.26.0.dist-info/-0755rm
numpy.libs/-0755rm
OpenSSL/-0755rm
openstack/-0755rm
openstacksdk-0.49.0.dist-info/-0755rm
oslo.i18n-6.5.1.dist-info/-0755rm
oslo.utils-7.1.0.dist-info/-0755rm
oslo_i18n/-0755rm
oslo_utils/-0755rm
os_client_config/-0755rm
os_client_config-2.1.0.dist-info/-0755rm
os_service_types/-0755rm
os_service_types-1.7.0.dist-info/-0755rm
packaging/-0755rm
packaging-25.0.dist-info/-0755rm
paramiko/-0755rm
paramiko-3.5.1.dist-info/-0755rm
parso/-0755rm
parso-0.8.4.dist-info/-0755rm
past/-0755rm
pbr/-0755rm
pbr-6.1.1.dist-info/-0755rm
pem/-0755rm
pem-20.1.0.dist-info/-0755rm
pexpect/-0755rm
pexpect-4.9.0.dist-info/-0755rm
picotui/-0755rm
picotui-1.2.dist-info/-0755rm
pip/-0755rm
pip-25.1.1.dist-info/-0755rm
pkg_resources/-0755rm
platformdirs/-0755rm
platformdirs-4.3.7.dist-info/-0755rm
portend-3.2.0.dist-info/-0755rm
pp_api/-0755rm
pp_api-1.3.1.dist-info/-0755rm
pr2modules/-0755rm
prettytable-0.7.2.dist-info/-0755rm
prometheus_client/-0755rm
prometheus_client-0.14.1.dist-info/-0755rm
prompt_toolkit/-0755rm
prompt_toolkit-3.0.51.dist-info/-0755rm
psutil/-0755rm
psutil-5.7.3.dist-info/-0755rm
psycopg2/-0755rm
psycopg2-2.8.6.dist-info/-0755rm
ptyprocess/-0755rm
ptyprocess-0.7.0.dist-info/-0755rm
pure_eval/-0755rm
pure_eval-0.2.3.dist-info/-0755rm
pyasn1/-0755rm
pyasn1-0.6.1.dist-info/-0755rm
pyasn1_modules/-0755rm
pyasn1_modules-0.4.2.dist-info/-0755rm
pycparser/-0755rm
pycparser-2.22.dist-info/-0755rm
pycryptodome-3.9.9.dist-info/-0755rm
pycryptodomex-3.9.9.dist-info/-0755rm
pyeapi/-0755rm
pyeapi-0.8.4.dist-info/-0755rm
pygit2/-0755rm
pygit2-1.6.1.dist-info/-0755rm
pygit2.libs/-0755rm
pygments/-0755rm
pygments-2.19.1.dist-info/-0755rm
pygraph/-0755rm
PyGraph-0.3.0.dist-info/-0755rm
pyipmi/-0755rm
pylint/-0755rm
pylint-3.3.7.dist-info/-0755rm
pymysql/-0755rm
PyMySQL-1.0.3.dist-info/-0755rm
PyNaCl-1.5.0.dist-info/-0755rm
pynetbox/-0755rm
pynetbox-6.5.0.dist-info/-0755rm
pyOpenSSL-19.1.0.dist-info/-0755rm
pyparsing/-0755rm
pyparsing-3.2.3.dist-info/-0755rm
pyroute2/-0755rm
pyroute2-0.7.12.dist-info/-0755rm
pyserial-3.5.dist-info/-0755rm
pysparklines-1.4.dist-info/-0755rm
python_cinderclient-7.1.0.dist-info/-0755rm
python_crontab-2.7.1.dist-info/-0755rm
python_dateutil-2.9.0.post0.dist-info/-0755rm
python_ipmi-0.5.7.dist-info/-0755rm
python_ldap-3.3.1.dist-info/-0755rm
python_whois-0.7.3.dist-info/-0755rm
pytz/-0755rm
pytz-2025.2.dist-info/-0755rm
pyudev/-0755rm
pyudev-0.23.2.dist-info/-0755rm
PyYAML-5.4.1.dist-info/-0755rm
pyzmq-19.0.2.dist-info/-0755rm
pyzmq.libs/-0755rm
rads/-0755rm
rads-4.1.0.dist-info/-0755rm
redis/-0755rm
redis-3.5.3.dist-info/-0755rm
requests/-0755rm
requests-2.24.0.dist-info/-0755rm
requestsexceptions/-0755rm
requestsexceptions-1.4.0.dist-info/-0755rm
restic/-0755rm
restic-1.3.5.dist-info/-0755rm
s3transfer/-0755rm
s3transfer-0.3.7.dist-info/-0755rm
scp-0.15.0.dist-info/-0755rm
serial/-0755rm
service_identity/-0755rm
service_identity-23.1.0.dist-info/-0755rm
setproctitle-1.1.10.dist-info/-0755rm
setuptools/-0755rm
setuptools-57.0.0.dist-info/-0755rm
simplejson/-0755rm
simplejson-3.20.1.dist-info/-0755rm
six-1.17.0.dist-info/-0755rm
slapdtest/-0755rm
sparkline/-0755rm
sqlalchemy/-0755rm
SQLAlchemy-1.3.24.dist-info/-0755rm
stack_data/-0755rm
stack_data-0.6.3.dist-info/-0755rm
stevedore/-0755rm
stevedore-5.4.1.dist-info/-0755rm
tabulate-0.8.10.dist-info/-0755rm
tailer/-0755rm
tailer-0.4.1.dist-info/-0755rm
tempora/-0755rm
tempora-5.8.0.dist-info/-0755rm
tenacity/-0755rm
tenacity-9.1.2.dist-info/-0755rm
test/-0755rm
testdata/-0755rm
tests/-0755rm
textfsm/-0755rm
textfsm-1.1.3.dist-info/-0755rm
toml/-0755rm
toml-0.10.2.dist-info/-0755rm
tomli/-0755rm
tomli-2.2.1.dist-info/-0755rm
tomlkit/-0755rm
tomlkit-0.13.2.dist-info/-0755rm
tornado/-0755rm
tornado-6.0.4.dist-info/-0755rm
traitlets/-0755rm
traitlets-5.14.3.dist-info/-0755rm
twisted/-0755rm
Twisted-22.4.0.dist-info/-0755rm
typing_extensions-4.13.2.dist-info/-0755rm
tzdata/-0755rm
tzdata-2025.2.dist-info/-0755rm
tzlocal/-0755rm
tzlocal-5.3.1.dist-info/-0755rm
untangle-1.1.1.dist-info/-0755rm
urllib3/-0755rm
urllib3-1.25.11.dist-info/-0755rm
uWSGI-2.0.19.1.dist-info/-0755rm
version_utils/-0755rm
version_utils-0.3.2.dist-info/-0755rm
vine/-0755rm
vine-5.1.0.dist-info/-0755rm
wcwidth/-0755rm
wcwidth-0.2.13.dist-info/-0755rm
werkzeug/-0755rm
Werkzeug-2.0.3.dist-info/-0755rm
wheel/-0755rm
wheel-0.45.1.dist-info/-0755rm
whois/-0755rm
wrapt/-0755rm
wrapt-1.17.2.dist-info/-0755rm
yaml/-0755rm
zc/-0755rm
zc.lockfile-3.0.post1.dist-info/-0755rm
zipp/-0755rm
zipp-3.21.0.dist-info/-0755rm
zmq/-0755rm
zope/-0755rm
zope.interface-7.2.dist-info/-0755rm
_distutils_hack/-0755rm
_yaml/-0755rm
__pycache__/-0755rm
appdirs.py247200644editdlrm
cronlog.py37730644editdlrm
crontab.py468620644editdlrm
crontabs.py44380644editdlrm
decorator.py170670644editdlrm
distutils-precedence.pth1520644editdlrm
jsonpatch.py297780644editdlrm
jsonpointer.py106010644editdlrm
ldapurl.py125250644editdlrm
ldif.py202780644editdlrm
LICENSE6010644editdlrm
mccabe.py106540644editdlrm
netifaces.cpython-39-x86_64-linux-gnu.so245840755editdlrm
portend.py64880644editdlrm
prettytable.py542040644editdlrm
README.md31800644editdlrm
README.txt1190644editdlrm
scp.py223930644editdlrm
setproctitle.cpython-39-x86_64-linux-gnu.so239520755editdlrm
six.py347030644editdlrm
tabulate.py738890644editdlrm
typing_extensions.py1726540644editdlrm
untangle.py55350644editdlrm
uwsgidecorators.py103920644editdlrm
zc.lockfile-3.0.post1-py3.9-nspkg.pth5190644editdlrm
zope.interface-7.2-py3.9-nspkg.pth4570644editdlrm
_cffi_backend.cpython-39-x86_64-linux-gnu.so2740960755editdlrm
_ldap.cpython-39-x86_64-linux-gnu.so956320755editdlrm
Edit: /opt/imh-python/lib/python3.9/site-packages/uwsgidecorators.py (10392B)
from functools import partial import sys from threading import Thread try: import cPickle as pickle except: import pickle import uwsgi if uwsgi.masterpid() == 0: raise Exception( "you have to enable the uWSGI master process to use this module") spooler_functions = {} mule_functions = {} postfork_chain = [] # Python3 compatibility def _encode1(val): if sys.version_info >= (3, 0) and isinstance(val, str): return val.encode('utf-8') else: return val def _decode1(val): if sys.version_info >= (3, 0) and isinstance(val, bytes): return val.decode('utf-8') else: return val def _encode_to_spooler(vars): return dict((_encode1(K), _encode1(V)) for (K, V) in vars.items()) def _decode_from_spooler(vars): return dict((_decode1(K), _decode1(V)) for (K, V) in vars.items()) def get_free_signal(): for signum in range(0, 256): if not uwsgi.signal_registered(signum): return signum raise Exception("No free uwsgi signal available") def manage_spool_request(vars): # To check whether 'args' is in vals or not - decode the keys first, # because in python3 all keys in 'vals' are have 'byte' types vars = dict((_decode1(K), V) for (K, V) in vars.items()) if 'args' in vars: for k in ('args', 'kwargs'): vars[k] = pickle.loads(vars.pop(k)) vars = _decode_from_spooler(vars) f = spooler_functions[vars['ud_spool_func']] if 'args' in vars: ret = f(*vars['args'], **vars['kwargs']) else: ret = f(vars) return int(vars.get('ud_spool_ret', ret)) def postfork_chain_hook(): for f in postfork_chain: f() uwsgi.spooler = manage_spool_request uwsgi.post_fork_hook = postfork_chain_hook class postfork(object): def __init__(self, f): if callable(f): self.wid = 0 self.f = f else: self.f = None self.wid = f postfork_chain.append(self) def __call__(self, *args, **kwargs): if self.f: if self.wid > 0 and self.wid != uwsgi.worker_id(): return return self.f() self.f = args[0] class _spoolraw(object): def __call__(self, *args, **kwargs): arguments = self.base_dict.copy() if not self.pass_arguments: if len(args) > 0: arguments.update(args[0]) if kwargs: arguments.update(kwargs) else: spooler_args = {} for key in ('message_dict', 'spooler', 'priority', 'at', 'body'): if key in kwargs: spooler_args.update({key: kwargs.pop(key)}) arguments.update(spooler_args) arguments.update( {'args': pickle.dumps(args), 'kwargs': pickle.dumps(kwargs)}) return uwsgi.spool(_encode_to_spooler(arguments)) # For backward compatibility (uWSGI < 1.9.13) def spool(self, *args, **kwargs): return self.__class__.__call__(self, *args, **kwargs) def __init__(self, f, pass_arguments): if not 'spooler' in uwsgi.opt: raise Exception( "you have to enable the uWSGI spooler to use @%s decorator" % self.__class__.__name__) self.f = f spooler_functions[self.f.__name__] = self.f # For backward compatibility (uWSGI < 1.9.13) self.f.spool = self.__call__ self.pass_arguments = pass_arguments self.base_dict = {'ud_spool_func': self.f.__name__} class _spool(_spoolraw): def __call__(self, *args, **kwargs): self.base_dict['ud_spool_ret'] = str(uwsgi.SPOOL_OK) return _spoolraw.__call__(self, *args, **kwargs) class _spoolforever(_spoolraw): def __call__(self, *args, **kwargs): self.base_dict['ud_spool_ret'] = str(uwsgi.SPOOL_RETRY) return _spoolraw.__call__(self, *args, **kwargs) def spool_decorate(f=None, pass_arguments=False, _class=_spoolraw): if not f: return partial(_class, pass_arguments=pass_arguments) return _class(f, pass_arguments) def spoolraw(f=None, pass_arguments=False): return spool_decorate(f, pass_arguments) def spool(f=None, pass_arguments=False): return spool_decorate(f, pass_arguments, _spool) def spoolforever(f=None, pass_arguments=False): return spool_decorate(f, pass_arguments, _spoolforever) class mulefunc(object): def __init__(self, f): if callable(f): self.fname = f.__name__ self.mule = 0 mule_functions[f.__name__] = f else: self.mule = f self.fname = None def real_call(self, *args, **kwargs): uwsgi.mule_msg(pickle.dumps( { 'service': 'uwsgi_mulefunc', 'func': self.fname, 'args': args, 'kwargs': kwargs } ), self.mule) def __call__(self, *args, **kwargs): if not self.fname: self.fname = args[0].__name__ mule_functions[self.fname] = args[0] return self.real_call return self.real_call(*args, **kwargs) def mule_msg_dispatcher(message): msg = pickle.loads(message) if msg['service'] == 'uwsgi_mulefunc': return mule_functions[msg['func']](*msg['args'], **msg['kwargs']) uwsgi.mule_msg_hook = mule_msg_dispatcher class rpc(object): def __init__(self, name): self.name = name def __call__(self, f): uwsgi.register_rpc(self.name, f) return f class farm_loop(object): def __init__(self, f, farm): self.f = f self.farm = farm def __call__(self): if uwsgi.mule_id() == 0: return if not uwsgi.in_farm(self.farm): return while True: message = uwsgi.farm_get_msg() if message: self.f(message) class farm(object): def __init__(self, name=None, **kwargs): self.name = name def __call__(self, f): postfork_chain.append(farm_loop(f, self.name)) class mule_brain(object): def __init__(self, f, num): self.f = f self.num = num def __call__(self): if uwsgi.mule_id() == self.num: try: self.f() except: exc = sys.exc_info() sys.excepthook(exc[0], exc[1], exc[2]) sys.exit(1) class mule_brainloop(mule_brain): def __call__(self): if uwsgi.mule_id() == self.num: while True: try: self.f() except: exc = sys.exc_info() sys.excepthook(exc[0], exc[1], exc[2]) sys.exit(1) class mule(object): def __init__(self, num): self.num = num def __call__(self, f): postfork_chain.append(mule_brain(f, self.num)) class muleloop(mule): def __call__(self, f): postfork_chain.append(mule_brainloop(f, self.num)) class mulemsg_loop(object): def __init__(self, f, num): self.f = f self.num = num def __call__(self): if uwsgi.mule_id() == self.num: while True: message = uwsgi.mule_get_msg() if message: self.f(message) class mulemsg(object): def __init__(self, num): self.num = num def __call__(self, f): postfork_chain.append(mulemsg_loop(f, self.num)) class signal(object): def __init__(self, num, **kwargs): self.num = num self.target = kwargs.get('target', '') def __call__(self, f): uwsgi.register_signal(self.num, self.target, f) return f class timer(object): def __init__(self, secs, **kwargs): self.num = kwargs.get('signum', get_free_signal()) self.secs = secs self.target = kwargs.get('target', '') def __call__(self, f): uwsgi.register_signal(self.num, self.target, f) uwsgi.add_timer(self.num, self.secs) return f class cron(object): def __init__(self, minute, hour, day, month, dayweek, **kwargs): self.num = kwargs.get('signum', get_free_signal()) self.minute = minute self.hour = hour self.day = day self.month = month self.dayweek = dayweek self.target = kwargs.get('target', '') def __call__(self, f): uwsgi.register_signal(self.num, self.target, f) uwsgi.add_cron(self.num, self.minute, self.hour, self.day, self.month, self.dayweek) return f class rbtimer(object): def __init__(self, secs, **kwargs): self.num = kwargs.get('signum', get_free_signal()) self.secs = secs self.target = kwargs.get('target', '') def __call__(self, f): uwsgi.register_signal(self.num, self.target, f) uwsgi.add_rb_timer(self.num, self.secs) return f class filemon(object): def __init__(self, fsobj, **kwargs): self.num = kwargs.get('signum', get_free_signal()) self.fsobj = fsobj self.target = kwargs.get('target', '') def __call__(self, f): uwsgi.register_signal(self.num, self.target, f) uwsgi.add_file_monitor(self.num, self.fsobj) return f class erlang(object): def __init__(self, name): self.name = name def __call__(self, f): uwsgi.erlang_register_process(self.name, f) return f class lock(object): def __init__(self, f): self.f = f def __call__(self, *args, **kwargs): # ensure the spooler will not call it if uwsgi.i_am_the_spooler(): return uwsgi.lock() try: return self.f(*args, **kwargs) finally: uwsgi.unlock() class thread(object): def __init__(self, f): self.f = f def __call__(self, *args): t = Thread(target=self.f, args=args) t.daemon = True t.start() return self.f class harakiri(object): def __init__(self, seconds): self.s = seconds def real_call(self, *args, **kwargs): uwsgi.set_user_harakiri(self.s) r = self.f(*args, **kwargs) uwsgi.set_user_harakiri(0) return r def __call__(self, f): self.f = f return self.real_call