<commit_before>sanetime
========

**simple, intuitive date/time manipulation**

::

    >>> from sanetime import time,tztime,delta

    >>> time('2011-01-01','America/New_York').ms
    23208402093

    >>> time(ms=3928840234342).strftime("sjdlkjs")
    lkfjsld lskdjf

    >>> tztime(ms=3928840234342,'Europe/London').datetime
    lkfjsld lskdjf

    >>> -(time()-time()).us
    84

    >>> (time(s=2039420392) - time(s=239402342)).h
    2

If you've ever used python's datetime, date, time, calendar, timedelta, timetuple, pytz, and dateutil modules and thought: "Wow -- I love how explicit I'm being right now", then this library is not for you.

If, on the other hand, you like preserving your braincells for more important things, then you have found what you're looking for.

sanetime was written to DRY up all the common date/time manipulations we do constantly in our code while presenting the most intuitive client possible:



FAQ
===
Why is everything stored internally as microseconds?

Python's datetime gives us access to microseconds, and since milliseconds would already have us cross the 32bit integer boundary, we might as well capture everything we can and take on microseconds as well.  There are plenty of helpers on the time, tztime, and delta classes so you never have to see/manipulate the huge microsecond numbers yourself.





The Basics<commit_msg>tweaking more documentation<commit_after>sanetime
========

**simple, intuitive, powerful date/time manipulation**

::

    >>> from sanetime import time,tztime,delta

    >>> time('2011-01-01','America/New_York').ms
    23208402093

    >>> time(ms=3928840234342).strftime("sjdlkjs")
    lkfjsld lskdjf

    >>> tztime(s=3928840234342,'Europe/London').datetime
    lkfjsld lskdjf

    >>> -(time()-time()).us
    84

    >>> (time(s=2039420392) - time(s=239402342)).h
    2

If you've ever used python's datetime, date, time, calendar, timedelta, timetuple, pytz, and dateutil modules and thought: "Wow -- I love how explicit I'm being right now", then this library is not for you.

If, on the other hand, you like preserving your braincells for more important things, then you have found what you're looking for.

sanetime was written to DRY up all the common date/time manipulations we do constantly in our code while presenting the most simple and intuitive client possible.


okay...
----------



FAQ
===
Why is everything stored internally as microseconds?

Python's datetime gives us access to microseconds, and since milliseconds would already have us cross the 32bit integer boundary, we might as well capture everything we can and take on microseconds as well.  There are plenty of helpers on the time, tztime, and delta classes so you never have to see/manipulate the huge microsecond numbers yourself.





The Basics
{'fraction_non_alphanumeric': 0.09126559714795009, 'fraction_numerical': 0.04919786096256684, 'mean_word_length': 4.101818181818182, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 39, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6460053', 'n_tokens_mistral': 931, 'n_tokens_neox': 775, 'n_words': 339}