调度库,它提供了一种通用的方法来组合和查询经常性连续事件的调度,如组织、会议、电影放映等的工作时间。

python-tempo的Python项目详细描述


Build StatusCoverage

此项目提供了一种通用的方法来组合和查询 经常性的连续事件,如组织的工作时间、会议, 电影节目等。

它包含一个python实现和postgresql的绑定, django和django rest框架。

功能

  • 灵活的调度模型,可以表示ScCuffes,和其他库 不行。
  • 查询:包含单个时间戳、将来发生的事件。
  • 绑定:
    • PostgreSQL
      • 用于存储计划的域类型
      • 对其进行测试的程序 (时间戳包含,未来发生的事件)。
    • django
      • 模型字段
      • 自定义查找 (时间戳包含, 与两个时间戳之间的间隔相交, 测试预定事件是否在给定时间间隔内发生 两个时间戳之间)。
    • django rest框架
      • 用于序列化和反序列化计划的序列化程序字段。

快速示例

只是一个简短的例子,它展示了如何构造和查询一个调度。

>>> import datetime as dt
>>> from itertools import islice
>>> from tempo.recurrenteventset import RecurrentEventSet
>>> recurrenteventset = RecurrentEventSet.from_json(
...     ('OR',
...         ('AND', [1, 5, 'day', 'week'], [10, 19, 'hour', 'day']),
...         ('AND', [5, 6, 'day', 'week'], [10, 16, 'hour', 'day']))
... )  # 10-19 from Monday to Thursday and 10-16 in Friday
>>> d1 = dt.datetime(year=2000, month=10, day=5, hour=18)
>>> d1.weekday()  # Thursday
3
>>> d1 in recurrenteventset
True
>>> d2 = dt.datetime(year=2000, month=10, day=6, hour=18)
>>> d2.weekday()  # Friday
4
>>> d2 in recurrenteventset
False
>>> d = dt.datetime(year=2000, month=1, day=1)
>>> list(islice(recurrenteventset.forward(start=d), 3))
[(datetime.datetime(2000, 1, 3, 10, 0),
  datetime.datetime(2000, 1, 3, 19, 0)),
 (datetime.datetime(2000, 1, 4, 10, 0),
  datetime.datetime(2000, 1, 4, 19, 0)),
 (datetime.datetime(2000, 1, 5, 10, 0),
  datetime.datetime(2000, 1, 5, 19, 0))]
调度模型

示例

下面是一个节奏如何表示时间表的示例:

('OR',
        ('AND', [1, 5, 'day', 'week'], [10, 19, 'hour', 'day']),
        ('AND', [5, 6, 'day', 'week'], [10, 16, 'hour', 'day'])))

意思是“从周一到周四上午10点到晚上7点 在星期五上午10点到下午4点之间”。

非正式定义

时间表的基本组成部分是一个经常性的事件, 定义如下:

[<start time>, <end time>, <time unit>, <recurrence unit>]

<;开始时间>;<;结束时间>;是数字,定义 哪一个事件会发生。<;时间单位>;定义 间隔值的时间。并且<;重复单位>;定义多长时间 间隔重复。<;时间单位>;<;重复单位>;值是时间 测量单位,如“秒”、“小时”、“日”、“周”、“年”等。 <;重复单位>;也可以为“空”,这意味着间隔不 在时间上重复,它只是定义了两个时间点,对应于 事件的起点和终点。

可使用运算符组合重复事件:union-, 交叉点-和否定-不是

待办事项

  1. 有关RecurrentEventSet的更多测试。
  2. 为日程表实现负索引:从一天结束开始索引 或月等。它将使库能够模拟 “本月最后一个星期五”。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java接口中的每个方法都是抽象的,但在抽象类中,我们也只能使用抽象方法   初始化Java中声明的、未初始化的变量会发生什么情况?   java BouncyCastle openPGP将字节[]数组加密为csv文件   在Java中将类A(和所有子类)映射到类B的实例的字典   RSA公钥编码,在Java和Android中,代码相同,结果不同   java在安卓中实现数字检测语音识别   java取消选择复选框   java如何在其他配置中重用Maven配置XML片段   java有没有一种有效的方法来检查HashMap是否包含映射到相同值的键?   spring处理程序调度失败;嵌套的例外是java。lang.NoClassDefFoundError:org/apache/http/client/HttpClient   带有ehcache的java多层缓存   java如何访问chromium(或任何其他浏览器)cookie   java通过将两个集合与spring data mongodb data中的条件合并来获取计数   安卓中R.java的语法错误