sig
  type +'a period constraint 'a = [< Period.date_field ]
  type t = Period.date_field Calendar_sig.S.Period.period
  val empty : [< Period.date_field ] Calendar_sig.S.Period.period
  val add :
    ([< Period.date_field > `Day `Week ] as 'a) Calendar_sig.S.Period.period ->
    'Calendar_sig.S.Period.period -> 'Calendar_sig.S.Period.period
  val sub :
    ([< Period.date_field > `Day `Week ] as 'a) Calendar_sig.S.Period.period ->
    'Calendar_sig.S.Period.period -> 'Calendar_sig.S.Period.period
  val opp :
    ([< Period.date_field > `Day `Week ] as 'a) Calendar_sig.S.Period.period ->
    'Calendar_sig.S.Period.period
  val equal :
    [< Period.date_field ] Calendar_sig.S.Period.period ->
    [< Period.date_field ] Calendar_sig.S.Period.period -> bool
  val compare :
    [< Period.date_field ] Calendar_sig.S.Period.period ->
    [< Period.date_field ] Calendar_sig.S.Period.period -> int
  val hash : [< Period.date_field ] Calendar_sig.S.Period.period -> int
  val make :
    int ->
    int ->
    int -> int -> int -> Calendar_sig.S.second -> Calendar_sig.S.Period.t
  val lmake :
    ?year:int ->
    ?month:int ->
    ?day:int ->
    ?hour:int ->
    ?minute:int ->
    ?second:Calendar_sig.S.second -> unit -> Calendar_sig.S.Period.t
  val year :
    int -> [< Period.date_field > `Year ] Calendar_sig.S.Period.period
  val month :
    int -> [< Period.date_field > `Month `Year ] Calendar_sig.S.Period.period
  val week :
    int -> [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period
  val day :
    int -> [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period
  val hour :
    int -> [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period
  val minute :
    int -> [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period
  val second :
    Calendar_sig.S.second ->
    [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period
  val from_date :
    ([< Period.date_field ] as 'a) Date.Period.period ->
    'Calendar_sig.S.Period.period
  val from_time :
    ([< Period.date_field ] as 'a) Time.Period.period ->
    'Calendar_sig.S.Period.period
  val to_date :
    ([< Date.field ] as 'a) Calendar_sig.S.Period.period ->
    'Date.Period.period
  exception Not_computable
  val to_time :
    ([< Period.date_field ] as 'a) Calendar_sig.S.Period.period ->
    'Time.Period.period
  val safe_to_time :
    ([< `Day | `Week ] as 'a) Calendar_sig.S.Period.period ->
    'Time.Period.period
  val ymds :
    [< Period.date_field ] Calendar_sig.S.Period.period ->
    int * int * int * Calendar_sig.S.second
end