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

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 Requestcontextholder在spring 4中具有并发访问权限。IBMWebSphere上的x Web应用程序?   java如何下载、设置和使用Eclipse?   java如何组合这些mysql语句   java JDBC无法连接到openshift上的mysql数据库   如果存在允许正确处理的重载,java对于方便的方法来说是否可行?   使用hibernate序列的java Spring MVC不存在   具有路径的java Selenium ChromeDriver负载扩展问题   读一本书。java中的java文件   退出队列时,Java队列程序结果为空   Java lambda返回带有重复代码问题的列表   java使用意图从其他活动传递数据并在listview中显示   java如何在java中创建JSON输出   java Android:在不破坏或暂停活动的情况下关闭显示   支持Android电视和手机的java多apk   关于Java应用程序测试和调试的一组问题   如何在JavaSE中使用jdbcRealmShiro进行授权   在java中是否有一个无异常检查的URL解析实用程序?   当页面上有多个相同类型的元素时,java会选择一个特定的元素   递归需要帮助发现java代码中的缺陷