
    P1iSa                         d dl mZ d dlZd dlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlm Z m!Z!  G d de      Z"y)    )BaseCommandN)
tian_yi_at
tian_de_at	yue_de_attaiji_at	lushen_atwenchang_atyima_at	taohua_athongluan_at	tianxi_atjiangxing_at	fuxing_at	huagai_at	jiesha_atwangshen_at
yangren_at	guchen_at	guashu_at	tianyi_atyinchayangcuo_at	zaisha_at	gejiao_at	feiren_at	shieda_at	liuxiu_atjinyu_atgShagodNames)gGodstem
gEarthstemc                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z y) Commandz"Test the *_at methods for sha godsc                     |j                  dt        dd        |j                  dt        dd        |j                  dt        dd       y )	Nz--godzGod stem index (0-9))typehelpdefaultz--earthzEarth branch index (0-11)z--testz,Specific test to run (e.g., tian_yi, lushen)all)add_argumentintstr)selfparsers     F/home/cursorai/projects/iching/bazi/management/commands/test_god_at.pyadd_argumentszCommand.add_arguments   sM    G#4JTXYIC6Q[_`H35cmrs    c                     |d   dk(  r| j                  |       y t        | d|d    d       }|r	 ||       y | j                  j                  | j                  j                  d|d    d             | j                  j                  d       y )Ntestr'   _test_zTest z
 not foundzAvailable tests: tian_yi, tian_de, yue_de, taiji, lushen, wenchang, yima, taohua, hongluan, tianxi, jiangxing, fuxing, huagai, jiesha, wangshen, yangren, guchen, guashu, tianyi, yinchayangcuo, zaisha, feiren, shieda, liuxiu, jinyu)_run_all_testsgetattrstdoutwritestyleERROR)r+   argsoptionstest_methods       r-   handlezCommand.handle   s    6?e#(!$&0A(BDIKG$!!$**"2"2U76?:K:3V"WX!! #A Br/   c                     dD ]U  }t        | d| d       }|s| j                  j                  | j                  j	                  d| d              ||       W y )N)tian_yitian_deyue_detaijilushenwenchangyimataohuahongluantianxi	jiangxingfuxinghuagaijieshawangshenyangrenguchenguashutianyiyinchayangcuozaishafeirenshiedaliuxiujinyur2   z
--- Testing z ---)r4   r5   r6   r7   NOTICE)r+   r:   r1   r;   s       r-   r3   zCommand._run_all_tests"   sY    D
 "$&>K!!$**"3"3nTF$4O"PQG$r/   c                    |d   |d   }t        |ddd      }| j                  j                  dt        |           |rBdD ]<  }||v s||   }|dk(  rd	nd
}| j                  j                  | dt        |           > y | j                  j                  d       y t        d      D ]\  }t        |      }|sdD ]G  }||v s||   }|dk(  rd	nd
}| j                  j                  dt        |    d| dt        |           I ^ y )NgodgdT)
force_ymdhu'   Testing for 天乙贵人 with god stem )r      r]   u	   阳贵人u	   阴贵人z: No mapping found
   zGod u    forms 天乙贵人 (z) with: )r   r5   r6   r   r    range)r+   r:   	god_indexresulttian_yi_typeearthtype_stridxs           r-   _test_tian_yizCommand._test_tian_yi.   s&   5>%I	3EFKK GQZH[G\]^$*L#v- &| 42>!2C;))XJbE9J8K*LM	 %+ !!"45 Ry#C(.'61$*<$8E6Ba6G{[H KK--Xc]OCXYaXbbjkuv{k|j}.~	 )/ !r/   c                    |d   |d   }t        |      }| j                  j                  dt        |           |rYd|v r(| j                  j                  dt        |d              d|v rD| j                  j                  dt        |d              n| j                  j                  d       | j                  j                  d       y t        d	      D ]  }t        |dd
d      }|rLd|v rdt        |d       }ndt        |d       }| j                  j                  dt        |    d|        `| j                  j                  dt        |            y )Nrd   u*   Testing for 天德贵人 with month earth rZ   zFound in god: ezFound in earth: r^   z
Testing direct checks:   mF)month_earthgeymdhr\   zearth zgod zEarth u    forms 天德贵人 with month u%   No mapping found for 天德贵人 at )r   r5   r6   r    r   r`   )r+   r:   earth_indexrb   rf   tiandes         r-   _test_tian_dezCommand._test_tian_deF   s`   7'!'*K,FKK J:VaKbJcde&=KK%%xs7L6M&NO&=KK%%(8F3K9P8Q&RS!!"45 KK89 Ry##RWXf}$*:fSk+B*C"D#'(='>!?KK%%z#.??^_e^f&ghKK%%(MjY\oM^&_` !r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t        d      D ]f  }t        |d      }|0| j                  j                  dt        |    dt        |           B| j                  j                  d	t        |           h y )
Nrd   u*   Testing for 月德贵人 with month earth zMonth god: r^   rj   ri   rm   z, god: u%   No mapping found for 月德贵人 at )r   r5   r6   r    r   r`   r+   r:   ro   rb   e_idxs        r-   _test_yue_dezCommand._test_yue_deb   s    7'!'*K{+FKK J:VaKbJcde!!!K0@/A"BC!!"45 r"5S1%KK%%(RS]^cSdReelmuv|m}l~&  AKK%%(MjY^N_M`&ab #r/   c                 r   |d   |d   }t        |      }| j                  j                  dt        |           |rC| j                  j                  ddj	                  |D cg c]  }t
        |    c}      z          y | j                  j                  d       y t        d      D ]  }t        |d      }|N| j                  j                  dt        |    d	d
j	                  |D cg c]  }t
        |    c}      z          `| j                  j                  dt        |            y c c}w c c}w )NrY   u&   Testing for 太极贵人 with day god Earth branches: , r^   r_   rZ   rs   	, earth:  u%   No mapping found for 太极贵人 at )r   r5   r6   r   joinr    r`   r+   r:   ra   rb   ri   g_idxs         r-   _test_taijizCommand._test_taijit   sV   5>%Ii(FKK FxPYGZF[\]!!"4tyyY_A`Y_TU*Q-Y_A`7a"ab!!"45 r!%C0%KK%%(NxX]N__h&ilnlsls  MS  uT  MS  HIu  AB  vC  MS  uT  mU  'U  VKK%%(MhW\oM^&_` # Ba uTs   "D/)D4c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t        d      D ]f  }t        |d      }|0| j                  j                  dt        |    dt        |           B| j                  j                  d	t        |           h y )
NrY   u    Testing for 禄神 with day god Earth branch: r^   r_   rZ   rs   rz   u   No mapping found for 禄神 at )r   r5   r6   r   r    r`   r+   r:   ra   rb   r~   s        r-   _test_lushenzCommand._test_lushen   s    5>%Iy)FKK @)AT@UVW!!!N:f3E2F"GH!!"45 r"5S1%KK%%(HRWHYYbcmntcubv&wxKK%%(GQVGX&YZ #r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t        d      D ]h  }t        |ddd	      }|0| j                  j                  dt        |    d
t        |           D| j                  j                  dt        |           j y )NrY   u    Testing for 文昌 with day god r   r^   r_   rZ   r[   Trm   rn   r\   rz   u   No mapping found for 文昌 at )r	   r5   r6   r   r    r`   r   s        r-   _test_wenchangzCommand._test_wenchang   s    5>%I +FKK @)AT@UVW!!!N:f3E2F"GH!!"45 r$UsN%KK%%(HRWHYYbcmntcubv&wxKK%%(GQVGX&YZ #r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t	        d      D ]h  }t        |ddd	      }|0| j                  j                  dt        |    d
t        |           D| j                  j                  dt        |           j y )Nrd   u"   Testing for 驿马 with day earth r   r^   rj   ri   r[   Tr   rz   u   No mapping found for 驿马 at )r
   r5   r6   r    r`   rt   s        r-   
_test_yimazCommand._test_yima   s    7'!'*K[)FKK B:kCZB[\]!!!N:f3E2F"GH!!"45 r 3STJ%KK%%(J:V[K\J]]fgqrxgyfz&{|KK%%(G
SXHYGZ&[\ #r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t	        d      D ]h  }t        |ddd	      }|0| j                  j                  dt        |    d
t        |           D| j                  j                  dt        |           j y )Nrd   u"   Testing for 桃花 with day earth r   r^   rj   ri   r[   Tr   rz   u   No mapping found for 桃花 at )r   r5   r6   r    r`   rt   s        r-   _test_taohuazCommand._test_taohua   s    7'!'*K{+FKK B:kCZB[\]!!!N:f3E2F"GH!!"45 r"5SstL%KK%%(J:V[K\J]]fgqrxgyfz&{|KK%%(G
SXHYGZ&[\ #r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t	        d      D ]h  }t        |ddd	      }|0| j                  j                  dt        |    d
t        |           D| j                  j                  dt        |           j y )Nrd   u#   Testing for 红鸾 with year earth r   r^   rj   ri   yTr   rz   u   No mapping found for 红鸾 at )r   r5   r6   r    r`   rt   s        r-   _test_hongluanzCommand._test_hongluan   s    7'!'*K -FKK CJ{D[C\]^!!!N:f3E2F"GH!!"45 r$UsN%KK%%(KJW\L]K^^ghrsyhzg{&|}KK%%(G
SXHYGZ&[\ #r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t	        d      D ]Z  }t        |      }|0| j                  j                  dt        |    dt        |           @| j                  j                  d       \ y )Nrd   u#   Testing for 天喜 with year earth r   r^   rj   rz   )r   r5   r6   r    r`   rt   s        r-   _test_tianxizCommand._test_tianxi       7'!'*K{+FKK CJ{D[C\]^!!!N:f3E2F"GH!!"45 r"5)%KK%%(KJW\L]K^^ghrsyhzg{&|}KK%%&89 #r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t	        d      D ]Z  }t        |      }|0| j                  j                  dt        |    dt        |           @| j                  j                  d       \ y )Nrd   u"   Testing for 将星 with day earth r   r^   rj   rz   )r   r5   r6   r    r`   rt   s        r-   _test_jiangxingzCommand._test_jiangxing   s    7'!'*K!+.FKK B:kCZB[\]!!!N:f3E2F"GH!!"45 r%e,%KK%%(J:V[K\J]]fgqrxgyfz&{|KK%%&89 #r/   c                 Z   |d   |d   }t        |      }| j                  j                  dt        |           |rC| j                  j                  ddj	                  |D cg c]  }t
        |    c}      z          y | j                  j                  d       y t        d      D ]x  }t        |      }|N| j                  j                  dt        |    dd	j	                  |D cg c]  }t
        |    c}      z          ^| j                  j                  d       z y c c}w c c}w )
NrY   u%   Testing for 福星 with day/year god rx   ry   r^   r_   u    Testing for 福星 with day god rz   r{   )r   r5   r6   r   r|   r    r`   r}   s         r-   _test_fuxingzCommand._test_fuxing  s>   5>%Iy)FKK EhyFYEZ[\!!"4tyyY_A`Y_TU*Q-Y_A`7a"ab!!"45 r"5)%KK%%(HRWHYYb&cfhfmfm  GM  oN  GM  BCoyz{o|  GM  oN  gO  'O  PKK%%&89 # Ba oNs   "D#'D(c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t	        d      D ]Z  }t        |      }|0| j                  j                  dt        |    dt        |           @| j                  j                  d       \ y )Nrd   u"   Testing for 华盖 with day earth r   r^   rj   rz   )r   r5   r6   r    r`   rt   s        r-   _test_huagaizCommand._test_huagai      7'!'*K{+FKK B:kCZB[\]!!!N:f3E2F"GH!!"45 r"5)%KK%%(J:V[K\J]]fgqrxgyfz&{|KK%%&89 #r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t	        d      D ]Z  }t        |      }|0| j                  j                  dt        |    dt        |           @| j                  j                  d       \ y )Nrd   u"   Testing for 劫煞 with day earth r   r^   rj   rz   )r   r5   r6   r    r`   rt   s        r-   _test_jieshazCommand._test_jiesha(  r   r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t	        d      D ]Z  }t        |      }|0| j                  j                  dt        |    dt        |           @| j                  j                  d       \ y )Nrd   u"   Testing for 亡神 with day earth r   r^   rj   rz   )r   r5   r6   r    r`   rt   s        r-   _test_wangshenzCommand._test_wangshen:  s    7'!'*K -FKK B:kCZB[\]!!!N:f3E2F"GH!!"45 r$U+%KK%%(J:V[K\J]]fgqrxgyfz&{|KK%%&89 #r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t	        d      D ]Z  }t        |      }|0| j                  j                  dt
        |    dt        |           @| j                  j                  d       \ y )NrY   u    Testing for 羊刃 with day god r   r^   r_   rz   )r   r5   r6   r    r`   r   r   s        r-   _test_yangrenzCommand._test_yangrenL  s    5>%I	*FKK @IAV@WXY!!!N:f3E2F"GH!!"45 r#E*%KK%%(HRWHYYbcmntcubv&wxKK%%&89 #r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t	        d      D ]Z  }t        |      }|0| j                  j                  dt        |    dt        |           @| j                  j                  d       \ y )Nrd   u#   Testing for 孤辰 with year earth r   r^   rj   rz   )r   r5   r6   r    r`   rt   s        r-   _test_guchenzCommand._test_guchen^  r   r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t	        d      D ]Z  }t        |      }|0| j                  j                  dt        |    dt        |           @| j                  j                  d       \ y )Nrd   u#   Testing for 寡宿 with year earth r   r^   rj   rz   )r   r5   r6   r    r`   rt   s        r-   _test_guashuzCommand._test_guashup  r   r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t	        d      D ]Z  }t        |      }|0| j                  j                  dt        |    dt        |           @| j                  j                  d       \ y )Nrd   u$   Testing for 天医 with month earth r   r^   rj   rz   )r   r5   r6   r    r`   rt   s        r-   _test_tianyizCommand._test_tianyi  s    7'!'*K{+FKK DZP[E\D]^_!!!N:f3E2F"GH!!"45 r"5)%KK%%(LZX]M^L__histzi{h|&}~KK%%&89 #r/   c                 *   |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t        d      D ]  }t        |      }|N| j                  j                  dt        |    ddj                  |D cg c]  }t        |    c}      z          ^| j                  j                  dt        |            y c c}w )	NrY   u&   Testing for 阴差阳错 with day god r   r^   r_   rz   r{   No mapping found for day god )r   r5   r6   r   r    r`   r|   r+   r:   ra   rb   r~   ri   s         r-   _test_yinchayangcuozCommand._test_yinchayangcuo  s6   5>%I%i0FKK FxPYGZF[\]!!!N:f3E2F"GH!!"45 r)%0%KK%%(NxX]N__h&ilnlsls  MS  uT  MS  HIu  AB  vC  MS  uT  mU  'U  VKK%%(EhuoEV&WX # uT   
Dc                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t	        d      D ]Z  }t        |      }|0| j                  j                  dt        |    dt        |           @| j                  j                  d       \ y )Nrd   u#   Testing for 灾煞 with year earth r   r^   rj   rz   )r   r5   r6   r    r`   rt   s        r-   _test_zaishazCommand._test_zaisha  r   r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t	        d      D ]Z  }t        |      }|0| j                  j                  dt        |    dt        |           @| j                  j                  d       \ y )Nrd   u"   Testing for 隔角 with day earth r   r^   rj   z, hour earth: )r   r5   r6   r    r`   rt   s        r-   _test_gejiaozCommand._test_gejiao  s    7'!'*K{+FKK B:kCZB[\]!!!N:f3E2F"GH!!"45 r"5)%KK%%(J:V[K\J]]klvw}l~k  'A  BKK%%&89 #r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t        d      D ]d  }t        |      }|0| j                  j                  dt        |    dt        |           @| j                  j                  dt        |           f y )NrY   u    Testing for 飞刃 with day god r   r^   r_   rz   r   )r   r5   r6   r   r    r`   r   s        r-   _test_feirenzCommand._test_feiren  s    5>%Iy)FKK @)AT@UVW!!!N:f3E2F"GH!!"45 r"5)%KK%%(HRWHYYbcmntcubv&wxKK%%(EhuoEV&WX #r/   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t        d      D ]d  }t        |      }|0| j                  j                  dt        |    dt        |           @| j                  j                  dt        |           f y )NrY   u&   Testing for 十恶大败 with day god r   r^   r_   rz   r   )r   r5   r6   r   r    r`   r   s        r-   _test_shiedazCommand._test_shieda  s    5>%Iy)FKK FxPYGZF[\]!!!N:f3E2F"GH!!"45 r"5)%KK%%(NxX]N__histzi{h|&}~KK%%(EhuoEV&WX #r/   c                 *   |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t        d      D ]  }t        |      }|N| j                  j                  dt        |    ddj                  |D cg c]  }t        |    c}      z          ^| j                  j                  dt        |            y c c}w )	NrY   u    Testing for 六秀 with day god r   r^   r_   rz   r{   r   )r   r5   r6   r   r    r`   r|   r   s         r-   _test_liuxiuzCommand._test_liuxiu  s-   5>%Iy)FKK @)AT@UVW!!!N:f3E2F"GH!!"45 r"5)%KK%%(HRWHYYb&cfhfmfm  GM  oN  GM  BCoyz{o|  GM  oN  gO  'O  PKK%%(EhuoEV&WX # oNr   c                    |d   y|d   }t        |      }| j                  j                  dt        |           |&| j                  j                  dt        |           y | j                  j                  d       y t        d      D ]d  }t        |      }|0| j                  j                  dt        |    dt        |           @| j                  j                  dt        |           f y )NrY   u    Testing for 金舆 with day god r   r^   r_   rz   r   )r   r5   r6   r   r    r`   r   s        r-   _test_jinyuzCommand._test_jinyu   s    5>%Ii(FKK @)AT@UVW!!!N:f3E2F"GH!!"45 r!%%KK%%(HRWHYYbcmntcubv&wxKK%%(EhuoEV&WX #r/   N)!__name__
__module____qualname__r%   r.   r<   r3   rg   rq   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r/   r-   r"   r"      s    /Dt
B
%@0a8c$a$[$[$]$]$]$:$:$:$:$:$:$:$:$:$:$Y$:$:$Y$Y$Y$Yr/   r"   )#django.core.management.baser   jsoniching.utils.bzshagodr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   iching.utils.bzr   r    r"   r   r/   r-   <module>r      sH    3         1DYk DYr/   