Skip to content

Commit

Permalink
Fixed minor issues
Browse files Browse the repository at this point in the history
  • Loading branch information
dhondta committed Oct 7, 2023
1 parent 58a550f commit a285d0f
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 36 deletions.
2 changes: 1 addition & 1 deletion src/tinyscript/VERSION.txt
@@ -1 +1 @@
1.28.5
1.28.6
4 changes: 2 additions & 2 deletions src/tinyscript/helpers/path.py
Expand Up @@ -231,10 +231,10 @@ def is_samepath(self, otherpath):

def is_under(self, parentpath):
""" Check if the path is under a parent path. """
p = Path(parentpath)
p = Path(parentpath).absolute()
if not p.is_dir():
p = Path(p.dirname)
return p in self.parents
return p in self.absolute().parents

def iterfiles(self, filetype=None, filename_only=False, relative=False):
""" List all files from the current directory. """
Expand Down
43 changes: 21 additions & 22 deletions src/tinyscript/preimports/ftools.py
@@ -1,22 +1,21 @@
# -*- coding: UTF-8 -*-
"""Module for enhancing functools preimport.
Source: https://stackoverflow.com/questions/43506378/how-to-get-source-code-of-function-that-is-wrapped-by-a-decorator
"""
import functools
import sys


if sys.version_info < (3,):
def add_wrapped_dunder(uw):
""" This adds the __wrapped__ dunder to a wrapped function. This is implemented from Python 3.2 and is thus
added for compatibility with Python 2. """
@functools.wraps(uw)
def update_wrapper(wrapper, wrapped, assigned=functools.WRAPPER_ASSIGNMENTS, updated=functools.WRAPPER_UPDATES):
wrapper = uw(wrapper, wrapped, assigned, updated)
wrapper.__wrapped__ = wrapped
return wrapper
return update_wrapper
functools.update_wrapper = add_wrapped_dunder(functools.update_wrapper)

# -*- coding: UTF-8 -*-
"""Module for enhancing functools preimport.
"""
import functools


# source: https://stackoverflow.com/questions/6394511/python-functools-wraps-equivalent-for-classes
def wraps_cls(cls):
class _Wrapper(cls):
def __init__(self, wrapped, assignents=functools.WRAPPER_ASSIGNMENTS):
self.__wrapped__ = wrapped
for attr in assignents:
setattr(self, attr, getattr(wrapped, attr))
super().__init__()

def __repr__(self):
return repr(self.__wrapped__)
return _Wrapper
functools.wraps_cls = wraps_cls

22 changes: 12 additions & 10 deletions src/tinyscript/preimports/log.py
Expand Up @@ -7,7 +7,6 @@
import re
import sys
import types
from functools import wraps
from platform import system
from time import gmtime

Expand Down Expand Up @@ -73,10 +72,15 @@ def bindLogger(f):
Inspired from: https://stackoverflow.com/questions/17862185/how-to-inject-variable-into-scope-with-a-decorator
"""
@wraps(f)
from .ftools import functools
f_glob = getattr(f, "__globals__", {})
wraps_func = [functools.wraps, functools.wraps_cls][isinstance(f, type)]
if isinstance(f, type):
f.logger = f_glob.get('logger') or inspect.getmainglobals().get('logger') or logging.nullLogger
@wraps_func(f)
def _wrapper(*args, **kwargs):
logger = kwargs.pop('logger', None) or f.__globals__.get('logger') or inspect.getmainglobals().get('logger') \
or logging.nullLogger
logger = kwargs.pop('logger', None) or f_glob.get('logger') or inspect.getmainglobals().get('logger') or \
logging.nullLogger
if logger.name not in ["main", "null"]:
setLogger(logger.name)
# if f is a method, bind the logger to self
Expand All @@ -85,17 +89,16 @@ def _wrapper(*args, **kwargs):
return f(*args, **kwargs)
# otherwise, pass the logger through globals
else:
glob = f.__globals__
sentinel = object()
old = glob.get('logger', sentinel)
glob['logger'] = logger
old = f_glob.get('logger', sentinel)
f_glob['logger'] = logger
try:
return f(*args, **kwargs)
finally:
if old is sentinel:
del glob['logger']
del f_glob['logger']
else:
glob['logger'] = old
f_glob['logger'] = old
return _wrapper
logging.bindLogger = bindLogger

Expand Down Expand Up @@ -258,7 +261,6 @@ def unsetLoggers(*names, **kwargs):
:param names: logger names
"""
force = kwargs.get('force', False)
for name in names:
unsetLogger(name)
logging.unsetLoggers = unsetLoggers
Expand Down
2 changes: 1 addition & 1 deletion src/tinyscript/preimports/rand.py
Expand Up @@ -23,7 +23,7 @@ def __randstr(n=8, alphabet=string.ascii_lowercase+string.ascii_uppercase+string
for i in range(n):
s += random.choice(alphabet)
return s
random.randstr = __randstr
random.randstr = __randstr


class __Base(object):
Expand Down

0 comments on commit a285d0f

Please sign in to comment.