Tracking variable whereabouts in a plugin
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 20.6k
- Forks
- 3.3k
- PR merge metrics
- PR metrics pending
Description
Please provide more information to help us understand the issue:
- Type: question
- Referecenes:
- Expected behavior: being able to track down variable i.e. from a process it was initialized.
Code below should illustrate an expected behavior. - Actual behavior: n/a
- mypy version:
>=0.770
from luguru import logger
LOG_A = logger.opt(lazy=False)
LOG_B = logger.opt(lazy=True)
LOG_A.info('Test {}', lambda x: x) # should work
LOG_B.info('Test {}', lambda x: x) # error
logger.opt(lazy=False).info('Test {c}', c=lambda x: x) # should work
logger.opt(lazy=True).info('Test {d}', d=lambda x: x) # error
In short: with loguru you can use Callable[[], Any] for lazy loggers to avoid costly computations. But those have to be non-argument callables. Above you can find non-lazy loggers that will work just fine by doing str(callable). In other words, to rephrase question from above, how can we:
track a variable/object on which behalf a method was called?
This is quite vital because type checking cannot be done solely on a method call level because we need something from another call. There is opt method being called but having call details from it without anything to tie them to will not help too much.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the linked loguru-mypy question and the original loguru pull request, then examine how mypy handles the chained opt(...).info(...) calls shown here. The issue does not identify a file, test, or settled implementation approach; done would require an agreed way to track the logger object across those calls and a clearly defined validation case.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100