From 952fcb1f29c604be2d5a0095c8f17c76b2c91e7d Mon Sep 17 00:00:00 2001 From: AlishChhetri Date: Fri, 26 Apr 2024 09:53:54 -0400 Subject: [PATCH 1/8] fix: add plotly and tabulate to pyproject --- pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 5debbc3..6be0197 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,6 +12,8 @@ bosco = "bosco.main:cli" python = "^3.11" rich = "^10.9.0" typer = {extras = ["all"], version = "^0.7.0"} +plotly = "^5.21.0" +tabulate = "^0.9.0" [tool.poetry.dev-dependencies] taskipy = "^1.8.1" From 91d3393bd66797fe646396dc11c878292e07067c Mon Sep 17 00:00:00 2001 From: AlishChhetri Date: Fri, 26 Apr 2024 21:42:07 -0400 Subject: [PATCH 2/8] feat: allow for choosing element type and write unit tests --- .devenv/gc/shell | 2 +- .devenv/gc/shell-2-link | 2 - .devenv/gc/shell-3-link | 1 + bosco/__pycache__/benchmark.cpython-311.pyc | Bin 1951 -> 2007 bytes bosco/__pycache__/constants.cpython-311.pyc | Bin 0 -> 5029 bytes bosco/__pycache__/generate.cpython-311.pyc | Bin 886 -> 1947 bytes bosco/__pycache__/main.cpython-311.pyc | Bin 5163 -> 5535 bytes bosco/__pycache__/sorting.cpython-311.pyc | Bin 10612 -> 10612 bytes bosco/benchmark.py | 4 +- bosco/generate.py | 25 +- bosco/main.py | 10 +- poetry.lock | 862 +++++++++++++++++- tests/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 150 bytes ...est_benchmark.cpython-311-pytest-8.1.2.pyc | Bin 0 -> 11269 bytes ...est_constants.cpython-311-pytest-8.1.2.pyc | Bin 0 -> 10385 bytes ...test_generate.cpython-311-pytest-8.1.2.pyc | Bin 0 -> 12823 bytes tests/test_benchmark.py | 62 ++ tests/test_constants.py | 4 +- tests/test_generate.py | 55 ++ 19 files changed, 1006 insertions(+), 21 deletions(-) delete mode 120000 .devenv/gc/shell-2-link create mode 120000 .devenv/gc/shell-3-link create mode 100644 bosco/__pycache__/constants.cpython-311.pyc create mode 100644 tests/__pycache__/__init__.cpython-311.pyc create mode 100644 tests/__pycache__/test_benchmark.cpython-311-pytest-8.1.2.pyc create mode 100644 tests/__pycache__/test_constants.cpython-311-pytest-8.1.2.pyc create mode 100644 tests/__pycache__/test_generate.cpython-311-pytest-8.1.2.pyc create mode 100644 tests/test_benchmark.py create mode 100644 tests/test_generate.py diff --git a/.devenv/gc/shell b/.devenv/gc/shell index f0d48df..f11c432 120000 --- a/.devenv/gc/shell +++ b/.devenv/gc/shell @@ -1 +1 @@ -shell-2-link \ No newline at end of file +shell-3-link \ No newline at end of file diff --git a/.devenv/gc/shell-2-link b/.devenv/gc/shell-2-link deleted file mode 120000 index cb146e0..0000000 --- a/.devenv/gc/shell-2-link +++ /dev/null @@ -1,2 +0,0 @@ - -/nix/store/kfc3lrq3q6kgp12ic8vhmskgdyah6msf-devenv-shell-env diff --git a/.devenv/gc/shell-3-link b/.devenv/gc/shell-3-link new file mode 120000 index 0000000..36221d4 --- /dev/null +++ b/.devenv/gc/shell-3-link @@ -0,0 +1 @@ +/nix/store/kfc3lrq3q6kgp12ic8vhmskgdyah6msf-devenv-shell-env \ No newline at end of file diff --git a/bosco/__pycache__/benchmark.cpython-311.pyc b/bosco/__pycache__/benchmark.cpython-311.pyc index 0bac433b8ec0a7a7fc2281d1df2452c707ebb71a..6807bff0554d6f29fd92707619c3cd08f9fa4792 100644 GIT binary patch delta 692 zcmZ`#&ubGw82xr8yV=BScGFr?4Q+xD;$pOlKR{Z76ub(eMg+@tn@!rl{wTA%ApXD{ zgrT*;W4||V=X*16_j{#&R+Tr3k_Luc zz1n*8Ub!NqH3YDNR^&CHFN8du7rvwCGQEfD^&rokF}iXWwUCu~CR?H8n~_%?*+XMfwVi zzH#bY-%r!~()o#MaW(@VGnLtkSkFXB!?3)DVUXkOVlqxQrAtMgLo%E+PCTDY(DAI$ zZq~>Y{UP1CIVMc^)sX?_Yw=XPo|$@wx2_)OFJiiTxmR8v+dekABNhiD^9|rXbP)3k DqZ^_3 delta 616 zcmZ`#&ubGw6rRoQ?5||ANuUO;HBkudrUetxK!_+7J$mqlnwOg zv1JYlrFg5g?Lm)T{R?s^xGX4Mds|Tva`LT9iwJ(a_r1rw@6DSxpY+$d_D0iG1bDvR z9E{&<9Zp=xA@mZlEw0K;?pJOkvB$Xwk3#8bKGmhzMy3$vfbotnlKr#UY09P;VmOyV zZX4|gp=`>ga;WYK2pxcD7%BerNsdscFomD)D!UwLz%%%@lPp#IQ@i+gjosp_T%JAT z`!^@t+=MgM@qoH^eO;~(?KPMB^sUK7GYo z^c@({IiQJr-FD4j)w)5iu(ovnUX|-bdL@Bx?M1aqS)9N8jz8@F$-iRt#kI}GtEqAR R!V#_|7<38x579PE_zmD$n9~3N diff --git a/bosco/__pycache__/constants.cpython-311.pyc b/bosco/__pycache__/constants.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dd175eaa9c69273613e63c1fbe62f3cc07277cf3 GIT binary patch literal 5029 zcmbtX%~Ko66>mu+32F2V;?u^1v5mEBgR$3kmUuVImjN4u4R}AeObzNrD3&y&XOy*d z$&gB_bV^aRhs|*-2Pa$hA0w*vFx4k2Ir%n}eex;qjbQi;ZAU$ui{_z`-q<~KMlN*Uik=l4R`D3 zCo_Zw|3ql$74&)yckA~G92z|tq@T9To+OrMnq z{gmGL!AEb>VZaf33viU)2E0Q*1H9|X@6r3fe??`$&*>Q8uU&jVzX1Lv{SDw(bR2NP z)t{tOz^7fwLplR|md*h_qK^UR=>lM$E&@KGKES6gF45&5e1Gw+#^}m2$$eeFGsV_R zRi+g5s$ptX(@?%InHvh#Os!DX41*cUy3UoF!IV-}S<{VzKKvHFlk?j; zS+%h5JNI$0XYXFX>yLzyRUbsT{~5&jYJf=)IsOOG;7V=owV{IObcr5BM z85xbiD&rzJffKKPy1!U+gDI}$aGmZd51eq_$PJ6s_~vH0RM5N7kdQM|L!B%~^9>b9V2= zri9mybkR;`th|-q%G>djHE+#t&D%%E$z+=nUOQ6OQ$RJ|b1)+jbZ0Fh?jEi%tx^w< z(Newsa!iCaU&6jrKln!KcU-M8Wr1l%jWY#zeUotr=ZaP>FhyTip18`&daYW(Z8io( zn6h=PRyIXMs~RPhYW#Wq_89Eh^D$+nWX{&s#*_`y+%(2UMv8D!YHPyZE9eZ4fYUWT132!Ldrj%yZnnEA z;k6@md!cQ|lGbDE@fO_Hh#94x+>frCyfvkI;y_@yQ_BVT z5cK7^DLe;ownzU6E&rWIUEluS$=Dqw=BDL1>`+34aXVmT^_wTQ2xRB&QE-Z_)rvxz ztFG&iDm7k(4v>mDhaB5B$x9~W?Xu{bgd?p(w%j+PPBFtQRo$#8dRx1BW?LUj2a~{= zjoFip^X&JmEJ6=4ub4u@a5+0hZs4{cOu}va8Q^$~+;2+vcTcBIFH3q&iL|v~Eo?2= z16P_7UOUniTN!Lhc!hsXWdXUjxI6QqKya3-O#*Jf#XJ2;S z;gKgasy-~On~YUO9A8!$*If{?Nu4qkj*ZD)m_nY^D-}&$-qZ?A$kUZg^QAiR(u9vg zto5>Nay)q9>2kTWX)qCoGw{8}sk#iM81$HmMBykA~aXUqCMb8S3>QP+;pfsjS$MCbw# zffCF+xP~h~`7ssZhcpC)Z)7a*}q40>0S8}Z9l&-Rt3uWQHG z^^32|@yC2=hn$8zl)XpT3lM*|r`k^_pm*joaCNJAJ{9 zedT23h<}d&yhpHtPXB4Uk}u|v)3ArK_Xvk}Q7b{x{oC=MuKr`HnHt?mjsB7vwc=;3 zC+JH#^;KaxTuvP(Nv?;?znEpF4}UR6PBVdbpV({)Nh4A;grkbzJx$~8P z)3ArK_XvlkQESXK?T{YXe+YJ}b35b&K(?Fd*uLxpu{A_8?b~T5jJ%Dcv)hsrK^`UP zj_rUWBaac#&p2`92@=mVrky166lw3=9(2;kGb9pg1e|u{9VC`)+;OtVJ4r0vxa)Kw z?m$wg;R(~_0z3AsX&sfOkZAiqp{FaNdM8AN`C z$ce_Fa~1hD5{Wk?X9)Rql4@@lP7e7eZoE35BELbRawF~BL_XXaa|HP<(%rXhIHSO= JF#frT=HL2RAa?)& literal 0 HcmV?d00001 diff --git a/bosco/__pycache__/generate.cpython-311.pyc b/bosco/__pycache__/generate.cpython-311.pyc index 13d5b48720456db3dca9cc7efc2b804e13ced85e..4ad0816091f29cbc7d64f84a44eeb09b26c26390 100644 GIT binary patch literal 1947 zcmcIlO=ufO6rS1DuKp}Lb{z>h#cT*kS!nEFY8Q$zrD^MfTj!9t1*Jt*G$VPP)vlOb z6|C4s4Tj30v-eM#E4>v2Z3$aK8O-bg?R&l8+!sDOcOBL75!Zy^ z%AKP*LH>o<)b6lR?4a?kY;%NN52cy&ovX%t;BS1vJJ|}k#f43vHw4|7_T~2U@^W~uw-aClNHzy^t$}85$G@; zo>RI!$k&Z>I1Av2md*P72*Icq_0K`@WB$fE)cGUm|FxY=&y`-xZ5~R$t?<(HTHh#7 zH?Nfe3I0~-&zk-eha9>JDK0wbh~HEycJOUgb^Xz5%YYLQ( z1Ua3jPUO9eUZQU?W-?Xus)q4eb)tUC^Yr%efhXR72PUWNU;TD3BGaji5SaH}G zKhAyK@>J0m@~b}49A3A}3s;oxxmwt^8?4}ZEy^sfu)exp*s@*2p4r;0&G}~gJXz!g z8Fr&t>fE0nXwx*>MgNPYZRn<3%3p-1ct#b?zb=e2<>~mLA3Xe28r&JY{JQ!1&2e_^ zB)b+JPB0jY@nw9z##AAM_EWQDoWtdnzf+tvI)CX}94CY4yv6Pc8q6OgAp3+wiGDx$ zbMxoMuMONd&Xi9wh=h9qXG2}*9M-Y=qZk$X9BKlK#VgGLL Nbs*zBfNM;c`9Jd9-n#$* diff --git a/bosco/__pycache__/main.cpython-311.pyc b/bosco/__pycache__/main.cpython-311.pyc index 74c1ed5ef9ada40ab11fa138d8e6df0504bd801c..ed8b400f1fa09e8c44a0ed3be2557daa503d27cb 100644 GIT binary patch delta 1865 zcmaJBTWB0r^xk>xV`g{ukz|slNhWDZx+J!x^+C0%ZH%Io)Iv+8OL5umoz279nRsVX zY?w8z1ghYN<$fsGV(}wVvL8alKed12kEGI%Fd!5J>4zU1svv%O?rb(S@o{#~x#ymH z9{1dH=B)1fbad(SR4R!8&b>ZXJ+2}2GvBl!y~#ZCF+v|9f{KV>BG|Yl6h++PrJ@8f z(UxmUQHf-d9jnEQ@ral0L@iNFM7&}rYid!gX+;eq0a?;q3LV&tumbC9J1i=u;W)lS zrd#P-8Fp34U;jEMN^{xk&0fB+G;Xb9xO*w`nr-_b$rZTwDqstCoT@}?q*esb0Bk{3 zCTS~2bij<2Ct1K8V4et7jdU!_JFb)@!WmTPT%4S6y^3qn@dd{-FIrAzrdFnJdZzE1 zWzVxb;ASjy-lA2P*2+%BGTo|q`m#UcI%ajjsra+5IeD?Buq{Gdo zEyto|-y)`ETQ$q^J#!x@jhR*3EyLnc)AMPefJ14 zayv~}q0~qOd~`^@^Q>?R3xUK=iAR`$b*SPrs>|$#IFLV6SKdb?5h#msgciX;J;r_z zjj325ZGX9X+*cpFpHtd=AOvC%Ux84oJX{3zM3A@uyLz&&*0n%p2PNZ~WS|Dxw79)u z7=3Vd8j<8@xSo0sRWVVQw9i)gxQjPSA1W^H7P}kXUVMqvc z_E75U)rsE7>_{OKg~&2fJ`l^2+%k9X$i|>NiMAKMo`+_D)3%&_BM&CBL5_5iu7<%L z$|F9lhOy%kUB1!25JGdj3K0a^pab-K{-JLKnOiB|^=ww@5ZgR^%o`{$c0L-| zq`A$ji0lf)PtZ+)^pf4A&mU;VLx}XlZ-DeS%mTDBtQ<2{8hHn_r&JKkGfv z^uz2>>?)@0%h-qJqWS;*$|mC9?&^flw^2a~h5ZLZJR8QS{-Y1M)?%5s7HCp zA#?n8h%bjy%_UYSIpvx~yZH@z*mv46?z;1cHs%6_QwO_5D z9ZcWF-E1Sh>*-d4p?r}~A^HaBa!YS7JlP*t(C=MH)~-#xJGGWOdQTd^FO9EB<3C9% zds%-+eDRA5Y*jxWzpLFdrtTY4caoWcpz|CG9bv3gB5tKrVn=c&eu))xN0zvA$~%L` zfP^wHJPpN)JxibGf>_0^!Gt5B^4dI~YLpL!P=o;$6^C-qQ91sMABA^Vu&rZs4rF{r zdnKSv5o5fLPOhPo4^aQw_WwH5@?R~jcMpFo-_X|MskM$*nxfF7Y#<=Nane-JVXQY1 zr|bEyrpTEG9Y#}*U5Fc16ux)YA*CcBxZs=Mqdp2gEaQtH=xb_Qkv@6vB(vL1*Pd`s&i&5$&N=tq zlYBMXyL0`LY3hKdIWn$34gvTSAb_9?JXjOp&=zYV!vt6IB{Z*$I>F)h;X5i|c|~$}zXn^d8x! z6IyybB3Q8(DP7i1kFBAMdDYu`wcC0V`@MAu=}rdC8cZdfEHc?jAz0T@dQ%?jIDz0I zs9N+-_!|98xUZ~W$6v**Whrixee*MmY+b!3ZQl@{g1P+UCCzSGW)3a*hkN*IdK$68xazr4RkRO#Q* zWh2nr9Rmnh9c%Q<%F0LB%pRq4+MCd)-)SFGl=xvX%ko|ZRVfrs%!RNSs@UnQx_$>6 z^t4`sbMzDa=jve=geRD)ig=RSQ(W=M>+tcaR5oytBPDvlEWxw%k}(U*^kQ=UD1XF= zd07}Tr#XqEmCDVWdAgW9Hsnmt#2j2bICz2nJqkWu#Jj!yU-U!t1M}Fu{QlNVx7l(! zv)&SZ)xjN{V;DO*d_9C0L&<9+CzM)Co`d;7;ynG!oPqXsGF5>yh3K@H|E96YRf?(5 zSaRK$;tQLi&!vBSo=?@wl>;R@Zz#Xg?kuk4zxy7dMXGV{tWg@s=W3)_!ns)E7~Rki7cU4akNukBOtJpIj{eDVx~ zLv^|Bc}p!6Do List[int]: - """Generate a random list defined by the size.""" - random_list = [random.randint(1, size * size) for _ in range(size)] - return random_list \ No newline at end of file + type_: str = "int", +) -> List[Union[int, float, str]]: + """Generate a random list defined by the size and element type.""" + if type_ == "int": + random_list = [random.randint(1, size * size) for _ in range(size)] + elif type_ == "float": + random_list = [random.uniform(1, size * size) for _ in range(size)] + elif type_ == "str": + random_list = [ + "".join(random.choices(string.ascii_letters + string.digits, k=10)) + for _ in range(size) + ] + else: + raise ValueError(f"Unsupported type: {type_}") + + return random_list diff --git a/bosco/main.py b/bosco/main.py index ed24d8e..b5852c5 100644 --- a/bosco/main.py +++ b/bosco/main.py @@ -18,22 +18,24 @@ def bosco( number_doubles: int = typer.Option(5), file: str = typer.Option("./bosco/sorting.py"), function_name: str = typer.Option("bubble_sort"), + element_type: str = typer.Option( + "int", help="Type of the generated elements (int, float, or str)" + ), ) -> None: """Conduct a doubling experiment to measure the performance of list sorting for a specific algorithm.""" - console.print( - "\n:dog: Bosco is fetching our results!\n" - ) + console.print("\n:dog: Bosco is fetching our results!\n") console.print(f"Path to the desired file: {file}\n") console.print(f"Name of the desired function: {function_name}\n") console.print(f"Starting size of the data container: {starting_size}\n") console.print(f"Number of doubles to execute: {number_doubles}\n") + console.print(f"Type of the generated elements: {element_type}\n") console.print("📈 Here are the results from running the experiment!\n") all_results = [] for i in range(number_doubles): size = starting_size * (2**i) - data_to_sort = generate.generate_random_container(size) + data_to_sort = generate.generate_random_container(size, element_type) performance_data = benchmark.run_sorting_algorithm( file, function_name, data_to_sort ) diff --git a/poetry.lock b/poetry.lock index 86a4a80..47165aa 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,7 +1,865 @@ # This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. -package = [] + +[[package]] +name = "application-properties" +version = "0.8.2" +description = "A simple, easy to use, unified manner of accessing program properties." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "application_properties-0.8.2-py3-none-any.whl", hash = "sha256:a4fe684e4d95fc45054d3316acf763a7b0f29342ccea02eee09de53004f0139c"}, + {file = "application_properties-0.8.2.tar.gz", hash = "sha256:e5e6918c8e29ab57175567d51dfa39c00a1d75b3205625559bb02250f50f0420"}, +] + +[package.dependencies] +pyyaml = ">=5.4.1" +tomli = ">=2.0.1" +typing-extensions = ">=4.5.0" + +[[package]] +name = "certifi" +version = "2024.2.2" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "columnar" +version = "1.4.1" +description = "A tool for printing data in a columnar format." +optional = false +python-versions = "*" +files = [ + {file = "Columnar-1.4.1-py3-none-any.whl", hash = "sha256:8efb692a7e6ca07dcc8f4ea889960421331a5dffa8e5af81f0a67ad8ea1fc798"}, + {file = "Columnar-1.4.1.tar.gz", hash = "sha256:c3cb57273333b2ff9cfaafc86f09307419330c97faa88dcfe23df05e6fbb9c72"}, +] + +[package.dependencies] +toolz = "*" +wcwidth = "*" + +[[package]] +name = "commonmark" +version = "0.9.1" +description = "Python parser for the CommonMark Markdown spec" +optional = false +python-versions = "*" +files = [ + {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, + {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, +] + +[package.extras] +test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] + +[[package]] +name = "coverage" +version = "7.5.0" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "coverage-7.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:432949a32c3e3f820af808db1833d6d1631664d53dd3ce487aa25d574e18ad1c"}, + {file = "coverage-7.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2bd7065249703cbeb6d4ce679c734bef0ee69baa7bff9724361ada04a15b7e3b"}, + {file = "coverage-7.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbfe6389c5522b99768a93d89aca52ef92310a96b99782973b9d11e80511f932"}, + {file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39793731182c4be939b4be0cdecde074b833f6171313cf53481f869937129ed3"}, + {file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85a5dbe1ba1bf38d6c63b6d2c42132d45cbee6d9f0c51b52c59aa4afba057517"}, + {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:357754dcdfd811462a725e7501a9b4556388e8ecf66e79df6f4b988fa3d0b39a"}, + {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a81eb64feded34f40c8986869a2f764f0fe2db58c0530d3a4afbcde50f314880"}, + {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:51431d0abbed3a868e967f8257c5faf283d41ec882f58413cf295a389bb22e58"}, + {file = "coverage-7.5.0-cp310-cp310-win32.whl", hash = "sha256:f609ebcb0242d84b7adeee2b06c11a2ddaec5464d21888b2c8255f5fd6a98ae4"}, + {file = "coverage-7.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:6782cd6216fab5a83216cc39f13ebe30adfac2fa72688c5a4d8d180cd52e8f6a"}, + {file = "coverage-7.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e768d870801f68c74c2b669fc909839660180c366501d4cc4b87efd6b0eee375"}, + {file = "coverage-7.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:84921b10aeb2dd453247fd10de22907984eaf80901b578a5cf0bb1e279a587cb"}, + {file = "coverage-7.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:710c62b6e35a9a766b99b15cdc56d5aeda0914edae8bb467e9c355f75d14ee95"}, + {file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c379cdd3efc0658e652a14112d51a7668f6bfca7445c5a10dee7eabecabba19d"}, + {file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fea9d3ca80bcf17edb2c08a4704259dadac196fe5e9274067e7a20511fad1743"}, + {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:41327143c5b1d715f5f98a397608f90ab9ebba606ae4e6f3389c2145410c52b1"}, + {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:565b2e82d0968c977e0b0f7cbf25fd06d78d4856289abc79694c8edcce6eb2de"}, + {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cf3539007202ebfe03923128fedfdd245db5860a36810136ad95a564a2fdffff"}, + {file = "coverage-7.5.0-cp311-cp311-win32.whl", hash = "sha256:bf0b4b8d9caa8d64df838e0f8dcf68fb570c5733b726d1494b87f3da85db3a2d"}, + {file = "coverage-7.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c6384cc90e37cfb60435bbbe0488444e54b98700f727f16f64d8bfda0b84656"}, + {file = "coverage-7.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fed7a72d54bd52f4aeb6c6e951f363903bd7d70bc1cad64dd1f087980d309ab9"}, + {file = "coverage-7.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cbe6581fcff7c8e262eb574244f81f5faaea539e712a058e6707a9d272fe5b64"}, + {file = "coverage-7.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad97ec0da94b378e593ef532b980c15e377df9b9608c7c6da3506953182398af"}, + {file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd4bacd62aa2f1a1627352fe68885d6ee694bdaebb16038b6e680f2924a9b2cc"}, + {file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:adf032b6c105881f9d77fa17d9eebe0ad1f9bfb2ad25777811f97c5362aa07f2"}, + {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4ba01d9ba112b55bfa4b24808ec431197bb34f09f66f7cb4fd0258ff9d3711b1"}, + {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f0bfe42523893c188e9616d853c47685e1c575fe25f737adf473d0405dcfa7eb"}, + {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a9a7ef30a1b02547c1b23fa9a5564f03c9982fc71eb2ecb7f98c96d7a0db5cf2"}, + {file = "coverage-7.5.0-cp312-cp312-win32.whl", hash = "sha256:3c2b77f295edb9fcdb6a250f83e6481c679335ca7e6e4a955e4290350f2d22a4"}, + {file = "coverage-7.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:427e1e627b0963ac02d7c8730ca6d935df10280d230508c0ba059505e9233475"}, + {file = "coverage-7.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9dd88fce54abbdbf4c42fb1fea0e498973d07816f24c0e27a1ecaf91883ce69e"}, + {file = "coverage-7.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a898c11dca8f8c97b467138004a30133974aacd572818c383596f8d5b2eb04a9"}, + {file = "coverage-7.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07dfdd492d645eea1bd70fb1d6febdcf47db178b0d99161d8e4eed18e7f62fe7"}, + {file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3d117890b6eee85887b1eed41eefe2e598ad6e40523d9f94c4c4b213258e4a4"}, + {file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6afd2e84e7da40fe23ca588379f815fb6dbbb1b757c883935ed11647205111cb"}, + {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a9960dd1891b2ddf13a7fe45339cd59ecee3abb6b8326d8b932d0c5da208104f"}, + {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ced268e82af993d7801a9db2dbc1d2322e786c5dc76295d8e89473d46c6b84d4"}, + {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7c211f25777746d468d76f11719e64acb40eed410d81c26cefac641975beb88"}, + {file = "coverage-7.5.0-cp38-cp38-win32.whl", hash = "sha256:262fffc1f6c1a26125d5d573e1ec379285a3723363f3bd9c83923c9593a2ac25"}, + {file = "coverage-7.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:eed462b4541c540d63ab57b3fc69e7d8c84d5957668854ee4e408b50e92ce26a"}, + {file = "coverage-7.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0194d654e360b3e6cc9b774e83235bae6b9b2cac3be09040880bb0e8a88f4a1"}, + {file = "coverage-7.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33c020d3322662e74bc507fb11488773a96894aa82a622c35a5a28673c0c26f5"}, + {file = "coverage-7.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbdf2cae14a06827bec50bd58e49249452d211d9caddd8bd80e35b53cb04631"}, + {file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3235d7c781232e525b0761730e052388a01548bd7f67d0067a253887c6e8df46"}, + {file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2de4e546f0ec4b2787d625e0b16b78e99c3e21bc1722b4977c0dddf11ca84e"}, + {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0e206259b73af35c4ec1319fd04003776e11e859936658cb6ceffdeba0f5be"}, + {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2055c4fb9a6ff624253d432aa471a37202cd8f458c033d6d989be4499aed037b"}, + {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:075299460948cd12722a970c7eae43d25d37989da682997687b34ae6b87c0ef0"}, + {file = "coverage-7.5.0-cp39-cp39-win32.whl", hash = "sha256:280132aada3bc2f0fac939a5771db4fbb84f245cb35b94fae4994d4c1f80dae7"}, + {file = "coverage-7.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:c58536f6892559e030e6924896a44098bc1290663ea12532c78cef71d0df8493"}, + {file = "coverage-7.5.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:2b57780b51084d5223eee7b59f0d4911c31c16ee5aa12737c7a02455829ff067"}, + {file = "coverage-7.5.0.tar.gz", hash = "sha256:cf62d17310f34084c59c01e027259076479128d11e4661bb6c9acb38c5e19bb8"}, +] + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "execnet" +version = "2.1.1" +description = "execnet: rapid multi-Python deployment" +optional = false +python-versions = ">=3.8" +files = [ + {file = "execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc"}, + {file = "execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3"}, +] + +[package.extras] +testing = ["hatch", "pre-commit", "pytest", "tox"] + +[[package]] +name = "idna" +version = "3.7" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "mdtoc" +version = "1.3" +description = "Adds table of contents to Markdown files" +optional = false +python-versions = "*" +files = [ + {file = "mdtoc-1.3-py3-none-any.whl", hash = "sha256:2c807d32cf9f85740c10c3621c0f455e5d646089e7703c9fe4f3ba9d84d14b8e"}, + {file = "mdtoc-1.3.tar.gz", hash = "sha256:ea6899a990ee64109094346fae927eececdd4b5e0dfefb42fb9bc1fda6a87d89"}, +] + +[package.dependencies] +requests = "<3.0.0" +xtermcolor = "*" + +[[package]] +name = "mslex" +version = "1.2.0" +description = "shlex for windows" +optional = false +python-versions = ">=3.5" +files = [ + {file = "mslex-1.2.0-py3-none-any.whl", hash = "sha256:c68ec637485ee3544c5847c1b4e78b02940b32708568fb1d8715491815aa2341"}, + {file = "mslex-1.2.0.tar.gz", hash = "sha256:79e2abc5a129dd71cdde58a22a2039abb7fa8afcbac498b723ba6e9b9fbacc14"}, +] + +[[package]] +name = "mypy" +version = "0.910" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy-0.910-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:a155d80ea6cee511a3694b108c4494a39f42de11ee4e61e72bc424c490e46457"}, + {file = "mypy-0.910-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:b94e4b785e304a04ea0828759172a15add27088520dc7e49ceade7834275bedb"}, + {file = "mypy-0.910-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:088cd9c7904b4ad80bec811053272986611b84221835e079be5bcad029e79dd9"}, + {file = "mypy-0.910-cp35-cp35m-win_amd64.whl", hash = "sha256:adaeee09bfde366d2c13fe6093a7df5df83c9a2ba98638c7d76b010694db760e"}, + {file = "mypy-0.910-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ecd2c3fe726758037234c93df7e98deb257fd15c24c9180dacf1ef829da5f921"}, + {file = "mypy-0.910-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d9dd839eb0dc1bbe866a288ba3c1afc33a202015d2ad83b31e875b5905a079b6"}, + {file = "mypy-0.910-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:3e382b29f8e0ccf19a2df2b29a167591245df90c0b5a2542249873b5c1d78212"}, + {file = "mypy-0.910-cp36-cp36m-win_amd64.whl", hash = "sha256:53fd2eb27a8ee2892614370896956af2ff61254c275aaee4c230ae771cadd885"}, + {file = "mypy-0.910-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b6fb13123aeef4a3abbcfd7e71773ff3ff1526a7d3dc538f3929a49b42be03f0"}, + {file = "mypy-0.910-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e4dab234478e3bd3ce83bac4193b2ecd9cf94e720ddd95ce69840273bf44f6de"}, + {file = "mypy-0.910-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:7df1ead20c81371ccd6091fa3e2878559b5c4d4caadaf1a484cf88d93ca06703"}, + {file = "mypy-0.910-cp37-cp37m-win_amd64.whl", hash = "sha256:0aadfb2d3935988ec3815952e44058a3100499f5be5b28c34ac9d79f002a4a9a"}, + {file = "mypy-0.910-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec4e0cd079db280b6bdabdc807047ff3e199f334050db5cbb91ba3e959a67504"}, + {file = "mypy-0.910-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:119bed3832d961f3a880787bf621634ba042cb8dc850a7429f643508eeac97b9"}, + {file = "mypy-0.910-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:866c41f28cee548475f146aa4d39a51cf3b6a84246969f3759cb3e9c742fc072"}, + {file = "mypy-0.910-cp38-cp38-win_amd64.whl", hash = "sha256:ceb6e0a6e27fb364fb3853389607cf7eb3a126ad335790fa1e14ed02fba50811"}, + {file = "mypy-0.910-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1a85e280d4d217150ce8cb1a6dddffd14e753a4e0c3cf90baabb32cefa41b59e"}, + {file = "mypy-0.910-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:42c266ced41b65ed40a282c575705325fa7991af370036d3f134518336636f5b"}, + {file = "mypy-0.910-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:3c4b8ca36877fc75339253721f69603a9c7fdb5d4d5a95a1a1b899d8b86a4de2"}, + {file = "mypy-0.910-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:c0df2d30ed496a08de5daed2a9ea807d07c21ae0ab23acf541ab88c24b26ab97"}, + {file = "mypy-0.910-cp39-cp39-win_amd64.whl", hash = "sha256:c6c2602dffb74867498f86e6129fd52a2770c48b7cd3ece77ada4fa38f94eba8"}, + {file = "mypy-0.910-py3-none-any.whl", hash = "sha256:ef565033fa5a958e62796867b1df10c40263ea9ded87164d67572834e57a174d"}, + {file = "mypy-0.910.tar.gz", hash = "sha256:704098302473cb31a218f1775a873b376b30b4c18229421e9e9dc8916fd16150"}, +] + +[package.dependencies] +mypy-extensions = ">=0.4.3,<0.5.0" +toml = "*" +typing-extensions = ">=3.7.4" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +python2 = ["typed-ast (>=1.4.0,<1.5.0)"] + +[[package]] +name = "mypy-extensions" +version = "0.4.4" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +optional = false +python-versions = ">=2.7" +files = [ + {file = "mypy_extensions-0.4.4.tar.gz", hash = "sha256:c8b707883a96efe9b4bb3aaf0dcc07e7e217d7d8368eec4db4049ee9e142f4fd"}, +] + +[[package]] +name = "packaging" +version = "24.0" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, +] + +[[package]] +name = "plotly" +version = "5.21.0" +description = "An open-source, interactive data visualization library for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "plotly-5.21.0-py3-none-any.whl", hash = "sha256:a33f41fd5922e45b2b253f795b200d14452eb625790bb72d0a72cf1328a6abbf"}, + {file = "plotly-5.21.0.tar.gz", hash = "sha256:69243f8c165d4be26c0df1c6f0b7b258e2dfeefe032763404ad7e7fb7d7c2073"}, +] + +[package.dependencies] +packaging = "*" +tenacity = ">=6.2.0" + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pprintpp" +version = "0.4.0" +description = "A drop-in replacement for pprint that's actually pretty" +optional = false +python-versions = "*" +files = [ + {file = "pprintpp-0.4.0-py2.py3-none-any.whl", hash = "sha256:b6b4dcdd0c0c0d75e4d7b2f21a9e933e5b2ce62b26e1a54537f9651ae5a5c01d"}, + {file = "pprintpp-0.4.0.tar.gz", hash = "sha256:ea826108e2c7f49dc6d66c752973c3fc9749142a798d6b254e1e301cfdbc6403"}, +] + +[[package]] +name = "psutil" +version = "5.9.8" +description = "Cross-platform lib for process and system monitoring in Python." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +files = [ + {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"}, + {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"}, + {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"}, + {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"}, + {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"}, + {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"}, + {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"}, + {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"}, + {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"}, + {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"}, +] + +[package.extras] +test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] + +[[package]] +name = "pygments" +version = "2.17.2" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, + {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, +] + +[package.extras] +plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pymarkdownlnt" +version = "0.9.18" +description = "A GitHub Flavored Markdown compliant Markdown linter." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "pymarkdownlnt-0.9.18-py3-none-any.whl", hash = "sha256:2903541fe9d84eca6176d187d5c99eb7ddb02f180d66577e9b73797a4f06a649"}, + {file = "pymarkdownlnt-0.9.18.tar.gz", hash = "sha256:ed854f0d7d7cef0e8fd5d825d21dc26e6cb1482f0073a323f5202f738a1cda6e"}, +] + +[package.dependencies] +application-properties = ">=0.8.2" +columnar = ">=1.4.0" +typing-extensions = ">=4.7.0" + +[[package]] +name = "pytest" +version = "7.4.4" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, + {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-clarity" +version = "1.0.1" +description = "A plugin providing an alternative, colourful diff output for failing assertions." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pytest-clarity-1.0.1.tar.gz", hash = "sha256:505fe345fad4fe11c6a4187fe683f2c7c52c077caa1e135f3e483fe112db7772"}, +] + +[package.dependencies] +pprintpp = ">=0.4.0" +pytest = ">=3.5.0" +rich = ">=8.0.0" + +[[package]] +name = "pytest-cov" +version = "4.1.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, + {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, +] + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] + +[[package]] +name = "pytest-randomly" +version = "3.15.0" +description = "Pytest plugin to randomly order tests and control random.seed." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest_randomly-3.15.0-py3-none-any.whl", hash = "sha256:0516f4344b29f4e9cdae8bce31c4aeebf59d0b9ef05927c33354ff3859eeeca6"}, + {file = "pytest_randomly-3.15.0.tar.gz", hash = "sha256:b908529648667ba5e54723088edd6f82252f540cc340d748d1fa985539687047"}, +] + +[package.dependencies] +pytest = "*" + +[[package]] +name = "pytest-xdist" +version = "3.5.0" +description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-xdist-3.5.0.tar.gz", hash = "sha256:cbb36f3d67e0c478baa57fa4edc8843887e0f6cfc42d677530a36d7472b32d8a"}, + {file = "pytest_xdist-3.5.0-py3-none-any.whl", hash = "sha256:d075629c7e00b611df89f490a5063944bee7a4362a5ff11c7cc7824a03dfce24"}, +] + +[package.dependencies] +execnet = ">=1.1" +pytest = ">=6.2.0" + +[package.extras] +psutil = ["psutil (>=3.0)"] +setproctitle = ["setproctitle"] +testing = ["filelock"] + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "rich" +version = "10.16.2" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.6.2,<4.0.0" +files = [ + {file = "rich-10.16.2-py3-none-any.whl", hash = "sha256:c59d73bd804c90f747c8d7b1d023b88f2a9ac2454224a4aeaf959b21eeb42d03"}, + {file = "rich-10.16.2.tar.gz", hash = "sha256:720974689960e06c2efdb54327f8bf0cdbdf4eae4ad73b6c94213cad405c371b"}, +] + +[package.dependencies] +colorama = ">=0.4.0,<0.5.0" +commonmark = ">=0.9.0,<0.10.0" +pygments = ">=2.6.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] + +[[package]] +name = "ruff" +version = "0.1.15" +description = "An extremely fast Python linter and code formatter, written in Rust." +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruff-0.1.15-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:5fe8d54df166ecc24106db7dd6a68d44852d14eb0729ea4672bb4d96c320b7df"}, + {file = "ruff-0.1.15-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6f0bfbb53c4b4de117ac4d6ddfd33aa5fc31beeaa21d23c45c6dd249faf9126f"}, + {file = "ruff-0.1.15-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0d432aec35bfc0d800d4f70eba26e23a352386be3a6cf157083d18f6f5881c8"}, + {file = "ruff-0.1.15-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9405fa9ac0e97f35aaddf185a1be194a589424b8713e3b97b762336ec79ff807"}, + {file = "ruff-0.1.15-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c66ec24fe36841636e814b8f90f572a8c0cb0e54d8b5c2d0e300d28a0d7bffec"}, + {file = "ruff-0.1.15-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:6f8ad828f01e8dd32cc58bc28375150171d198491fc901f6f98d2a39ba8e3ff5"}, + {file = "ruff-0.1.15-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86811954eec63e9ea162af0ffa9f8d09088bab51b7438e8b6488b9401863c25e"}, + {file = "ruff-0.1.15-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd4025ac5e87d9b80e1f300207eb2fd099ff8200fa2320d7dc066a3f4622dc6b"}, + {file = "ruff-0.1.15-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b17b93c02cdb6aeb696effecea1095ac93f3884a49a554a9afa76bb125c114c1"}, + {file = "ruff-0.1.15-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ddb87643be40f034e97e97f5bc2ef7ce39de20e34608f3f829db727a93fb82c5"}, + {file = "ruff-0.1.15-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:abf4822129ed3a5ce54383d5f0e964e7fef74a41e48eb1dfad404151efc130a2"}, + {file = "ruff-0.1.15-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6c629cf64bacfd136c07c78ac10a54578ec9d1bd2a9d395efbee0935868bf852"}, + {file = "ruff-0.1.15-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1bab866aafb53da39c2cadfb8e1c4550ac5340bb40300083eb8967ba25481447"}, + {file = "ruff-0.1.15-py3-none-win32.whl", hash = "sha256:2417e1cb6e2068389b07e6fa74c306b2810fe3ee3476d5b8a96616633f40d14f"}, + {file = "ruff-0.1.15-py3-none-win_amd64.whl", hash = "sha256:3837ac73d869efc4182d9036b1405ef4c73d9b1f88da2413875e34e0d6919587"}, + {file = "ruff-0.1.15-py3-none-win_arm64.whl", hash = "sha256:9a933dfb1c14ec7a33cceb1e49ec4a16b51ce3c20fd42663198746efc0427360"}, + {file = "ruff-0.1.15.tar.gz", hash = "sha256:f6dfa8c1b21c913c326919056c390966648b680966febcb796cc9d1aaab8564e"}, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +description = "Tool to Detect Surrounding Shell" +optional = false +python-versions = ">=3.7" +files = [ + {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, + {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, +] + +[[package]] +name = "symbex" +version = "1.4" +description = "Find the Python code for specified symbols" +optional = false +python-versions = ">=3.8" +files = [ + {file = "symbex-1.4-py3-none-any.whl", hash = "sha256:be5b64ee094b803ccfbfa903c1b1e3a004d6575bd8ddaaa83c7c0ea7bdf613e3"}, + {file = "symbex-1.4.tar.gz", hash = "sha256:f786d5d1d9ef0e5b0856ebf54cc12f7c42a63ea073e274f88b6024cf50490164"}, +] + +[package.dependencies] +click = "*" + +[package.extras] +test = ["PyYAML", "cogapp", "pytest", "pytest-icdiff", "ruff"] + +[[package]] +name = "tabulate" +version = "0.9.0" +description = "Pretty-print tabular data" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"}, + {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"}, +] + +[package.extras] +widechars = ["wcwidth"] + +[[package]] +name = "taskipy" +version = "1.12.2" +description = "tasks runner for python projects" +optional = false +python-versions = ">=3.6,<4.0" +files = [ + {file = "taskipy-1.12.2-py3-none-any.whl", hash = "sha256:ffdbb0bb0db54c0ec5c424610a3a087eea22706d4d1f6e3e8b4f12ebba05f98f"}, + {file = "taskipy-1.12.2.tar.gz", hash = "sha256:eadfdc20d6bb94d8018eda32f1dbf584cf4aa6cffb71ba5cc2de20d344f8c4fb"}, +] + +[package.dependencies] +colorama = ">=0.4.4,<0.5.0" +mslex = {version = ">=1.1.0,<2.0.0", markers = "sys_platform == \"win32\""} +psutil = ">=5.7.2,<6.0.0" +tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version >= \"3.7\" and python_version < \"4.0\""} + +[[package]] +name = "tenacity" +version = "8.2.3" +description = "Retry code until it succeeds" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"}, + {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"}, +] + +[package.extras] +doc = ["reno", "sphinx", "tornado (>=4.5)"] + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + +[[package]] +name = "toolz" +version = "0.12.1" +description = "List processing tools and functional utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "toolz-0.12.1-py3-none-any.whl", hash = "sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85"}, + {file = "toolz-0.12.1.tar.gz", hash = "sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d"}, +] + +[[package]] +name = "typer" +version = "0.7.0" +description = "Typer, build great CLIs. Easy to code. Based on Python type hints." +optional = false +python-versions = ">=3.6" +files = [ + {file = "typer-0.7.0-py3-none-any.whl", hash = "sha256:b5e704f4e48ec263de1c0b3a2387cd405a13767d2f907f44c1a08cbad96f606d"}, + {file = "typer-0.7.0.tar.gz", hash = "sha256:ff797846578a9f2a201b53442aedeb543319466870fbe1c701eab66dd7681165"}, +] + +[package.dependencies] +click = ">=7.1.1,<9.0.0" +colorama = {version = ">=0.4.3,<0.5.0", optional = true, markers = "extra == \"all\""} +rich = {version = ">=10.11.0,<13.0.0", optional = true, markers = "extra == \"all\""} +shellingham = {version = ">=1.3.0,<2.0.0", optional = true, markers = "extra == \"all\""} + +[package.extras] +all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] +dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2.17.0,<3.0.0)"] +doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"] +test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] + +[[package]] +name = "typing-extensions" +version = "4.11.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, + {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, +] + +[[package]] +name = "urllib3" +version = "2.2.1" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "wcwidth" +version = "0.2.13" +description = "Measures the displayed width of unicode strings in a terminal" +optional = false +python-versions = "*" +files = [ + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, +] + +[[package]] +name = "xtermcolor" +version = "1.3" +description = "Python module for colorizing output with xterm 256 color support" +optional = false +python-versions = "*" +files = [ + {file = "xtermcolor-1.3.tar.gz", hash = "sha256:66dd9f4b1489ba8a24d5be746fbbd70ecbe55a9cc1795ab552e9734e14bdbcdd"}, +] [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "81b2fa642d7f2d1219cf80112ace12d689d053d81be7f7addb98144d56fc0fb2" +content-hash = "1fc3de09ce4297000f7d172edff9ef58a2e56f2df6300e8f5d4ce31e11a0a723" diff --git a/tests/__pycache__/__init__.cpython-311.pyc b/tests/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1f499fb40cb616be9b2e2ed12cb4a001cd032f31 GIT binary patch literal 150 zcmZ3^%ge<81UlE%(?IlN5CH>>P{wCAAY(d13PUi1CZpd%Hk%5tZQhsrAzJ5t+aY?a$e0*kJW=VX!UP0wA4x8Nkl+v73yCPPgPLSEf U{6OLZGb1D82L>2X#0(Sz0LRK8Z2$lO literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_benchmark.cpython-311-pytest-8.1.2.pyc b/tests/__pycache__/test_benchmark.cpython-311-pytest-8.1.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1b4a1ee1f313a7373835b0f562b2c8aa2d253fd9 GIT binary patch literal 11269 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 DW8JMn literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_constants.cpython-311-pytest-8.1.2.pyc b/tests/__pycache__/test_constants.cpython-311-pytest-8.1.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9a58045eb0c09c16aad6a66dba421dc8bcaac3df GIT binary patch literal 10385 zcmeHN-ESMm5#Ku=KlLrkv7I#T$%czCl1WSQSA@8&ow#X%#tj-5Mf7qw@s1K@@{ZU& z`a`8qqwqr?`p`E6MV?i-F3`9B9h4ve!~q2Y1Sk-o4|44QhMqdJ%Ukk3tVVJARGp5a zotfXv?(J}gcXRvak&yy{L%%&+{b!nxFOdljwbyul7aEU=MV5%ASZZBaQu+T>L#wC? zX{47jiqK@2vY<)TbB+8`p3Ag)p)s^Hq!2s1HXJy%(vQd{Fi!&kSsJl2kI2%fl?6Ix z<$#V`>ZhcbU%&8y>r`vBp?j;gUU4b4E1qLBrn}Xi$YGx8cua4&R;zB8zCy3Jii&^i zC)8cHou6@i#lA_YOP?ry`i9FYZbkMD4IEhtKF==#c}zS7{`C&LQY!^iv(i?^%33)q z|JTAM%-T~va|nZR4y~X6rR}w-qnkSSuh)9r>Q$HOEoOs&kJq!A$4Y*B8AsvgIrz41 zHukfNR&9O#!J?mOKJZpuXJ0ArFL2bN{;_Sc7PYy9rcJ?R!*nV(&cP=ftXEr3#jCjv zoA$GoT{T;E&(E6D(>ELLTFuuuVCoaxBpmws`AL_S{Qo~pO3REhLvNE5i z*I_O<(wG_A>6*g1j5iU?79k-|GFI(O*i)GMonqzhD;o-YRQPBcDJu_Irm%jcpAAh9 z(*Yy}vzHip$x(M&jb)o+Zs@OsuP|9XQTEkq*NV#eug<;Gd~m7A3cu+!^lLh{E)>~2 z_RNZ#?S}Ugg6nH~2hhzcCB_vnZ z$4tg->hb>OphI5+(1lx&ZN?)0=`@VlFZ>wNA>>TMr2d3aG3#}M+D!@>3o?rB4};oR zZq@1@BwRmJcLBltlLlLLTXl;=jg`8)Y}O426IkA0W))_wN&V65d?b+D_)mj>%;0&| zGwl1#y6N!CEN1xy`9s)^82S7lb8(QlGRRyOjBxp$7^h(7<`{nMbaBw{;Z>gGmnb4< zxYd3RqgOzE3O?)?kUbufFSMB*ZKk8m>~gvlupp7=cF+bbzyw}uWkcEujAQ{IBtWGw zE)jlSWeeJf?Vv<z;_UVk-!H;VDyj?7(0qUFnh1D21WxP5P|VSMquJ70>SLP zMg-)&6+~e2kP$d`6oKy`0^@-Xh``h#BXImE0>SLP#u|{d6^Otahm639qX@ii1T3s~ zpS&e1tKSE2P*A#xRipW!Y6OjbL8&xYF~$;czh(p#sA7tq0T);rny2TWwLUsfAG(4? zrRIYx6dzomo5gR~jVMfqI->X#2`X?`NMR7lDj6Z7s zWz@ZQ0U^8MB*kP*i%8x@GJ|9m$$2CtBxNKQkYL`RlSqysnL=_L$s0&cAUTNyt8K+h ztnN2Q=Rq-8;#(Lj@rCMrR~eQ~1`B-0c!96?X2!T{)>}5CKLXHc_^^}ky?IEw+U$-t z+X~0c3;I{&mz(^Lf(n<>Bk~l08 z10Ev76A}PN@UpK69@wrnx1-HqWw35QOBo0f&fQQKNgap75 zyzDE22ezwC?`YGV@VPy}?j`{Qek)K3jATJ8t)wt6iNg{x;2|G;6GwiG{^; zID(gbMexA>pZswsx9)GP~)cCF? zcuntTs99rhZ;Q_P{drO0x6%wpri-`T6Z~eF!louxTX7n&lZSo?TD(Ah4S;o@fqcp*`Jd{XP>%a=*wzKr2x)Sq(Y z)Zes)?BA7zY;nTR8iwUo48zX_n+^EWhJVTs+Y?ISu@yEGl&F1=!oDTgeiiI5@UuOc zcviUq?)@Rl^vp^fF=Dd(F}{-t_G0z6FHwBu>u0OA`>?Uh7SG$b8-PDH@Cl=DB8%IS z_`L4t-WPk|en>wC8BRFc1Ok(#C|z>7LoR=TllzLlk%#=ROJ+LZvrDEs;d3uT)ZC-f jd+LY+>jB8K6j8?mfvzeLElCQa2$JNCRP-U(;@9yX!V7Fb literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_generate.cpython-311-pytest-8.1.2.pyc b/tests/__pycache__/test_generate.cpython-311-pytest-8.1.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dd2a3f0f98b589a99943ed22e60da28cf046f3ed GIT binary patch literal 12823 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 literal 0 HcmV?d00001 diff --git a/tests/test_benchmark.py b/tests/test_benchmark.py new file mode 100644 index 0000000..10e0f0f --- /dev/null +++ b/tests/test_benchmark.py @@ -0,0 +1,62 @@ +import os +import sys +from unittest.mock import Mock, patch + +import pytest + +from bosco.benchmark import run_sorting_algorithm + + +@pytest.fixture +def setup(): + array = [5, 2, 8, 12, 1, 6] + file_path = "bosco/sorting.py" + algorithm = "bubble_sort" + return array, file_path, algorithm + + +def test_run_sorting_algorithm_success(setup): + array, file_path, algorithm = setup + with patch( + "builtins.__import__", return_value=Mock(bubble_sort=lambda x: x) + ): + min_time, max_time, avg_time = run_sorting_algorithm( + file_path, algorithm, array + ) + assert isinstance(min_time, float) + assert isinstance(max_time, float) + assert isinstance(avg_time, float) + assert max_time >= min_time + + +def test_run_sorting_algorithm_import_error(setup): + array, file_path, algorithm = setup + with patch("builtins.__import__", side_effect=ImportError): + with pytest.raises(ValueError) as exc_info: + run_sorting_algorithm(file_path, algorithm, array) + assert ( + str(exc_info.value) + == f"Could not import {algorithm} from {file_path}" + ) + + +def test_run_sorting_algorithm_attribute_error(setup): + array, file_path, algorithm = setup + with patch("builtins.__import__", return_value=Mock(spec=[])): + with pytest.raises(ValueError) as exc_info: + run_sorting_algorithm(file_path, algorithm, array) + assert ( + str(exc_info.value) + == f"Could not import {algorithm} from {file_path}" + ) + + +def test_run_sorting_algorithm_directory_in_path(setup): + array, _, algorithm = setup + file_path = "algorithms/sorting_algorithms.py" + with patch( + "builtins.__import__", return_value=Mock(bubble_sort=lambda x: x) + ): + with patch.object(sys, "path", []): + run_sorting_algorithm(file_path, algorithm, array) + assert "algorithms" in sys.path diff --git a/tests/test_constants.py b/tests/test_constants.py index fdde0f9..6523008 100644 --- a/tests/test_constants.py +++ b/tests/test_constants.py @@ -2,7 +2,7 @@ import pytest from dataclasses import FrozenInstanceError -from bosco import constants +from bosco.constants import Bosco @pytest.fixture @@ -24,7 +24,7 @@ def bosco(): def test_number_of_constants(bosco): """Confirm that there are the correct number of constants.""" - assert len(bosco.__annotations__) == 9 + assert len(bosco.__annotations__) == 10 # noqa: PLR2004 def test_default_values(bosco): diff --git a/tests/test_generate.py b/tests/test_generate.py new file mode 100644 index 0000000..440be35 --- /dev/null +++ b/tests/test_generate.py @@ -0,0 +1,55 @@ +import random +from typing import List +import pytest +from bosco.generate import generate_random_container + + +def test_generate_random_container_size(): + sizes = [0, 1, 5, 10] + for size in sizes: + container = generate_random_container(size) + assert len(container) == size + + +def test_generate_random_container_elements_int(): + size = 10 + container = generate_random_container(size, type_="int") + for element in container: + assert isinstance(element, int) + assert 1 <= element <= size * size + + +def test_generate_random_container_elements_float(): + size = 10 + container = generate_random_container(size, type_="float") + for element in container: + assert isinstance(element, float) + assert 1 <= element <= size * size + + +def test_generate_random_container_elements_str(): + size = 10 + container = generate_random_container(size, type_="str") + for element in container: + assert isinstance(element, str) + assert len(element) == 10 + + +def test_generate_random_container_randomness(): + size = 5 + container1 = generate_random_container(size) + container2 = generate_random_container(size) + assert container1 != container2 + + +def test_generate_random_container_return_type(): + size = 3 + container = generate_random_container(size) + assert isinstance(container, list) + + +def test_generate_random_container_invalid_type(): + size = 5 + with pytest.raises(ValueError) as exc_info: + generate_random_container(size, type_="invalid") + assert str(exc_info.value) == "Unsupported type: invalid" From 339ab3a45124d6b6973f5546daff8e459a64158a Mon Sep 17 00:00:00 2001 From: AlishChhetri Date: Fri, 26 Apr 2024 21:43:28 -0400 Subject: [PATCH 3/8] fix: format for ruff --- tests/test_constants.py | 4 +++- tests/test_generate.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/test_constants.py b/tests/test_constants.py index 6523008..63413e1 100644 --- a/tests/test_constants.py +++ b/tests/test_constants.py @@ -1,7 +1,9 @@ """Confirm the correctness of the constants module.""" -import pytest from dataclasses import FrozenInstanceError + +import pytest + from bosco.constants import Bosco diff --git a/tests/test_generate.py b/tests/test_generate.py index 440be35..e4daa0a 100644 --- a/tests/test_generate.py +++ b/tests/test_generate.py @@ -1,6 +1,8 @@ import random from typing import List + import pytest + from bosco.generate import generate_random_container @@ -32,7 +34,7 @@ def test_generate_random_container_elements_str(): container = generate_random_container(size, type_="str") for element in container: assert isinstance(element, str) - assert len(element) == 10 + assert len(element) == 10 # noqa: PLR2004 def test_generate_random_container_randomness(): From a6a8ec1516b64a3356d5b17db13991d12ecd79a7 Mon Sep 17 00:00:00 2001 From: gormley01 <70409383+gormley01@users.noreply.github.com> Date: Sun, 28 Apr 2024 16:56:44 -0400 Subject: [PATCH 4/8] adding comments to generate.py --- bosco/generate.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bosco/generate.py b/bosco/generate.py index c1e0e22..a52e34b 100644 --- a/bosco/generate.py +++ b/bosco/generate.py @@ -9,15 +9,19 @@ def generate_random_container( ) -> List[Union[int, float, str]]: """Generate a random list defined by the size and element type.""" if type_ == "int": + # Generate a list of random integers within the range [1, size*size] random_list = [random.randint(1, size * size) for _ in range(size)] elif type_ == "float": + # Generate a list of random floating-point numbers within the range [1, size*size] random_list = [random.uniform(1, size * size) for _ in range(size)] elif type_ == "str": + # Generate a list of random strings of length 10 composed of letters and digits random_list = [ "".join(random.choices(string.ascii_letters + string.digits, k=10)) for _ in range(size) ] else: + # Raise an error if an unsupported type is specified raise ValueError(f"Unsupported type: {type_}") - return random_list + return random_list # Return the generated random list From 220d9ecf80a5a11cc3b2dba8329a27f1a6da7b49 Mon Sep 17 00:00:00 2001 From: Simon Jones Date: Sun, 28 Apr 2024 20:08:11 -0400 Subject: [PATCH 5/8] chore: gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b3a33c6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.devenv/ +__pycache__/ +.venv/ From 097ddde303b9b05d74b69123bc6cc0ae12904873 Mon Sep 17 00:00:00 2001 From: Simon Jones Date: Sun, 28 Apr 2024 20:11:30 -0400 Subject: [PATCH 6/8] chore: removing derived files --- .coverage | Bin 0 -> 69632 bytes .devenv/devenv.json | 1 - .devenv/flake.json | 1 - .devenv/gc/shell | 1 - .devenv/gc/shell-3-link | 1 - .devenv/imports.txt | 0 .devenv/profile | 1 - bosco/__pycache__/__init__.cpython-311.pyc | Bin 150 -> 148 bytes bosco/__pycache__/benchmark.cpython-311.pyc | Bin 2007 -> 2005 bytes bosco/__pycache__/constants.cpython-311.pyc | Bin 5029 -> 5027 bytes bosco/__pycache__/generate.cpython-311.pyc | Bin 1947 -> 1945 bytes coverage.json | 1 + tests/__pycache__/__init__.cpython-311.pyc | Bin 150 -> 148 bytes 13 files changed, 1 insertion(+), 5 deletions(-) create mode 100644 .coverage delete mode 100644 .devenv/devenv.json delete mode 100644 .devenv/flake.json delete mode 120000 .devenv/gc/shell delete mode 120000 .devenv/gc/shell-3-link delete mode 100644 .devenv/imports.txt delete mode 120000 .devenv/profile create mode 100644 coverage.json diff --git a/.coverage b/.coverage new file mode 100644 index 0000000000000000000000000000000000000000..dce1319f10aedb233ca30b8111f7cbcac8ff0285 GIT binary patch literal 69632 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 KhW?)*w)5X&Z^J79 literal 0 HcmV?d00001 diff --git a/.devenv/devenv.json b/.devenv/devenv.json deleted file mode 100644 index d689b3c..0000000 --- a/.devenv/devenv.json +++ /dev/null @@ -1 +0,0 @@ -{"inputs": {"nixpkgs": {"url": "github:NixOS/nixpkgs/nixpkgs-unstable"}, "nixpkgs-python": {"url": "github:cachix/nixpkgs-python"}}, "allowUnfree": false} \ No newline at end of file diff --git a/.devenv/flake.json b/.devenv/flake.json deleted file mode 100644 index 6ab007c..0000000 --- a/.devenv/flake.json +++ /dev/null @@ -1 +0,0 @@ -{"nixpkgs": {"url": "github:NixOS/nixpkgs/nixpkgs-unstable"}, "nixpkgs-python": {"url": "github:cachix/nixpkgs-python"}} \ No newline at end of file diff --git a/.devenv/gc/shell b/.devenv/gc/shell deleted file mode 120000 index f11c432..0000000 --- a/.devenv/gc/shell +++ /dev/null @@ -1 +0,0 @@ -shell-3-link \ No newline at end of file diff --git a/.devenv/gc/shell-3-link b/.devenv/gc/shell-3-link deleted file mode 120000 index 36221d4..0000000 --- a/.devenv/gc/shell-3-link +++ /dev/null @@ -1 +0,0 @@ -/nix/store/kfc3lrq3q6kgp12ic8vhmskgdyah6msf-devenv-shell-env \ No newline at end of file diff --git a/.devenv/imports.txt b/.devenv/imports.txt deleted file mode 100644 index e69de29..0000000 diff --git a/.devenv/profile b/.devenv/profile deleted file mode 120000 index 6bd6a69..0000000 --- a/.devenv/profile +++ /dev/null @@ -1 +0,0 @@ -/nix/store/ym47k4l1n6y5dq75lysimdc3s5qzw3x5-devenv-profile \ No newline at end of file diff --git a/bosco/__pycache__/__init__.cpython-311.pyc b/bosco/__pycache__/__init__.cpython-311.pyc index fffd47f0e1bcb20f64a758cafbf31ff663cd7ea9..1ada837ce9efc2edcbf599c733a923beca0239c8 100644 GIT binary patch delta 36 qcmbQnIE9gWIWI340}xaRsZZoKEJ@DLPcEM5?+yTxNC{m4 delta 38 scmbQjIE|5eIWI340}!;DYEI-f<=52D$j?pHFD@xfNzE(KpXloj0ILcLQ2+n{ diff --git a/bosco/__pycache__/benchmark.cpython-311.pyc b/bosco/__pycache__/benchmark.cpython-311.pyc index 6807bff0554d6f29fd92707619c3cd08f9fa4792..485df9e928ad29880f6f83cc64795fe376e28905 100644 GIT binary patch delta 39 tcmcc4f0dtmIWI340}#x3qPLNoorPCJKfXA*D6u3tLqEBAvm(njW&qeL3sV39 delta 41 vcmcc0f1RIuIWI340}u#?>1^a?XW`e<&&bbB)h{k7O-aow(cdi3vW*!4(-I2+ diff --git a/bosco/__pycache__/constants.cpython-311.pyc b/bosco/__pycache__/constants.cpython-311.pyc index dd175eaa9c69273613e63c1fbe62f3cc07277cf3..4bbfcce6029adb500ab424fe405368762a4bc3f6 100644 GIT binary patch delta 39 tcmZ3gzF3`mIWI340}xaRsc+{-8Ktc diff --git a/bosco/__pycache__/generate.cpython-311.pyc b/bosco/__pycache__/generate.cpython-311.pyc index 4ad0816091f29cbc7d64f84a44eeb09b26c26390..394ea9ccc0d2fa92e6e2b99390791cbeb44b8ce2 100644 GIT binary patch delta 151 zcmbQuKa-ztIWI340}#x3qL(JivXQTyiC0}ezBsuku_QS|Ke>4F5~eUl-pRk2J~0Yx ze#h*|$S6G7g7pF8gUOO?+F(+JUA0TDL+%61!j^r+Q`?=#ILEJk)NBYUtCg}lA2edKY0;T7$eW*pG=<^ z`8K~{_GDxfm~6)Sfbqs;aW-u*slu+>CD$SMfoXCcn<^vMIZoUt!f|KLfB^6;(V0kp6NEGN603NX@dH?_b diff --git a/coverage.json b/coverage.json new file mode 100644 index 0000000..f93851d --- /dev/null +++ b/coverage.json @@ -0,0 +1 @@ +{"meta": {"format": 2, "version": "7.5.0", "timestamp": "2024-04-28T20:09:22.827155", "branch_coverage": true, "show_contexts": false}, "files": {"bosco/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "bosco/benchmark.py": {"executed_lines": [1, 3, 4, 5, 6, 9, 13, 14, 16, 17, 19, 20, 21, 22, 23, 25, 30], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 95.0, "percent_covered_display": "95", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[16, 17], [25, -25], [25, 25], [25, 30]], "missing_branches": [[16, 19]]}, "bosco/constants.py": {"executed_lines": [1, 3, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 23, 38, 39, 40, 42, 43, 46, 50, 51, 52, 54, 55, 56, 59, 67, 68, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 84, 100, 101, 102, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 130], "summary": {"covered_lines": 66, "num_statements": 66, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[7, 8], [7, 9], [38, 39], [38, 40], [50, 51], [50, 52], [67, 68], [67, 69], [100, 101], [100, 102]], "missing_branches": []}, "bosco/generate.py": {"executed_lines": [1, 2, 3, 6, 11, 13, 14, 16, 17, 19, 25, 27], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[11, 13], [11, 14], [13, -13], [13, 13], [13, 27], [14, 16], [14, 17], [16, -16], [16, 16], [16, 27], [17, 19], [17, 25], [19, -19], [19, 19], [19, 27]], "missing_branches": []}, "tests/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": []}, "tests/test_benchmark.py": {"executed_lines": [1, 2, 3, 5, 7, 10, 11, 12, 13, 14, 15, 18, 19, 20, 23, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 43, 44, 45, 46, 47, 48, 54, 55, 56, 57, 60, 61, 62], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[11, 10], [11, 18], [20, -20], [20, -18], [20, 20], [20, 23], [34, -32], [34, 35], [35, 36], [35, 37], [45, -43], [45, 46], [46, 47], [46, 48], [57, -57], [57, -54], [57, 57], [57, 60], [60, 57], [60, 61]], "missing_branches": []}, "tests/test_constants.py": {"executed_lines": [1, 3, 5, 7, 10, 11, 13, 27, 29, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 44, 49, 50, 51], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[11, 10], [11, 27], [50, -49], [50, 51]], "missing_branches": []}, "tests/test_generate.py": {"executed_lines": [1, 2, 4, 6, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 48, 49, 50, 53, 54, 55, 56, 57], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[11, -9], [11, 12], [19, -16], [19, 20], [27, -24], [27, 28], [35, -32], [35, 36], [55, 56], [55, 57]], "missing_branches": []}}, "totals": {"covered_lines": 195, "num_statements": 195, "percent_covered": 99.60474308300395, "percent_covered_display": "99", "missing_lines": 0, "excluded_lines": 0, "num_branches": 58, "num_partial_branches": 1, "covered_branches": 57, "missing_branches": 1}} \ No newline at end of file diff --git a/tests/__pycache__/__init__.cpython-311.pyc b/tests/__pycache__/__init__.cpython-311.pyc index 1f499fb40cb616be9b2e2ed12cb4a001cd032f31..a024e415827a55af6207c962d89983e99eb12134 100644 GIT binary patch delta 35 pcmbQnIE9gGIWI340}xaRP2@7;Ro9O%PA*C;NzTwuE}rP`4gid12{ix! delta 37 rcmbQjIE|5OIWI340}$w3pU7p#uc@DrpPQ;*TvD2nnpdJf(bpXSs Date: Sun, 28 Apr 2024 20:33:19 -0400 Subject: [PATCH 7/8] chore: gitignoring tests/__pycache__ --- tests/__pycache__/__init__.cpython-311.pyc | Bin 148 -> 0 bytes .../test_benchmark.cpython-311-pytest-8.1.2.pyc | Bin 11269 -> 0 bytes .../test_constants.cpython-311-pytest-8.1.2.pyc | Bin 10385 -> 0 bytes .../test_generate.cpython-311-pytest-8.1.2.pyc | Bin 12823 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tests/__pycache__/__init__.cpython-311.pyc delete mode 100644 tests/__pycache__/test_benchmark.cpython-311-pytest-8.1.2.pyc delete mode 100644 tests/__pycache__/test_constants.cpython-311-pytest-8.1.2.pyc delete mode 100644 tests/__pycache__/test_generate.cpython-311-pytest-8.1.2.pyc diff --git a/tests/__pycache__/__init__.cpython-311.pyc b/tests/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index a024e415827a55af6207c962d89983e99eb12134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 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 DW8JMn diff --git a/tests/__pycache__/test_constants.cpython-311-pytest-8.1.2.pyc b/tests/__pycache__/test_constants.cpython-311-pytest-8.1.2.pyc deleted file mode 100644 index 9a58045eb0c09c16aad6a66dba421dc8bcaac3df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10385 zcmeHN-ESMm5#Ku=KlLrkv7I#T$%czCl1WSQSA@8&ow#X%#tj-5Mf7qw@s1K@@{ZU& z`a`8qqwqr?`p`E6MV?i-F3`9B9h4ve!~q2Y1Sk-o4|44QhMqdJ%Ukk3tVVJARGp5a zotfXv?(J}gcXRvak&yy{L%%&+{b!nxFOdljwbyul7aEU=MV5%ASZZBaQu+T>L#wC? zX{47jiqK@2vY<)TbB+8`p3Ag)p)s^Hq!2s1HXJy%(vQd{Fi!&kSsJl2kI2%fl?6Ix z<$#V`>ZhcbU%&8y>r`vBp?j;gUU4b4E1qLBrn}Xi$YGx8cua4&R;zB8zCy3Jii&^i zC)8cHou6@i#lA_YOP?ry`i9FYZbkMD4IEhtKF==#c}zS7{`C&LQY!^iv(i?^%33)q z|JTAM%-T~va|nZR4y~X6rR}w-qnkSSuh)9r>Q$HOEoOs&kJq!A$4Y*B8AsvgIrz41 zHukfNR&9O#!J?mOKJZpuXJ0ArFL2bN{;_Sc7PYy9rcJ?R!*nV(&cP=ftXEr3#jCjv zoA$GoT{T;E&(E6D(>ELLTFuuuVCoaxBpmws`AL_S{Qo~pO3REhLvNE5i z*I_O<(wG_A>6*g1j5iU?79k-|GFI(O*i)GMonqzhD;o-YRQPBcDJu_Irm%jcpAAh9 z(*Yy}vzHip$x(M&jb)o+Zs@OsuP|9XQTEkq*NV#eug<;Gd~m7A3cu+!^lLh{E)>~2 z_RNZ#?S}Ugg6nH~2hhzcCB_vnZ z$4tg->hb>OphI5+(1lx&ZN?)0=`@VlFZ>wNA>>TMr2d3aG3#}M+D!@>3o?rB4};oR zZq@1@BwRmJcLBltlLlLLTXl;=jg`8)Y}O426IkA0W))_wN&V65d?b+D_)mj>%;0&| zGwl1#y6N!CEN1xy`9s)^82S7lb8(QlGRRyOjBxp$7^h(7<`{nMbaBw{;Z>gGmnb4< zxYd3RqgOzE3O?)?kUbufFSMB*ZKk8m>~gvlupp7=cF+bbzyw}uWkcEujAQ{IBtWGw zE)jlSWeeJf?Vv<z;_UVk-!H;VDyj?7(0qUFnh1D21WxP5P|VSMquJ70>SLP zMg-)&6+~e2kP$d`6oKy`0^@-Xh``h#BXImE0>SLP#u|{d6^Otahm639qX@ii1T3s~ zpS&e1tKSE2P*A#xRipW!Y6OjbL8&xYF~$;czh(p#sA7tq0T);rny2TWwLUsfAG(4? zrRIYx6dzomo5gR~jVMfqI->X#2`X?`NMR7lDj6Z7s zWz@ZQ0U^8MB*kP*i%8x@GJ|9m$$2CtBxNKQkYL`RlSqysnL=_L$s0&cAUTNyt8K+h ztnN2Q=Rq-8;#(Lj@rCMrR~eQ~1`B-0c!96?X2!T{)>}5CKLXHc_^^}ky?IEw+U$-t z+X~0c3;I{&mz(^Lf(n<>Bk~l08 z10Ev76A}PN@UpK69@wrnx1-HqWw35QOBo0f&fQQKNgap75 zyzDE22ezwC?`YGV@VPy}?j`{Qek)K3jATJ8t)wt6iNg{x;2|G;6GwiG{^; zID(gbMexA>pZswsx9)GP~)cCF? zcuntTs99rhZ;Q_P{drO0x6%wpri-`T6Z~eF!louxTX7n&lZSo?TD(Ah4S;o@fqcp*`Jd{XP>%a=*wzKr2x)Sq(Y z)Zes)?BA7zY;nTR8iwUo48zX_n+^EWhJVTs+Y?ISu@yEGl&F1=!oDTgeiiI5@UuOc zcviUq?)@Rl^vp^fF=Dd(F}{-t_G0z6FHwBu>u0OA`>?Uh7SG$b8-PDH@Cl=DB8%IS z_`L4t-WPk|en>wC8BRFc1Ok(#C|z>7LoR=TllzLlk%#=ROJ+LZvrDEs;d3uT)ZC-f jd+LY+>jB8K6j8?mfvzeLElCQa2$JNCRP-U(;@9yX!V7Fb diff --git a/tests/__pycache__/test_generate.cpython-311-pytest-8.1.2.pyc b/tests/__pycache__/test_generate.cpython-311-pytest-8.1.2.pyc deleted file mode 100644 index dd2a3f0f98b589a99943ed22e60da28cf046f3ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12823 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 From 110e51d304c422b2e772c2c673538e493220e461 Mon Sep 17 00:00:00 2001 From: Simon Jones Date: Sun, 28 Apr 2024 21:08:45 -0400 Subject: [PATCH 8/8] chore: resolving merge conflict in gitignore --- .gitignore | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.gitignore b/.gitignore index ddcec49..7642a68 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,3 @@ .devenv/ -<<<<<<< HEAD -__pycache__/ -.venv/ -======= .venv/ __pycache__/ ->>>>>>> main