From 922fbc10ffebc40ab6f6b13058c8f00994654c50 Mon Sep 17 00:00:00 2001 From: Warsame Date: Sat, 27 Sep 2025 15:44:51 -0400 Subject: [PATCH] update --- requirments.txt | 4 +++- run | 13 +++++-------- src/acmecli/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 150 bytes src/acmecli/__pycache__/cli.cpython-312.pyc | Bin 0 -> 5296 bytes src/acmecli/__pycache__/reporter.cpython-312.pyc | Bin 0 -> 544 bytes src/acmecli/__pycache__/types.cpython-312.pyc | Bin 0 -> 4206 bytes .../metrics/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 692 bytes .../metrics/__pycache__/base.cpython-312.pyc | Bin 0 -> 381 bytes .../__pycache__/license_metric.cpython-312.pyc | Bin 0 -> 1308 bytes urls.txt | 2 ++ 10 files changed, 10 insertions(+), 9 deletions(-) create mode 100644 src/acmecli/__pycache__/__init__.cpython-312.pyc create mode 100644 src/acmecli/__pycache__/cli.cpython-312.pyc create mode 100644 src/acmecli/__pycache__/reporter.cpython-312.pyc create mode 100644 src/acmecli/__pycache__/types.cpython-312.pyc create mode 100644 src/acmecli/metrics/__pycache__/__init__.cpython-312.pyc create mode 100644 src/acmecli/metrics/__pycache__/base.cpython-312.pyc create mode 100644 src/acmecli/metrics/__pycache__/license_metric.cpython-312.pyc create mode 100644 urls.txt diff --git a/requirments.txt b/requirments.txt index 60321a7..6dcda41 100644 --- a/requirments.txt +++ b/requirments.txt @@ -1,4 +1,6 @@ +requests +pytest +pytest-cov flake8 mypy -pytest coverage \ No newline at end of file diff --git a/run b/run index 6cacf51..cf8406c 100644 --- a/run +++ b/run @@ -7,28 +7,25 @@ def do_install(): def do_test(): import re, subprocess, sys, os, pathlib - - # Always run from repo root os.chdir(pathlib.Path(__file__).parent.resolve()) - cmd = [sys.executable, "-m", "pytest", "tests", "--maxfail=1", "--disable-warnings", "--cov=acmecli", "--cov-report=term-missing"] r = subprocess.run(cmd, text=True, capture_output=True) out = (r.stdout or "") + (r.stderr or "") - - # Extract counts collected = re.search(r"collected\s+(\d+)", out) passed = re.search(r"(\d+)\s+passed", out) cov = re.search(r"TOTAL\s+.*?(\d+)%", out) - x = int(passed.group(1)) if passed else 0 y = int(collected.group(1)) if collected else 0 z = int(cov.group(1)) if cov else 0 - print(f"{x}/{y} test cases passed. {z}% line coverage achieved.") return 0 if r.returncode == 0 else 1 +def do_score(url_file): + sys.path.insert(0, "src") # make sure acmecli is importable + from acmecli.cli import main as cli_main + return cli_main(['run', url_file]) def main(): if len(sys.argv) < 2: @@ -46,4 +43,4 @@ def main(): sys.exit(1) if __name__ == "__main__": - main() + main() \ No newline at end of file diff --git a/src/acmecli/__pycache__/__init__.cpython-312.pyc b/src/acmecli/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b37694937a17b566430efc7df46f28451a18fee7 GIT binary patch literal 150 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 literal 0 HcmV?d00001 diff --git a/src/acmecli/__pycache__/types.cpython-312.pyc b/src/acmecli/__pycache__/types.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3fc03c202c5a2c46b4d07904bf8aac9eaff39819 GIT binary patch literal 4206 zcmb6cOKcm*b(cH4Tz>SUzLhPP{?%ns3r6bJu$#7VXjzggQ>i7#4l8H7-W^&*mZUnf zbV8vA7qS8Ork>*+}<@O<`{&zE~mMfn#JoyTY++uv6e<$>ZVuIecjwWwBN#h8k8%+o5Q zNGf_!uNXz65--LpX3?x9iV0Praaa2em?$OzBN9u+6so%Vr^XYoh)+zJR^0eq#WkPA zLe7)$qZHFpmH=6j8gA;-^b-<_iaq;U=>g5&SFH5ztJ?><{jccu$r%SgmZ9W{)}F0j zatDDsw2M0+xx>I6*~QH?Mss8T#(}w*NVv9dJD$zCFl_FY9Y1FX^F3DcYfjA*=B!Vd zebb{NvDjFl?gdZ~@wqZ`K{~(UmupqP2nuqV&@azln3@yu3+ETlFH9{8k_Q_2#`Nss z%++^AYUb+n^lV}J;`#iP(C6m!=jRr4sxV5dwo0o`xSJ5Rx29}g0{VeMm7?k@#n@Ga zYLvL@+rXtdU@?gyPm`Dd7(vX{i*agF8D8KS$ZP1ixJWMA>=yMGR;VMiI`f3VYjx&O zL8^9z3e&NDdaK471z|FJyUbyWxr8t+3&oZtl9pAexpfcmv}OIaZhLKs#(gIGEX%G| zYrc)X;hmyJ#)Zy(@CD>%?c=Ifvt3@u#Tm}U#t|Gqa1g-+0;~-} zE5rCKl5%@T5IfcZeSq-q0l23G14At`6l8{5WH`u-tn-ch`X_&!Y>{k`>Rr1O^kwcA zLK8UpBIKs-Lnyudef2}o`JbtY-jJ!;AUR#6E>qa3^SpF-1*j3kZYHmmO(Ej{rTwh0yRjuqd#OOF@IG8&9ew8%uzFVFYbffhLs zj7d)RXp0;TdayDMkG05H&_A@kuyK67_`E-hr$5v^c(_Fl2ggpd$cbQBTAh&6j_pk{ z5uPAi)t(cC)f}Jg_W^WIkgHP7jZv)xHQ+9EAugdh&<4;t(9m-LZFH_FkR)glGCvj8 zR;+m?!;OPxx?#d4)DvDMGZ0meGByNqVKC~~S=DLxCcp|G4L;l0jyzBr%44-4y$e@9 z;nXY1p&W-~vka@H=x3DIyxY|3+{@qr_8tu2 zsF>~eA`SOAwJTPs>`}ftzIPS7WoKYicO8XX&%XKoOVksz5lIB6;pKS%ca?ygewc5P(~t5kaylSqHddSD%p)o8Ib8x=EhvDWJ1>JMWdlX*6MlNS*Ak!h&I?X7%jYMl6(Mz_9Tf0 z{o86nnw@<{*~+*9kkNltClANqg#U5lLh2Pq(< z@bEZ*NBrsHV+eQQ+2ST?_bX^%PaNS-Nj}@}z^5C>-3>I<8{LI_7OGI()u{?Ig6QvSTARHZC>Eji(a;p49;~e|5b@ZUp4)#&G_L(f`DB_2`xYU|UmSV_Qh>^y=#1{qjcrYv2!l z)vLr(ZCy|Z7EKmVGbS@F+dtCZ z(0|Zl@BIU^FkU=)6TEpc$(j{3hw$Wi-uKP(ko*sVF6i~|)%odP1aN5%Zq@F=O|HRj zpg<7^fiOY_*LY2M*t6KgB00$Pg`LgKY zp2Z!$BKo+GVA>t{SK1E@&@A|v#4J_ph!rx4HL-L|ME*5joO>TiH70S9$p!W7Gn11{ z3X;Zb$Vnp9Lh7C*zaD0-k4QljEA~@5%;;18OG$WAOc&jKQ}u*A9FMY}DbEPKzvt6n zb+*jsz9V6cOHap{1yXx2bH~*UxAMJI6YJm64MVTy4;h@$G=i^m0>`urvqtABqFB3g zO4}$KPC1(gabm}|+44t<`46+T(@8{KB-i6>i>Wm1JB z_G4#%cytgd8HXemEapi#kFUZgO46i=q8It}w*6LQwB+o)e6FXNhgO?)56$~oa Yu3)Ev*A;A4@Unt873^NXuH4W?cP|&zh5!Hn literal 0 HcmV?d00001 diff --git a/src/acmecli/metrics/__pycache__/base.cpython-312.pyc b/src/acmecli/metrics/__pycache__/base.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..db346cbc95285635e3d23d4d984042c170a081af GIT binary patch literal 381 zcmX@j%ge<81V&~zGU9;rV-N=hn4pZ$Qb5LZh7^Vr#vF!R#wbQchIED~rWB?YhA8Gr zW=)otAcdNYw^)2Ki%XIjq1r$cGZcT;12U#Flz_y*APXde25J~qL-jH;R07TO(`35E z5#;Lb85|N6d5bNvpdd9b1!xUhZfZ$UW^yq|vBED)SF4!t#G>NF+*I{q1-Ja1l+>c) z7?;#CT}NkM*O=m>5-S~a8 zg$)Vh&_kq04~ZZso?3E=2k%}yd1(le@)=R^Vs0y2DD>3#W_G}M^1=MxpLyTo_x}9i zc`l&*@Z--bU+DmUkyD8|GKOt5wt)fDQV4+Q%t*CN5A@6kjLZzo%nGcm7Su93ur**N zvr;Fk2Xzf}_yAb#AuxLvtCIw-4!n+^yITfeS1Sz-`kLqFG-JXc~hf#;6TqtWkidVR5lutg3(jGsi(!Qn~!Iu-6a}iVZ zN}Q1~oJC_BI0PDlKxbNDFrAys;1)A^jal4oJJ^L8ILziY`t`QS9Q56O-FKDuaT4>6 z3oUyUE zT-pH1-x&5SW#&o7)z~T*?J(~4I(Rh7NIJQwW2Q1YIBDM!ljw*kis<><%6dS@rrb2j zc_;3NnUvHGZD>ZkPFa?WyMnKsJ~`kbIEMe_0>UO7c@u};^u9NJ;LU95&rY4*vW_Ot zeskfld3nEi`Jj1aPv398v&Z(Qt{qIix8)vJ=VW`|N%(|?Xl06oNU-Y81{3E6@SJ24`8k?Yb2_i1uAfSfDTLfnasBqDY@W>*d zTzMVgAv|lG*}OS0b?ddAj|PBh?|h+t>J{qgC!Y@~I&e&DZs+a*P(42PoK#tu%J~g( z4wbU<{wkM(j=ZGvAByEB?nRP|2IUldPI7$dTrYcmUtGczx