o
    jj@	                     @  s   d Z ddlmZ ddlZddlmZmZmZmZ ddlm	Z	 e	dZ
edZd'd
dZd(ddZd)ddZd*ddZd+ddZd,ddZd-d%d&ZdS ).uC   仙人彩：开奖与周期相关纯函数（仅依赖 stdlib）。    )annotationsN)datedatetimetime	timedelta)ZoneInfozAsia/Shanghaiz
^[0-9]{4}$returnr   c                   C  s
   t tS )N)r   now_BJ r   r   =/home/dore/onebot/Bot_Ero/plugins/immortal_lottery/helpers.py_now_bj      
r   dr   c                 C  sB   |   }|dkr| tdd S |dkr| tdd S | t|d S )uQ   自然周内的周一（周日归属到刚过去的周一为起点的周期）。   days   )weekdayr   )r   wdr   r   r   _period_monday_for_display   s   r   monstrc                 C  s
   |  dS )Nz%Y-%m-%d)strftime)r   r   r   r   _period_key_from_monday   r   r   now_bjboolc                 C  s@   |   }|dkr
dS |dk rdS |  jd d}|tdddkS )N   FT)tzinfo   ;   )r   r   replace)r   r   tr   r   r   _in_betting_window   s   r#   sundayc                 C  s   | t dd S )Nr   r   )r   )r$   r   r   r   _sunday_draw_period_monday)   s   r%   secretguessintc                   s   t  fddtdD S )Nc                 3  s$    | ]}|  | krd V  qdS )   Nr   ).0ir'   r&   r   r   	<genexpr>.   s   " z_count_a.<locals>.<genexpr>r   )sumrange)r&   r'   r   r,   r   _count_a-   s   r0   poolordered_winnerslist[tuple[int, str]]
prize_name=tuple[list[tuple[int, int, str]], list[tuple[int, int]], int]c                 C  s   t |}|dkrg g | fS | dkrg g dfS g }g }| |k rPt|D ](\}\}}|| k r.dnd}	| d| }
|||	|
f |	dkrJ|||	f q"||dfS | | }| | }|D ]\}}| d| }
||||
f |dkrx|||f qZ|||fS )u  
    只派发整数积分；无法整除的余数滚入该奖级下期池。
    若奖池不足以使每位中奖注至少分到 1 分，则按下注先后各发 1 分直至耗尽。
    返回 (展示明细, 实际加分的 (uid, amt) 列表, 滚入下期该奖级的余数)。
    r   r)    )len	enumerateappend)r1   r2   r4   ndetailpayoutsr+   uiddgamtlabelbaseremr   r   r   _allocate_tier_pool1   s2   




rC   )r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r$   r   r   r   )r&   r   r'   r   r   r(   )r1   r(   r2   r3   r4   r   r   r5   )__doc__
__future__r   rer   r   r   r   zoneinfor   r
   compile_DIGITS4r   r   r   r#   r%   r0   rC   r   r   r   r   <module>   s    








