On Mon, Dec 6, 2021 at 1:48 AM <2qdxy4rzwzuui...@potatochowder.com> wrote:
>
> On 2021-12-05 at 20:30:53 +1100,
> Chris Angelico <ros...@gmail.com> wrote:
>
> > On Sun, Dec 5, 2021 at 5:41 PM <2qdxy4rzwzuui...@potatochowder.com> wrote:
> > > Also FWIW, I still think that if you're doing (b) or (c), then you're
> > > *not* doing default values anymore, you're moving pieces of the logic or
> > > the design into the wrong place.  One example of (b) goes something like
> > > this:
> > >
> > >     def write_to_log(event, time=>current_time()):
> > >         actually_write_to_log(event, time)
> >
> > Very very common use-case for that:
> >
> > https://pyauth.github.io/pyotp/#time-based-otps
>
> I agree.  *Not* conflating timestamps and event IDs is a good thing!
> APIs and libraries like that are making my point:  the very notion of
> "overriding the current time" is a bad one.  The notion of "defaulting
> to the current time" might be okay, in some systems, until it isn't.

Time-based OTPs are using timestamps. That's what they do. Defaulting
to the current time is *precisely* how most 2FA systems work. Being
able to override the time is useful primarily for testing. So for the
TOTP case, I would say that "timestamp=>time.time()" is the perfect
way to spell it.

> > The vast majority of calls are going to leave the time parameter at
> > the default. (The one I linked to has separate "at" and "now"
> > functions, but combining them makes very good sense.)
>
> I disagree.  Combining/conflating the time an event occurred and the
> time it's actually logged doesn't make sense at all.  Or maybe I've
> spent too much time rummaging through logs from concurrent and parallel
> systems.
>
> Oh, wait, we're veering off topic, but you like you said, this is Python
> Ideas!  ;-)

I don't know why you'd have something in a logger that lets you
configure the time, but my guess would be that it's the same thing:
you can unit-test the logger with consistent inputs. For instance:

def format_log_line(event, time=>current_time(), host=>get_host()):
    return ...

# shorthand, obv you'd be using a proper testing framework
assert format_log_line({...}, time=1638717131, host="example") == "..."

TBH, I think that defaulting to "event happened right now" is about as
good a default as you'll ever get. In some situations you'll know when
the event happened... but honestly, I'd rather know when the log line
happened too. So if I have an event with an inbuilt timestamp, I'll
incorporate that into the *body* of the log line, and still have the
logger add its own timestamp.

But maybe I've spent too much time rummaging through logs from buggy systems.

ChrisA
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/3H4ZZVXKFRIJ5BDLG6HLVYEXJ4NMYICV/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to