我正在使用cpython datetime api尝试为Howard Hinnant's date library zoned_time对象编写pybind11绑定,为此我必须在Howard Hinnant的TimeZone和cpython PyDateTime_TZInfo之间执行双向转换。
cpython中的PyDateTime_CAPI定义了许多用于创建PyDateTime_ *对象的操作;但是,它只定义了TZInfo的类型,没有创建这些对象的方法。 implementation of the api定义了一个非常基本的时区实现;但是,这不是通过API公开的。最终,为了在时区对象上具有适当的可操作性,需要对TZInfo接口进行一些C ++实现。我在这里看到的问题是API代码依赖于 call_tzinfo_method ,它正在调用假定在派生的python类上实现的方法,而不是在接口上实现的方法。从我在这里看到的,没有办法在C ++中实现TZInfo对象,这最终将无法正确绑定时区感知日期时间对象。有没有办法绕过这个或者在当前的cpython实现中这根本不可能?
答案 0 :(得分:0)
TZInfo对象可以使用PyTimeZone_FromOffsetAndName
和PyTimeZone_FromOffset
在3.7版的CPython API中创建