Files
QuanTAlib/python/tests/__pycache__/test_compat.cpython-313-pytest-9.0.2.pyc
T

147 lines
24 KiB
Plaintext
Raw Normal View History

2026-02-28 14:14:35 -08:00
ó
±7£i+ãóxSrSSKJr SSKrSSKJs Jr SSK r
SSK r \
RRS5rSr\R!\5R#5S-r\ R&"SS9S 5r\ R&"SS9S
5r"S S 5r"S
S5r"SS5r"SS5r"SS5rg)test_compat.py — pandas-ta compatibility tests.
Verifies that:
1. ALIASES map resolves to real functions
2. pd.Series input → pd.Series output with correct name
3. pd.DataFrame input → works for single-column
é)Ú annotationsNécé2gY@Úmodule)Úscopecó|SSKnU$![[4a#n[R"SU35 SnAgSnAff=f)Nrz$quantalib native lib not available: )Ú quantalibÚOSErrorÚ ImportErrorÚpytestÚskip)Ú_qtlÚes Ú/c:\github\quantalib\python\tests\test_compat.pyÚqtlrs>ð@Û Øˆ øÜ ”[Ð @Ü Š Ð:¸1¸?ûð@úsˆ;˜6;có\SSKnU$![a [R"S5 gf=f)Nrzpandas not installed)Úpandasr r r
)Ú_pds rÚpdrs+ð؈
øÜ ó Š Ð,ús ˆ +ª+có6\rSrSrSrSSjrSSjrSSjrSrg) Ú TestAliasesé$z5Verify ALIASES map entries resolve to real functions.cóSSKJn UR5up4[URUS5nSoeULow([
R "SU4SXV45S[R"5;d[
R"U5(a[
R"U5OS[
R"U5S.-n[
R"SUSUS 35S
-S U0-n [[
R"U 55eS=pvMï g) Nr)ÚALIASES)úis not)z%(py0)s is not %(py3)sÚfn)Úpy0Úpy3zAlias 'u' → 'z ' not foundz
>assert %(py5)sÚpy5)Úquantalib._compatrÚitemsÚgetattrÚ
indicatorsÚ
@pytest_arÚ_call_reprcompareÚ @py_builtinsÚlocalsÚ_should_repr_global_nameÚ _safereprÚ_format_assertmsgÚAssertionErrorÚ_format_explanation)
ÚselfrrÚaliasÚtargetrÚ @py_assert2Ú @py_assert1Ú @py_format4Ú @py_format6s
rÚtest_all_aliases_resolveÚ$TestAliases.test_all_aliases_resolve's Ý$Ÿ]™]ž_‰MˆEܘŸ¨°Ó6ˆBØ N˜T>× N× N× N2× N× N× N× N× N2× N× N× N2× N× N˜T× N× N× N W¨U¨G°7¸6¸(À+Ð#N× N× N× N× N× cóöSSKJn U"S5n[U5oD(SS[R"5;d[
R "[5(a[
R"[5OSS[R"5;d[
R "U5(a[
R"U5OS[
R"U5S.-n[[
R"U55eSng)Nr©Ú
get_compatÚmidpricez,assert %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
callabler)rÚpy1r)
r r9r;r&r'r$r(r)r+r,)r-rr9rr0r2s rÚ test_get_compat_returns_callableÚ,TestAliases.test_get_compat_returns_callable-s|Ý
˜
Ó
ܘ‹|Ð××××ÑŒx×××ÑŒx×××××Ö˜×××ј××Õˆ|×××××Òr6cóäSSKJn So2"U5nSoTULof([R"SU4SXE45S[R
"5;d[R "U5(a[R"U5OS[R"U5[R"U5[R"U5S.-nSS U0-n[[R"U55eS=n=n=peg)
Nrr8Únonexistent_indicator)Úis)z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} is %(py7)sr9)rÚpy2Úpy4Úpy7zassert %(py9)sÚpy9)
r r9r$r%r&r'r(r)r+r,) r-rr9r1Ú @py_assert3Ú @py_assert6Ú @py_assert5Ú @py_format8Ú @py_format10s rÚ$test_get_compat_unknown_returns_noneÚ0TestAliases.test_get_compat_unknown_returns_none2s‰Ý:ˆzÐ:°dÐ:°dÐ:×:×:×:×:ˆz×:ˆz×2×:×:°d×:×:×:×:×:r6©ÚreturnÚNone) Ú__name__Ú
__module__Ú __qualname__Ú__firstlineno__Ú__doc__r4r=rKÚ__static_attributes__rMr6rrr$sÙOô ÷
;r6rcó6\rSrSrSrSSjrSSjrSSjrSrg) ÚTestPandasSeriesIOé7u,Verify pd.Series input → pd.Series output.cóD
URS[SS9nUR[USS9nUR USS9nURn[ XV5ow(Gd8SS [ R"5;d[R"[
5(a[R"[
5OS S
[ R"5;d[R"U5(a[R"U5OS
S [ R"5;d[R"U5(a[R"U5OS [R"U5[R"U5S .-n[[R"U55eS=pgURn S
o©U
:Hof([R"SU4SXš45S
[ R"5;d[R"U5(a[R"U5OS
[R"U 5[R"U
5S.-n SSU 0-n [[R"U 55eS=n =pj[U5oÝ[:Hoª(GdP[R"SU
4SU
[45S[ R"5;d[R"[5(a[R"[5OSS
[ R"5;d[R"U5(a[R"U5OS
[R"U
5S[ R"5;d[R"[5(a[R"[5OSS.-n SSU 0-n [[R"U 55eS=pÚUR o™U:HofR"oî"5oÿ(Gd[R"SU4SX“45S
[ R"5;d[R"U5(a[R"U5OS
[R"U 5S[ R"5;d[R"U5(a[R"U5OSS.-nSU[R"U5[R"U5S.-n[[R"U55eS=n =n=pïg)Nz
2020-01-01ÚD)ÚperiodsÚfreqÚClose)ÚindexÚnameé
©ÚlengthúQassert %(py6)s
{%(py6)s = %(py0)s(%(py1)s, %(py4)s
{%(py4)s = %(py2)s.Series
})
isinstanceÚresultr©rr<rBrCÚpy6ÚSMA_10©ú==©z,%(py2)s
{%(py2)s = %(py0)s.name
} == %(py5)s©rrBrúassert %(py7)srD©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py5)sÚlenÚrr<rr)z-%(py2)s
{%(py2)s = %(py0)s.index
} == %(py4)sÚidx)rrBrCz@assert %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.all
}()
})rhÚpy8Úpy10)Ú
date_rangerqÚSeriesÚCLOSEÚsmarer&r'r$r(r)r+r,r`r%rpr_Úall)r-rrrsÚsrfrFrHÚ @py_format7r1Ú @py_assert4r3rIr0Ú @py_assert7Ú @py_assert9Ú @py_format5Ú @py_format11s rÚtest_sma_series_outputÚ)TestPandasSeriesIO.test_sma_series_output:Øm‰m˜L´!¸#ˆ>ˆØ I‰I”e 3¨WˆIРؘ 2Ð&ˆØ"$§)¡)Ð,Œz˜,×,×,×,×,×,Œz×,Œz×,×,×,×,×,˜&×,×,×,˜&×,×,×,×,×, "×,×,×, "×,×, )×,×,×,×,×{‰{Ð&˜&˜&×&×&×&ˆ{×&×&×&×&×&ˆv×&×&×&ˆv×&×&ˆ{×&×&˜h×&×&×&×&×&×6œaÑ×××Óˆ{œa×××××ÕŒs×××ÑŒs×××××Ö××Ñ×Õˆ{×××××Ôœa×××Ñœa××××××ÓØ ÐÑ*×*×* ×*×*×*×* ×*×*×××*×*×*×*×*×*×*r6cóbUR[5nURUSS9nURn[XE5of(Gd8SS[R
"5;d[ R"[5(a[ R"[5OSS[R
"5;d[ R"U5(a[ R"U5OSS[R
"5;d[ R"U5(a[ R"U5OS[ R"U5[ R"U5S.-n[[ R"U55eS=pVURnSo˜U :HoU([ R"S U4S
X‰45S[R
"5;d[ R"U5(a[ R"U5OS[ R"U5[ R"U 5S .-n
S S
U
0-n [[ R"U 55eS=n=pYSn [XL5o™(SS[R
"5;d[ R"[5(a[ R"[5OSS[R
"5;d[ R"U5(a[ R"U5OS[ R"U 5[ R"U 5S.-n
[[ R"U
55eS=pÉURnSo˜U :HoU([ R"S U4SX‰45S[R
"5;d[ R"U5(a[ R"U5OS[ R"U5[ R"U 5S .-n
S S
U
0-n [[ R"U 55eS=n=pYg)rbrdrerfrrgÚEMA_14rjrlrmrnrDÚcategoryz5assert %(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py3)s)
hasattrrrÚtrend)z0%(py2)s
{%(py2)s = %(py0)s.category
} == %(py5)s)rwrxÚemarer&r'r$r(r)r+r,r`r%rˆr‡)
r-rrr{rfrFrHr|r1r}r3rIr0s
rÚtest_ema_series_categoryÚ+TestPandasSeriesIO.test_ema_series_categoryCs&Ø I‰I”eÓ ˆØ˜ 2Ð&ˆØ"$§)¡)Ð,Œz˜,×,×,×,×,×,Œz×,Œz×,×,×,×,×,˜&×,×,×,˜&×,×,×,×,×, "×,×,×, "×,×, )×,×,×,×,×{‰{Ð&˜&˜&×&×&×&ˆ{×&×&×&×&×&ˆv×&×&×&ˆv×&×&ˆ{×&×&˜h×&×&×&×&×&×*Œw*×*×*×*×*×*Œw×*Œw×*×*×*×*×*v×*×*×*v×*×*˜z×*×*×Ð) ) )×)×)×)ˆ×)ˆv×)ˆv×)×)ˆ×)×) '×)×)×)×)×)×)r6có®UR[5nURUSS9nURn[XE5of(Gd8SS[R
"5;d[ R"[5(a[ R"[5OSS[R
"5;d[ R"U5(a[ R"U5OSS[R
"5;d[ R"U5(a[ R"U5OS[ R"U5[ R"U5S.-n[[ R"U55eS=pVURnSo˜U :HoU([ R"S U4S
X‰45S[R
"5;d[ R"U5(a[ R"U5OS[ R"U5[ R"U 5S .-n
S S
U
0-n [[ R"U 55eS=n=pYg)Nr…rbrdrerfrrgÚRSI_14rjrlrmrnrD)
rwrxÚrsirer&r'r$r(r)r+r,r`r%) r-rrr{rfrFrHr|r1r}r3rIs rÚtest_rsi_seriesÚ"TestPandasSeriesIO.test_rsi_seriesKs7Ø I‰I”eÓ ˆØ˜ 2Ð&ˆØ"$§)¡)Ð,Œz˜,×,×,×,×,×,Œz×,Œz×,×,×,×,×,˜&×,×,×,˜&×,×,×,×,×, "×,×,×, "×,×, )×,×,×,×,×{‰{Ð&˜&˜&×&×&×&ˆ{×&×&×&×&×&ˆv×&×&×&ˆv×&×&ˆ{×&×&˜h×&×&×&×&×&×&r6rMNrN) rQrRrSrTrUrrrrVrMr6rrXrX7sÙ'r6rXcó"\rSrSrSrSSjrSrg)ÚTestPandasDataFrameIOéRz,Verify pd.DataFrame input uses first column.cóUR[[R"[5S.5nUR USS9nUR n[XE5of(Gd8SS[R"5;d[R"[5(a[R"[5OSS[R"5;d[R"U5(a[R"U5OSS[R"5;d[R"U5(a[R"U5OS[R"U5[R"U5S.-n[[R"U55eS=pV[U5oˆ[:Ho™(GdP[R "S U 4S
U[45S [R"5;d[R"[5(a[R"[5OS S[R"5;d[R"U5(a[R"U5OS[R"U5S [R"5;d[R"[5(a[R"[5OS S
.-n
SSU
0-n [[R"U 55eS=p‰g)N)r^ÚVolumerarbrdrerfrrgrjrorprqrrrnrD)Ú DataFramerxÚnpÚonesrqryrwrer&r'r$r(r)r+r,rpr%) r-rrÚdfrfrFrHr|r0r}r3rIs rÚtest_sma_dataframe_inputÚ.TestPandasDataFrameIO.test_sma_dataframe_inputUszØ
\‰\¤E´R·W²W¼Q³ZÑ
ؘ BÐ'ˆØ"$§)¡)Ð,Œz˜,×,×,×,×,×,Œz×,Œz×,×,×,×,×,˜&×,×,×,˜&×,×,×,×,×, "×,×,×, "×,×, )×,×,×6‹{МaÑ×××Óˆ{œa×××××ÕŒs×××ÑŒs×××××Ö××Ñ×Õˆ{×××××Ôœa×××Ñœa××××××Ôr6rMNrN)rQrRrSrTrUrrVrMr6rr“r“Rs
Ù r6r“có"\rSrSrSrSSjrSrg)ÚTestMultiOutputPandasé\z8Verify multi-output returns DataFrame when given Series.có UR[5nURUSSS9nURn[ XE5of(Gd8SS[
R "5;d[R"[5(a[R"[5OSS[
R "5;d[R"U5(a[R"U5OSS[
R "5;d[R"U5(a[R"U5OS[R"U5[R"U5S.-n[[R"U55eS=pVURn[S 4o˜U :HoU([R"S
U4S X‰45S[
R "5;d[R"U5(a[R"U5OS[R"U5[R"U 5S .-n
S
SU
0-n [[R"U 55eS=n=pY[UR 5n SoÝU ;oî([R"SU4SXÜ45[R"U
5S[
R "5;d[R"U 5(a[R"U 5OSS.-nSSU0-n
[[R"U
55eS=pÞSoÝU ;oî([R"SU4SXÜ45[R"U
5S[
R "5;d[R"U 5(a[R"U 5OSS.-nSSU0-n
[[R"U
55eS=pÞSoÝU ;oî([R"SU4SXÜ45[R"U
5S[
R "5;d[R"U 5(a[R"U 5OSS.-nSSU0-n
[[R"U
55eS=pÞg)g@)rcÚstdzTassert %(py6)s
{%(py6)s = %(py0)s(%(py1)s, %(py4)s
{%(py4)s = %(py2)s.DataFrame
})
}rerfrrgérj)z-%(py2)s
{%(py2)s = %(py0)s.shape
} == %(py5)srmrnrDz
BBU_20_2.0)Úin)z%(py1)s in %(py3)sÚcols)r<rzassert %(py5)srz
BBM_20_2.0z