Compare commits

..

No commits in common. "2bb33da9c82ad1d19e6ef239ee61b035219aa59b" and "0ccf83d5200c7d40fe155208b8b2c9c6d99a3677" have entirely different histories.

4 changed files with 13 additions and 57 deletions

View File

@ -83,26 +83,3 @@ def test_implicit_root_via_first_nursery(
assert tractor.current_actor().aid.name == 'root' assert tractor.current_actor().aid.name == 'root'
trio.run(main) trio.run(main)
def test_runtime_vars_unset(
reg_addr: tuple,
debug_mode: bool
):
'''
Ensure any `._state._runtime_vars` are restored to default values
after the root actor-runtime exits!
'''
assert not tractor._state._runtime_vars['_debug_mode']
async def main():
assert not tractor._state._runtime_vars['_debug_mode']
async with tractor.open_nursery(
debug_mode=True,
):
assert tractor._state._runtime_vars['_debug_mode']
# after runtime closure, should be reverted!
assert not tractor._state._runtime_vars['_debug_mode']
trio.run(main)

View File

@ -276,8 +276,7 @@ async def open_root_actor(
if ( if (
debug_mode debug_mode
and and _spawn._spawn_method == 'trio'
_spawn._spawn_method == 'trio'
): ):
_state._runtime_vars['_debug_mode'] = True _state._runtime_vars['_debug_mode'] = True
@ -513,17 +512,8 @@ async def open_root_actor(
) )
await actor.cancel(None) # self cancel await actor.cancel(None) # self cancel
finally: finally:
# revert all process-global runtime state
if (
debug_mode
and
_spawn._spawn_method == 'trio'
):
_state._runtime_vars['_debug_mode'] = False
_state._current_actor = None _state._current_actor = None
_state._last_actor_terminated = actor _state._last_actor_terminated = actor
logger.runtime( logger.runtime(
f'Root actor terminated\n' f'Root actor terminated\n'
f')>\n' f')>\n'

View File

@ -270,9 +270,7 @@ def get_logger(
subsys_spec: str|None = None, subsys_spec: str|None = None,
) -> StackLevelAdapter: ) -> StackLevelAdapter:
''' '''Return the package log or a sub-logger for ``name`` if provided.
Return the `tractor`-library root logger or a sub-logger for
`name` if provided.
''' '''
log: Logger log: Logger
@ -284,7 +282,7 @@ def get_logger(
name != _proj_name name != _proj_name
): ):
# NOTE: for handling for modules that use `get_logger(__name__)` # NOTE: for handling for modules that use ``get_logger(__name__)``
# we make the following stylistic choice: # we make the following stylistic choice:
# - always avoid duplicate project-package token # - always avoid duplicate project-package token
# in msg output: i.e. tractor.tractor.ipc._chan.py in header # in msg output: i.e. tractor.tractor.ipc._chan.py in header
@ -333,7 +331,7 @@ def get_logger(
def get_console_log( def get_console_log(
level: str|None = None, level: str|None = None,
logger: Logger|StackLevelAdapter|None = None, logger: Logger|None = None,
**kwargs, **kwargs,
) -> LoggerAdapter: ) -> LoggerAdapter:
@ -346,23 +344,12 @@ def get_console_log(
Yeah yeah, i know we can use `logging.config.dictConfig()`. You do it. Yeah yeah, i know we can use `logging.config.dictConfig()`. You do it.
''' '''
# get/create a stack-aware-adapter log = get_logger(
if (
logger
and
isinstance(logger, StackLevelAdapter)
):
# XXX, for ex. when passed in by a caller wrapping some
# other lib's logger instance with our level-adapter.
log = logger
else:
log: StackLevelAdapter = get_logger(
logger=logger, logger=logger,
**kwargs **kwargs
) ) # set a root logger
logger: Logger = log.logger
logger: Logger|StackLevelAdapter = log.logger
if not level: if not level:
return log return log
@ -380,7 +367,10 @@ def get_console_log(
None, None,
) )
): ):
fmt: str = LOG_FORMAT # always apply our format? fmt = LOG_FORMAT
# if logger:
# fmt = None
handler = StreamHandler() handler = StreamHandler()
formatter = colorlog.ColoredFormatter( formatter = colorlog.ColoredFormatter(
fmt=fmt, fmt=fmt,

View File

@ -31,5 +31,4 @@ from ._broadcast import (
) )
from ._beg import ( from ._beg import (
collapse_eg as collapse_eg, collapse_eg as collapse_eg,
maybe_collapse_eg as maybe_collapse_eg,
) )