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

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在db中创建空对象或稍后保存   java如何实现UI无关的后台工作任务   java未能在Android中从BaseAdapter扩展的类中启动Tactivity?   java斐波那契迭代移动数组[]   安卓从文件读取提供了java。木卫一。StreamCorruptedException:无效的流标头:73720027   java计算矩形中的六边形数?   仅使用Java 1.5(或更早版本)读写XML   java如果所有元素都以相同的bucked结尾,为什么要进行大小调整?   java Apache POI Excel在xx中发现无法读取的内容。xlsx   swing我可以在普通java应用程序中使用GWTGUI吗?   来自自定义Java客户端的http删除请求的行为与邮递员不同   运行批处理文件时,java当前目录无效   使用TypeReference将java字符串转换为ArrayList<STRING>   documentlistener突出显示所有匹配词Java