1. 20 Nov, 2020 1 commit
  2. 14 Oct, 2020 2 commits
  3. 08 Sep, 2020 3 commits
  4. 19 Jun, 2020 4 commits
  5. 18 Jun, 2020 5 commits
    • Lowell Alleman's avatar
      Python 2.7 fix · 52f4878f
      Lowell Alleman authored
      52f4878f
    • Lowell Alleman's avatar
      Add cron expression optimizations · 860cd073
      Lowell Alleman authored
      - Optimized for duplicate entries in a cron expression.  For example if min
        contains '1,5-8,8,5' this can be reduced from [1,5,5,6,7,8,8]
        to simply [1,5,6,7,8].
      - Replaced full ranges with a wildcard.  So if mins contain '0-59', this can be
        swapped with "*".  Detecting a "full" entry is possible because of existing
        bounds checking, min value substitution, duplicate removal (new), and max
        value identification (LEN_MEANS_ALL).  So a poorly written hour expression
        like '1-20,0,15-23' can also be reduced to simply "*".
      860cd073
    • Lowell Alleman's avatar
      Tests with redundant/inefficient cron expressions · 4bdf65e3
      Lowell Alleman authored
      Add new unittest cases with real-world examples of poorly written cron
      expressions created by end-users (who aren't cron experts).  Specific
      optimizations opportunities include:
      - Range reduction:  Minutes of 0-59 can be replaced with "*".
      - Removal of duplicate values: Hours of 4,1-4,5,4 can be simplified to 1-5
      4bdf65e3
    • Lowell Alleman's avatar
      Another unit test (passes as-is) · e7cfa4d0
      Lowell Alleman authored
      - Added another unit DST unit test.  Core croniter handles this correctly,
        likely an issue elsewhere in my code.  Adding this for reference.
      e7cfa4d0
    • Lowell Alleman's avatar
      Remove croniter_range() timezone safety check · 7957c9e8
      Lowell Alleman authored
      - Removed the timezone check for the croniter_range() check, it seemed like a
        good idea, but became more trouble that it's worth.  The behavior is well
        defined.  The timezone from 'start' is used and the one from 'stop' is
        only used for terminating the generator, it's up to the user to select
        timezones combinations that make sense.
      - Replaced unitest.  New unit test ensures that croniter_range() works across
        DST boundaries.
      7957c9e8
  6. 17 Jun, 2020 4 commits
    • Lowell Alleman's avatar
      Simplify datetime type check · c56cca1b
      Lowell Alleman authored
      - Switched to use `issubclass()` for datetime check instead of issubclass, as
        supporting custom classes derived from datetime isn't really supported
        anywhere else so the previous code was awkward and unnecessary.
      - Tentatively mark first release as 0.3.34.
      c56cca1b
    • Lowell Alleman's avatar
      croniter_range: Tweak internals · 617489b3
      Lowell Alleman authored
      - Revamp some internal implementation details of the croniter_range() function.
      - Ran flake8 for some cleanup & confirmed with tox
      - Fixed coverage of croniter_range(): 100%
      617489b3
    • Lowell Alleman's avatar
      croniter_range: Allow different ret_type/input types · 9922aec2
      Lowell Alleman authored
      - Allow the ret_type to differ from the provided start/stop type.  This is
        closer to the behavior of the croniter() class.  The one difference is that
        if you don't specify 'ret_type' it will autodetect the input type and return
        the same type, which is nice, since that's likely the typical use case.
      9922aec2
    • Lowell Alleman's avatar
      Add croniter_range(start,end,cron_expr) function · 416527f6
      Lowell Alleman authored
      - Created new helper function `croniter_range()` that allows forward or reverse
        time range iteration based on a given cron expression.  Initial implementation
        handles `ret_type` in a way that's a bit different than the croniter class.
      - Added several test cases to a new test class to keep croniter and
        croniter_range cases cleanly separated.
      - Updated README to include example use of croniter_range().
      416527f6
  7. 15 Jun, 2020 6 commits
  8. 11 Jun, 2020 3 commits
    • Lowell Alleman's avatar
      Gitignore for coverage · 7abc01ba
      Lowell Alleman authored
      - Block coverage files created by 'coverage run' and 'coverage annotate'
      - Skip the '.python-version' file associated with pyenv
      7abc01ba
    • Lowell Alleman's avatar
      Trivial reStructuredText tweaks · 77ce291e
      Lowell Alleman authored
      - Update some `interpreted text` markup with ``inline literals``
      - Note version that 'match' was added - 0.3.32
      - Add a missing trailing '::'
      77ce291e
    • Lowell Alleman's avatar
      Make dateutil tz support more official · 103557b6
      Lowell Alleman authored
      - Add a dateutil.tz unittest to ensure that tz implementation gets tested.
      - Updated README to note an example with the python_dateutil module.
      - Updated the pytz DST example too, giving users a full example to borrow from.
      103557b6
  9. 10 Jun, 2020 1 commit
  10. 09 Jun, 2020 1 commit
  11. 08 Jun, 2020 1 commit
  12. 27 May, 2020 9 commits