Drop `name=__name__` from all `get_logger()` calls
Use new implicit module-name detection throughout codebase to simplify logger creation and leverage auto-naming from caller mod . Main changes, - drop `name=__name__` arg from all `get_logger()` calls (across 29 modules). - update `get_console_log()` calls to include `name='tractor'` for enabling root logger in test harness and entry points; this ensures logic in `get_logger()` triggers so that **all** `tractor`-internal logging emits to console. - add info log msg in test `conftest.py` showing test-harness log level Also, - fix `.actor.uid` ref to `.actor.aid.uid` in `._trace`. - adjust a `._context` log msg formatting for clarity. - add TODO comments in `._addr`, `._uds` for when we mv to using `multiaddr`. - add todo for `RuntimeVars` type hint TODO in `.msg.types` (once we eventually get that all going obvi!) (this commit msg was generated in some part by [`claude-code`][claude-code-gh]) [claude-code-gh]: https://github.com/anthropics/claude-codelog_sys_testing
parent
5e7c0f264d
commit
0b0c83e9da
|
|
@ -65,7 +65,11 @@ def loglevel(request):
|
|||
import tractor
|
||||
orig = tractor.log._default_loglevel
|
||||
level = tractor.log._default_loglevel = request.config.option.loglevel
|
||||
tractor.log.get_console_log(level)
|
||||
log = tractor.log.get_console_log(
|
||||
level=level,
|
||||
name='tractor', # <- enable root logger
|
||||
)
|
||||
log.info(f'Test-harness logging level: {level}\n')
|
||||
yield level
|
||||
tractor.log._default_loglevel = orig
|
||||
|
||||
|
|
|
|||
|
|
@ -17,9 +17,8 @@ from tractor.log import (
|
|||
get_console_log,
|
||||
get_logger,
|
||||
)
|
||||
log = get_logger(__name__)
|
||||
|
||||
|
||||
log = get_logger()
|
||||
|
||||
_resource: int = 0
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ from .ipc._uds import UDSAddress
|
|||
if TYPE_CHECKING:
|
||||
from ._runtime import Actor
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
# TODO, maybe breakout the netns key to a struct?
|
||||
|
|
@ -259,6 +259,8 @@ def wrap_address(
|
|||
|
||||
case _:
|
||||
# import pdbp; pdbp.set_trace()
|
||||
# from tractor.devx import mk_pdb
|
||||
# mk_pdb().set_trace()
|
||||
raise TypeError(
|
||||
f'Can not wrap unwrapped-address ??\n'
|
||||
f'type(addr): {type(addr)!r}\n'
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ if TYPE_CHECKING:
|
|||
CallerInfo,
|
||||
)
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
class Unresolved:
|
||||
|
|
@ -2391,16 +2391,18 @@ async def open_context_from_portal(
|
|||
case trio.Cancelled():
|
||||
logmeth = log.cancel
|
||||
cause: str = 'cancelled'
|
||||
msg: str = (
|
||||
f'ctx {ctx.side!r}-side {cause!r} with,\n'
|
||||
f'{ctx.repr_outcome()!r}\n'
|
||||
)
|
||||
|
||||
# XXX explicitly report on any non-graceful-taskc cases
|
||||
case _:
|
||||
cause: str = 'errored'
|
||||
logmeth = log.exception
|
||||
msg: str = f'ctx {ctx.side!r}-side {cause!r} with,\n'
|
||||
|
||||
logmeth(
|
||||
f'ctx {ctx.side!r}-side {cause!r} with,\n'
|
||||
f'{ctx.repr_outcome()!r}\n'
|
||||
)
|
||||
logmeth(msg)
|
||||
|
||||
if debug_mode():
|
||||
# async with debug.acquire_debug_lock(portal.actor.uid):
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ if TYPE_CHECKING:
|
|||
from ._runtime import Actor
|
||||
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
@acm
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ if TYPE_CHECKING:
|
|||
from ._spawn import SpawnMethodKey
|
||||
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
def _mp_main(
|
||||
|
|
@ -72,11 +72,15 @@ def _mp_main(
|
|||
spawn_ctx: mp.context.BaseContext = try_set_start_method(start_method)
|
||||
assert spawn_ctx
|
||||
|
||||
# XXX, enable root log at level
|
||||
if actor.loglevel is not None:
|
||||
log.info(
|
||||
f'Setting loglevel for {actor.uid} to {actor.loglevel}'
|
||||
f'Setting loglevel for {actor.uid} to {actor.loglevel!r}'
|
||||
)
|
||||
get_console_log(
|
||||
level=actor.loglevel,
|
||||
name='tractor',
|
||||
)
|
||||
get_console_log(actor.loglevel)
|
||||
|
||||
# TODO: use scops headers like for `trio` below!
|
||||
# (well after we libify it maybe..)
|
||||
|
|
@ -126,8 +130,12 @@ def _trio_main(
|
|||
parent_addr=parent_addr
|
||||
)
|
||||
|
||||
# XXX, enable root log at level
|
||||
if actor.loglevel is not None:
|
||||
get_console_log(actor.loglevel)
|
||||
get_console_log(
|
||||
level=actor.loglevel,
|
||||
name='tractor',
|
||||
)
|
||||
log.info(
|
||||
f'Starting `trio` subactor from parent @ '
|
||||
f'{parent_addr}\n'
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ from ._streaming import (
|
|||
if TYPE_CHECKING:
|
||||
from ._runtime import Actor
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
class Portal:
|
||||
|
|
|
|||
|
|
@ -289,10 +289,12 @@ async def open_root_actor(
|
|||
for uw_addr in uw_reg_addrs
|
||||
]
|
||||
|
||||
loglevel = (
|
||||
loglevel: str = (
|
||||
loglevel
|
||||
or log._default_loglevel
|
||||
).upper()
|
||||
or
|
||||
log._default_loglevel
|
||||
)
|
||||
loglevel: str = loglevel.upper()
|
||||
|
||||
if (
|
||||
debug_mode
|
||||
|
|
@ -323,7 +325,10 @@ async def open_root_actor(
|
|||
)
|
||||
|
||||
assert loglevel
|
||||
_log = log.get_console_log(loglevel)
|
||||
_log = log.get_console_log(
|
||||
level=loglevel,
|
||||
name='tractor',
|
||||
)
|
||||
assert _log
|
||||
|
||||
# TODO: factor this into `.devx._stackscope`!!
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ if TYPE_CHECKING:
|
|||
from .ipc import Channel
|
||||
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
# TODO: the list
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ if TYPE_CHECKING:
|
|||
from .ipc import IPCServer
|
||||
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
class ActorNursery:
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ from tractor.msg import (
|
|||
import wrapt
|
||||
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
# TODO: yeah, i don't love this and we should prolly just
|
||||
# write a decorator that actually keeps a stupid ref to the func
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ from tractor import (
|
|||
)
|
||||
from tractor.devx import debug
|
||||
|
||||
log = logmod.get_logger(__name__)
|
||||
log = logmod.get_logger()
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ from ._sigint import (
|
|||
_ctlc_ignore_header as _ctlc_ignore_header
|
||||
)
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
# ----------------
|
||||
# XXX PKG TODO XXX
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ _crash_msg: str = (
|
|||
'Opening a pdb REPL in crashed actor'
|
||||
)
|
||||
|
||||
log = get_logger(__package__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
class BoxedMaybeException(Struct):
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ if TYPE_CHECKING:
|
|||
Actor,
|
||||
)
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
_ctlc_ignore_header: str = (
|
||||
'Ignoring SIGINT while debug REPL in use'
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ from ._sigint import (
|
|||
_ctlc_ignore_header as _ctlc_ignore_header
|
||||
)
|
||||
|
||||
log = get_logger(__package__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
async def maybe_wait_for_debugger(
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ if TYPE_CHECKING:
|
|||
# from ._post_mortem import BoxedMaybeException
|
||||
from ._repl import PdbREPL
|
||||
|
||||
log = get_logger(__package__)
|
||||
log = get_logger()
|
||||
|
||||
_pause_msg: str = 'Opening a pdb REPL in paused actor'
|
||||
_repl_fail_msg: str|None = (
|
||||
|
|
@ -628,7 +628,7 @@ def _set_trace(
|
|||
log.pdb(
|
||||
f'{_pause_msg}\n'
|
||||
f'>(\n'
|
||||
f'|_{actor.uid}\n'
|
||||
f'|_{actor.aid.uid}\n'
|
||||
f' |_{task}\n' # @ {actor.uid}\n'
|
||||
# f'|_{task}\n'
|
||||
# ^-TODO-^ more compact pformating?
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ if TYPE_CHECKING:
|
|||
BoxedMaybeException,
|
||||
)
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
class LockStatus(
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ if TYPE_CHECKING:
|
|||
from ._transport import MsgTransport
|
||||
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
_is_windows = platform.system() == 'Windows'
|
||||
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ if TYPE_CHECKING:
|
|||
from .._supervise import ActorNursery
|
||||
|
||||
|
||||
log = log.get_logger(__name__)
|
||||
log = log.get_logger()
|
||||
|
||||
|
||||
async def maybe_wait_on_canced_subs(
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ except ImportError:
|
|||
pass
|
||||
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
SharedMemory = disable_mantracker()
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ from tractor.ipc._transport import (
|
|||
)
|
||||
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
class TCPAddress(
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ from tractor.msg import (
|
|||
if TYPE_CHECKING:
|
||||
from tractor._addr import Address
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
# (codec, transport)
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ if TYPE_CHECKING:
|
|||
from ._runtime import Actor
|
||||
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
def unwrap_sockpath(
|
||||
|
|
@ -166,6 +166,10 @@ class UDSAddress(
|
|||
)
|
||||
if actor:
|
||||
sockname: str = '::'.join(actor.uid) + f'@{pid}'
|
||||
# ?^TODO, for `multiaddr`'s parser we can't use the `::`
|
||||
# above^, SO maybe a `.` or something else here?
|
||||
# sockname: str = '.'.join(actor.uid) + f'@{pid}'
|
||||
# -[ ] CURRETLY using `.` BREAKS TEST SUITE tho..
|
||||
else:
|
||||
prefix: str = '<unknown-actor>'
|
||||
if is_root_process():
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ from tractor.log import get_logger
|
|||
if TYPE_CHECKING:
|
||||
from tractor._context import Context
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
# TODO: unify with `MsgCodec` by making `._dec` part this?
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ if TYPE_CHECKING:
|
|||
from tractor._streaming import MsgStream
|
||||
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
_def_any_pldec: MsgDec[Any] = mk_dec(spec=Any)
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ from tractor.log import get_logger
|
|||
# from tractor._addr import UnwrappedAddress
|
||||
|
||||
|
||||
log = get_logger('tractor.msgspec')
|
||||
log = get_logger()
|
||||
|
||||
# type variable for the boxed payload field `.pld`
|
||||
PayloadT = TypeVar('PayloadT')
|
||||
|
|
@ -202,7 +202,10 @@ class SpawnSpec(
|
|||
# TODO: similar to the `Start` kwargs spec needed below, we need
|
||||
# a hard `Struct` def for all of these fields!
|
||||
_parent_main_data: dict
|
||||
_runtime_vars: dict[str, Any]
|
||||
_runtime_vars: (
|
||||
dict[str, Any]
|
||||
#|RuntimeVars # !TODO
|
||||
)
|
||||
# ^NOTE see `._state._runtime_vars: dict`
|
||||
|
||||
# module import capability
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ from trio.lowlevel import current_task
|
|||
from msgspec import Struct
|
||||
from tractor.log import get_logger
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
# TODO: use new type-vars syntax from 3.12
|
||||
# https://realpython.com/python312-new-features/#dedicated-type-variable-syntax
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ if TYPE_CHECKING:
|
|||
from tractor import ActorNursery
|
||||
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
# A regular invariant generic type
|
||||
T = TypeVar("T")
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ from typing import (
|
|||
import trio
|
||||
from tractor.log import get_logger
|
||||
|
||||
log = get_logger(__name__)
|
||||
log = get_logger()
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
|
|
@ -246,23 +246,12 @@ async def maybe_raise_from_masking_exc(
|
|||
type(exc_match) # masked type
|
||||
)
|
||||
|
||||
# Add to masked `exc_ctx`
|
||||
if do_warn:
|
||||
exc_ctx.add_note(note)
|
||||
|
||||
if (
|
||||
do_warn
|
||||
and
|
||||
type(exc_match) in always_warn_on
|
||||
):
|
||||
log.warning(note)
|
||||
|
||||
if (
|
||||
do_warn
|
||||
and
|
||||
raise_unmasked
|
||||
):
|
||||
# don't unmask already known "special" cases..
|
||||
if len(masked) < 2:
|
||||
# don't unmask already known "special" cases..
|
||||
if (
|
||||
_mask_cases
|
||||
and
|
||||
|
|
@ -283,11 +272,26 @@ async def maybe_raise_from_masking_exc(
|
|||
)
|
||||
raise exc_match
|
||||
|
||||
raise exc_ctx from exc_match
|
||||
# ^?TODO, see above but, possibly unmasking sub-exc
|
||||
# entries if there are > 1
|
||||
# else:
|
||||
# await pause(shield=True)
|
||||
|
||||
if type(exc_match) in always_warn_on:
|
||||
import traceback
|
||||
trace: list[str] = traceback.format_exception(
|
||||
type(exc_ctx),
|
||||
exc_ctx,
|
||||
exc_ctx.__traceback__
|
||||
)
|
||||
tb_str: str = ''.join(trace)
|
||||
log.warning(tb_str)
|
||||
# XXX, for debug
|
||||
# from tractor import pause
|
||||
# await pause(shield=True)
|
||||
|
||||
if raise_unmasked:
|
||||
raise exc_ctx from exc_match
|
||||
|
||||
# ??TODO, see above but, possibly unmasking sub-exc
|
||||
# entries if there are > 1
|
||||
# else:
|
||||
# await pause(shield=True)
|
||||
else:
|
||||
raise
|
||||
|
|
|
|||
Loading…
Reference in New Issue