Coverage for tests/utils.py: 100%

53 statements  

« prev     ^ index     » next       coverage.py v7.16.0, created at 2026-11-09 00:25 +0000

1import base64 1abcdefg

2import json 1abcdefg

3import os 1abcdefg

4import sys 1abcdefg

5from collections.abc import Generator, Mapping, Sequence 1abcdefg

6from contextlib import contextmanager 1abcdefg

7from pathlib import Path 1abcdefg

8from textwrap import dedent 1abcdefg

9from typing import Any 1abcdefg

10 

11from rich.console import detect_legacy_windows 1abcdefg

12from typer import Typer 1abcdefg

13from typer.testing import CliRunner, Result 1abcdefg

14 

15 

16@contextmanager 1abcdefg

17def changing_dir(directory: str | Path) -> Generator[None, None, None]: 1abcdefg

18 initial_dir = os.getcwd() 2o zcAcp q BcCcDcr s EcFcGcHcIcJcKcLct McNcu VgWgXgYgZg0g1g2g3g4g5g6g7g8g9g;d=d!g?d#g$g%g'g(g)g*g+g,g-g.g/gh :g;g@d[d=g]d^d?g@g[g]g_d`d{d|d^g_g`g{g|g}d~daebecedeeefege}g~gahbhchdhv ehfhghhhheieihjhkhjekeOcPclhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhQcRcScw x y z A B C D E F G H I J K L M N O PhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hP TcUcQ R VcWcXcS T YcZc0c1c2c3c4c5cU 6c7cV $h%h'h(h)h*h+h,h-h.h/h:h;h=h?hleme@hne[h]h^h_h`h{h|h}h~haibicii dieioepefiqeregihiiijiseteuevekiliminioiwexeyezeAeBeCeDeEepiqirisitiuiW viwixiyiFeGeziAiBiHeIe8c9cCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i!c#c$cX Y Z 0 1 2 3 4 5 6 7 8 9 ! # $ % ' ( 6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i) %c'c* + (c)c*c, - +c,c-c.c/c:c;c=c. ?c@c/ ]i^i_i`i{i|i}i~iajbjcjdjejfjgjJeKehjLeijjjkjljmjnjojpjqjrjsjtjj ujvjMeNewjOePexjyjzjAjQeReSeTeBjCjDjEjFjUeVeWeXeYeZe0e1e2eGjHjIjJjKjLj: MjNjOjPj3e4eQjRjSj5e6e[c]cTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j^c_c`c; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfb:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkekfkgkhkikgb{c|chbib}c~cadjbkbbdcdddedfdgdhdidlbjdkdmbjkkklkmknkokpkqkrksktkukvkwkxk7e8eyk9ezkAkBkCkDkEkFkGkHkIkJkKkk LkMk!e#eNk$e%eOkPkQkRk'e(e)e*eSkTkUkVkWk+e,e-e.e/e:e;e=e?eXkYkZk0k1k2knb3k4k5k6k@e[e7k8k9k]e^eldmd!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblclndodpdobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbdlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzlHbqdrdIbJbsdtdudKbLbvdwdxdydzdAdBdCdMbDdEdNbAlBlClDlElFlGlHlIlJlKlLlMlNlOl_e`ePl{eQlRlSlTlUlVlWlXlYlZl0l1ll 2l3l|e}e4l~eaf5l6l7l8lbfcfdfef9l!l#l$l%lffgfhfifjfkflfmfnf'l(l)l*l+l,lOb-l.l/l:lofpf;l=l?lqfrfFdGd@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmHdIdJdPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7bumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQm8bKdLd9b!bMdNdOd#b$bPdQdRdSdTdUdVdWd%bXdYd'bRmSmTmUmVmWmXmYmZm0m1m2m3m4m5msftf6muf7m8m9m!m#m$m%m'm(m)m*m+mm ,m-mvfwf.mxfyf/m:m;m=mzfAfBfCf?m@m[m]m^mDfEfFfGfHfIfJfKfLf_m`m{m|m}m~m(banbncndnMfNfenfngnOfPfZd0dhninjnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnEnFnGnHnInJnKn1d2d3d)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|bLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n}b4d5d~bac6d7d8dbccc9d!d#d$d%d'd(d)ddc*d+dec8n9n!n#n$n%n'n(n)n*n+n,n-n.n/nQfRf:nSf;n=n?n@n[n]n^n_n`n{n|n}nn ~naoTfUfboVfWfcodoeofoXfYfZf0fgohoiojoko1f2f3f4f5f6f7f8f9flomonooopoqofcrosotouo!f#fvowoxo$f%f,d-dyozoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o.d/d:dgchcicjckclcmcncocpcqcrcsctcucvcwcxcyc2o3o4o5o6o7o8o9o!o#o$o%o'o(o)o*o+o,o-o.o/o:o;o

19 os.chdir(directory) 2o zcAcp q BcCcDcr s EcFcGcHcIcJcKcLct McNcu VgWgXgYgZg0g1g2g3g4g5g6g7g8g9g;d=d!g?d#g$g%g'g(g)g*g+g,g-g.g/gh :g;g@d[d=g]d^d?g@g[g]g_d`d{d|d^g_g`g{g|g}d~daebecedeeefege}g~gahbhchdhv ehfhghhhheieihjhkhjekeOcPclhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhQcRcScw x y z A B C D E F G H I J K L M N O PhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hP TcUcQ R VcWcXcS T YcZc0c1c2c3c4c5cU 6c7cV $h%h'h(h)h*h+h,h-h.h/h:h;h=h?hleme@hne[h]h^h_h`h{h|h}h~haibicii dieioepefiqeregihiiijiseteuevekiliminioiwexeyezeAeBeCeDeEepiqirisitiuiW viwixiyiFeGeziAiBiHeIe8c9cCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i!c#c$cX Y Z 0 1 2 3 4 5 6 7 8 9 ! # $ % ' ( 6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i) %c'c* + (c)c*c, - +c,c-c.c/c:c;c=c. ?c@c/ ]i^i_i`i{i|i}i~iajbjcjdjejfjgjJeKehjLeijjjkjljmjnjojpjqjrjsjtjj ujvjMeNewjOePexjyjzjAjQeReSeTeBjCjDjEjFjUeVeWeXeYeZe0e1e2eGjHjIjJjKjLj: MjNjOjPj3e4eQjRjSj5e6e[c]cTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j^c_c`c; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfb:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkekfkgkhkikgb{c|chbib}c~cadjbkbbdcdddedfdgdhdidlbjdkdmbjkkklkmknkokpkqkrksktkukvkwkxk7e8eyk9ezkAkBkCkDkEkFkGkHkIkJkKkk LkMk!e#eNk$e%eOkPkQkRk'e(e)e*eSkTkUkVkWk+e,e-e.e/e:e;e=e?eXkYkZk0k1k2knb3k4k5k6k@e[e7k8k9k]e^eldmd!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblclndodpdobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbdlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzlHbqdrdIbJbsdtdudKbLbvdwdxdydzdAdBdCdMbDdEdNbAlBlClDlElFlGlHlIlJlKlLlMlNlOl_e`ePl{eQlRlSlTlUlVlWlXlYlZl0l1ll 2l3l|e}e4l~eaf5l6l7l8lbfcfdfef9l!l#l$l%lffgfhfifjfkflfmfnf'l(l)l*l+l,lOb-l.l/l:lofpf;l=l?lqfrfFdGd@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmHdIdJdPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7bumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQm8bKdLd9b!bMdNdOd#b$bPdQdRdSdTdUdVdWd%bXdYd'bRmSmTmUmVmWmXmYmZm0m1m2m3m4m5msftf6muf7m8m9m!m#m$m%m'm(m)m*m+mm ,m-mvfwf.mxfyf/m:m;m=mzfAfBfCf?m@m[m]m^mDfEfFfGfHfIfJfKfLf_m`m{m|m}m~m(banbncndnMfNfenfngnOfPfZd0dhninjnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnEnFnGnHnInJnKn1d2d3d)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|bLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n}b4d5d~bac6d7d8dbccc9d!d#d$d%d'd(d)ddc*d+dec8n9n!n#n$n%n'n(n)n*n+n,n-n.n/nQfRf:nSf;n=n?n@n[n]n^n_n`n{n|n}nn ~naoTfUfboVfWfcodoeofoXfYfZf0fgohoiojoko1f2f3f4f5f6f7f8f9flomonooopoqofcrosotouo!f#fvowoxo$f%f,d-dyozoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o.d/d:dgchcicjckclcmcncocpcqcrcsctcucvcwcxcyc2o3o4o5o6o7o8o9o!o#o$o%o'o(o)o*o+o,o-o.o/o:o;o

20 try: 2o zcAcp q BcCcDcr s EcFcGcHcIcJcKcLct McNcu VgWgXgYgZg0g1g2g3g4g5g6g7g8g9g;d=d!g?d#g$g%g'g(g)g*g+g,g-g.g/gh :g;g@d[d=g]d^d?g@g[g]g_d`d{d|d^g_g`g{g|g}d~daebecedeeefege}g~gahbhchdhv ehfhghhhheieihjhkhjekeOcPclhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhQcRcScw x y z A B C D E F G H I J K L M N O PhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hP TcUcQ R VcWcXcS T YcZc0c1c2c3c4c5cU 6c7cV $h%h'h(h)h*h+h,h-h.h/h:h;h=h?hleme@hne[h]h^h_h`h{h|h}h~haibicii dieioepefiqeregihiiijiseteuevekiliminioiwexeyezeAeBeCeDeEepiqirisitiuiW viwixiyiFeGeziAiBiHeIe8c9cCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i!c#c$cX Y Z 0 1 2 3 4 5 6 7 8 9 ! # $ % ' ( 6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i) %c'c* + (c)c*c, - +c,c-c.c/c:c;c=c. ?c@c/ ]i^i_i`i{i|i}i~iajbjcjdjejfjgjJeKehjLeijjjkjljmjnjojpjqjrjsjtjj ujvjMeNewjOePexjyjzjAjQeReSeTeBjCjDjEjFjUeVeWeXeYeZe0e1e2eGjHjIjJjKjLj: MjNjOjPj3e4eQjRjSj5e6e[c]cTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j^c_c`c; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfb:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkekfkgkhkikgb{c|chbib}c~cadjbkbbdcdddedfdgdhdidlbjdkdmbjkkklkmknkokpkqkrksktkukvkwkxk7e8eyk9ezkAkBkCkDkEkFkGkHkIkJkKkk LkMk!e#eNk$e%eOkPkQkRk'e(e)e*eSkTkUkVkWk+e,e-e.e/e:e;e=e?eXkYkZk0k1k2knb3k4k5k6k@e[e7k8k9k]e^eldmd!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblclndodpdobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbdlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzlHbqdrdIbJbsdtdudKbLbvdwdxdydzdAdBdCdMbDdEdNbAlBlClDlElFlGlHlIlJlKlLlMlNlOl_e`ePl{eQlRlSlTlUlVlWlXlYlZl0l1ll 2l3l|e}e4l~eaf5l6l7l8lbfcfdfef9l!l#l$l%lffgfhfifjfkflfmfnf'l(l)l*l+l,lOb-l.l/l:lofpf;l=l?lqfrfFdGd@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmHdIdJdPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7bumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQm8bKdLd9b!bMdNdOd#b$bPdQdRdSdTdUdVdWd%bXdYd'bRmSmTmUmVmWmXmYmZm0m1m2m3m4m5msftf6muf7m8m9m!m#m$m%m'm(m)m*m+mm ,m-mvfwf.mxfyf/m:m;m=mzfAfBfCf?m@m[m]m^mDfEfFfGfHfIfJfKfLf_m`m{m|m}m~m(banbncndnMfNfenfngnOfPfZd0dhninjnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnEnFnGnHnInJnKn1d2d3d)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|bLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n}b4d5d~bac6d7d8dbccc9d!d#d$d%d'd(d)ddc*d+dec8n9n!n#n$n%n'n(n)n*n+n,n-n.n/nQfRf:nSf;n=n?n@n[n]n^n_n`n{n|n}nn ~naoTfUfboVfWfcodoeofoXfYfZf0fgohoiojoko1f2f3f4f5f6f7f8f9flomonooopoqofcrosotouo!f#fvowoxo$f%f,d-dyozoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o.d/d:dgchcicjckclcmcncocpcqcrcsctcucvcwcxcyc2o3o4o5o6o7o8o9o!o#o$o%o'o(o)o*o+o,o-o.o/o:o;o

21 yield 2o zcAcp q BcCcDcr s EcFcGcHcIcJcKcLct McNcu VgWgXgYgZg0g1g2g3g4g5g6g7g8g9g;d=d!g?d#g$g%g'g(g)g*g+g,g-g.g/gh :g;g@d[d=g]d^d?g@g[g]g_d`d{d|d^g_g`g{g|g}d~daebecedeeefege}g~gahbhchdhv ehfhghhhheieihjhkhjekeOcPclhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhQcRcScw x y z A B C D E F G H I J K L M N O PhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hP TcUcQ R VcWcXcS T YcZc0c1c2c3c4c5cU 6c7cV $h%h'h(h)h*h+h,h-h.h/h:h;h=h?hleme@hne[h]h^h_h`h{h|h}h~haibicii dieioepefiqeregihiiijiseteuevekiliminioiwexeyezeAeBeCeDeEepiqirisitiuiW viwixiyiFeGeziAiBiHeIe8c9cCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i!c#c$cX Y Z 0 1 2 3 4 5 6 7 8 9 ! # $ % ' ( 6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i) %c'c* + (c)c*c, - +c,c-c.c/c:c;c=c. ?c@c/ ]i^i_i`i{i|i}i~iajbjcjdjejfjgjJeKehjLeijjjkjljmjnjojpjqjrjsjtjj ujvjMeNewjOePexjyjzjAjQeReSeTeBjCjDjEjFjUeVeWeXeYeZe0e1e2eGjHjIjJjKjLj: MjNjOjPj3e4eQjRjSj5e6e[c]cTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j^c_c`c; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfb:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkekfkgkhkikgb{c|chbib}c~cadjbkbbdcdddedfdgdhdidlbjdkdmbjkkklkmknkokpkqkrksktkukvkwkxk7e8eyk9ezkAkBkCkDkEkFkGkHkIkJkKkk LkMk!e#eNk$e%eOkPkQkRk'e(e)e*eSkTkUkVkWk+e,e-e.e/e:e;e=e?eXkYkZk0k1k2knb3k4k5k6k@e[e7k8k9k]e^eldmd!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblclndodpdobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbdlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzlHbqdrdIbJbsdtdudKbLbvdwdxdydzdAdBdCdMbDdEdNbAlBlClDlElFlGlHlIlJlKlLlMlNlOl_e`ePl{eQlRlSlTlUlVlWlXlYlZl0l1ll 2l3l|e}e4l~eaf5l6l7l8lbfcfdfef9l!l#l$l%lffgfhfifjfkflfmfnf'l(l)l*l+l,lOb-l.l/l:lofpf;l=l?lqfrfFdGd@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmHdIdJdPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7bumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQm8bKdLd9b!bMdNdOd#b$bPdQdRdSdTdUdVdWd%bXdYd'bRmSmTmUmVmWmXmYmZm0m1m2m3m4m5msftf6muf7m8m9m!m#m$m%m'm(m)m*m+mm ,m-mvfwf.mxfyf/m:m;m=mzfAfBfCf?m@m[m]m^mDfEfFfGfHfIfJfKfLf_m`m{m|m}m~m(banbncndnMfNfenfngnOfPfZd0dhninjnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnEnFnGnHnInJnKn1d2d3d)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|bLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n}b4d5d~bac6d7d8dbccc9d!d#d$d%d'd(d)ddc*d+dec8n9n!n#n$n%n'n(n)n*n+n,n-n.n/nQfRf:nSf;n=n?n@n[n]n^n_n`n{n|n}nn ~naoTfUfboVfWfcodoeofoXfYfZf0fgohoiojoko1f2f3f4f5f6f7f8f9flomonooopoqofcrosotouo!f#fvowoxo$f%f,d-dyozoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o.d/d:dgchcicjckclcmcncocpcqcrcsctcucvcwcxcyc2o3o4o5o6o7o8o9o!o#o$o%o'o(o)o*o+o,o-o.o/o:o;o

22 finally: 

23 os.chdir(initial_dir) 2o zcAcp q BcCcDcr s EcFcGcHcIcJcKcLct McNcu VgWgXgYgZg0g1g2g3g4g5g6g7g8g9g;d=d!g?d#g$g%g'g(g)g*g+g,g-g.g/gh :g;g@d[d=g]d^d?g@g[g]g_d`d{d|d^g_g`g{g|g}d~daebecedeeefege}g~gahbhchdhv ehfhghhhheieihjhkhjekeOcPclhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhQcRcScw x y z A B C D E F G H I J K L M N O PhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hP TcUcQ R VcWcXcS T YcZc0c1c2c3c4c5cU 6c7cV $h%h'h(h)h*h+h,h-h.h/h:h;h=h?hleme@hne[h]h^h_h`h{h|h}h~haibicii dieioepefiqeregihiiijiseteuevekiliminioiwexeyezeAeBeCeDeEepiqirisitiuiW viwixiyiFeGeziAiBiHeIe8c9cCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i!c#c$cX Y Z 0 1 2 3 4 5 6 7 8 9 ! # $ % ' ( 6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i) %c'c* + (c)c*c, - +c,c-c.c/c:c;c=c. ?c@c/ ]i^i_i`i{i|i}i~iajbjcjdjejfjgjJeKehjLeijjjkjljmjnjojpjqjrjsjtjj ujvjMeNewjOePexjyjzjAjQeReSeTeBjCjDjEjFjUeVeWeXeYeZe0e1e2eGjHjIjJjKjLj: MjNjOjPj3e4eQjRjSj5e6e[c]cTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j^c_c`c; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfb:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkekfkgkhkikgb{c|chbib}c~cadjbkbbdcdddedfdgdhdidlbjdkdmbjkkklkmknkokpkqkrksktkukvkwkxk7e8eyk9ezkAkBkCkDkEkFkGkHkIkJkKkk LkMk!e#eNk$e%eOkPkQkRk'e(e)e*eSkTkUkVkWk+e,e-e.e/e:e;e=e?eXkYkZk0k1k2knb3k4k5k6k@e[e7k8k9k]e^eldmd!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblclndodpdobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbdlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzlHbqdrdIbJbsdtdudKbLbvdwdxdydzdAdBdCdMbDdEdNbAlBlClDlElFlGlHlIlJlKlLlMlNlOl_e`ePl{eQlRlSlTlUlVlWlXlYlZl0l1ll 2l3l|e}e4l~eaf5l6l7l8lbfcfdfef9l!l#l$l%lffgfhfifjfkflfmfnf'l(l)l*l+l,lOb-l.l/l:lofpf;l=l?lqfrfFdGd@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmHdIdJdPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7bumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQm8bKdLd9b!bMdNdOd#b$bPdQdRdSdTdUdVdWd%bXdYd'bRmSmTmUmVmWmXmYmZm0m1m2m3m4m5msftf6muf7m8m9m!m#m$m%m'm(m)m*m+mm ,m-mvfwf.mxfyf/m:m;m=mzfAfBfCf?m@m[m]m^mDfEfFfGfHfIfJfKfLf_m`m{m|m}m~m(banbncndnMfNfenfngnOfPfZd0dhninjnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnEnFnGnHnInJnKn1d2d3d)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|bLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n}b4d5d~bac6d7d8dbccc9d!d#d$d%d'd(d)ddc*d+dec8n9n!n#n$n%n'n(n)n*n+n,n-n.n/nQfRf:nSf;n=n?n@n[n]n^n_n`n{n|n}nn ~naoTfUfboVfWfcodoeofoXfYfZf0fgohoiojoko1f2f3f4f5f6f7f8f9flomonooopoqofcrosotouo!f#fvowoxo$f%f,d-dyozoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o.d/d:dgchcicjckclcmcncocpcqcrcsctcucvcwcxcyc2o3o4o5o6o7o8o9o!o#o$o%o'o(o)o*o+o,o-o.o/o:o;o

24 

25 

26def build_logs_response(*logs: dict[str, Any]) -> str: 1abcdefg

27 """Helper to create NDJSON build logs response.""" 

28 return "\n".join(json.dumps(log) for log in logs) 2xDyDzDADBDCDDDEDFDGDHD;d=d?dh @d[d]d^d'f_d`d{d|d}d~daebecedeeefegeheiejeke(f)f*f^u+f_u,f`u-f.f{u|u/f}u:fIDJDKDLDMDNDODPDQDRDSDlemenei oepeqere;fseteuevewexeyezeAeBeCeDeEeFeGeHeIe=f?f@f~u[fav]fbv^f_fcvdv`fev{fTDUDVDWDXDYDZD0D1D2D3DJeKeLej MeNeOePe|fQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e}f~fagfvbggvcghvdgegivjvfgkvgg4D5D6D7D8D9D!D#D$D%D'D7e8e9ek !e#e$e%ehg'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^eigjgkglvlgmvmgnvngogovpvpgqvqg(D)D*D+D,D-D.D/D:D;D=D_e`e{el |e}e~eafrgbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsgtgugrvvgsvwgtvxgyguvvvzgwvAg?D@D[D]D^D_D`D{D|D}D~Dsftfufm vfwfxfyfBgzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfCgDgEgxvFgyvGgzvHgIgAvBvJgCvKgaEbEcEdEeEfEgEhEiEjEkEQfRfSfn TfUfVfWfLgXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%fMgNgOgDvPgEvQgFvRgSgGvHvTgIvUg

29 

30 

31class _SnapshotResult(Result): 1abcdefg

32 @property 1abcdefg

33 def output(self) -> str: 1abcdefg

34 output = dedent(super().output.replace("\u200b", "")).strip() 2=o?o@o[o]o^o_o`o{o|o}oo ~oapbpcpdpepfpgpp q hpr s ipjpkplpmpnpopppt qprpsptpupvpwpu h 'f(fxpypzpAp)f*fBp+f,fCpDp-fEpFp.f/f:fGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpw Wpx y z A B C XpYpZp0pD 1pE 2pF G H I J K L M 3p4pN O 5p6p7p8p9p!p#p$p%p'p(p)pP *p+p,p-p.p/p:p;pQ R =pS T ?p@p[p]p^p_p`p{pU |p}p~paqbqcqdqV i ;f=feqfqgqhq?f@fiq[f]fjqkq^flqmq_f`f{fnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqX DqY Z 0 1 2 3 EqFqGqHq4 Iq5 Jq6 7 8 9 ! # $ % KqLq' ( MqNqOqPqQqRqSqTqUqVqWqXq) YqZq0q1q2q3q4q5q* + 6q, - 7q8q9q!q#q$q%q'q. (q)q*q+q,q-q.q/ j |f}f/q:q;q=q~fag?qbgcg@q[qdg]q^qegfggg_q`q{q|q}q~qarbrcrdrerfrgrhrirjr; kr= ? @ [ ] ^ lrmrnror_ pr` qr{ | } ~ abbbcbdbrrsrebfbtrurvrwrxryrzrArBrCrDrErgbFrGrHrIrJrKrLrMrhbibNrjbkbOrPrQrRrSrTrUrVrlbWrXrYrZr0r1r2rmbk hgig3r4r5r6rjgkg7rlgmg8r9rng!r#rogpgqg$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@rob[rpbqbrbsbtbub]r^r_r`rvb{rwb|rxbybzbAbBbCbDbEb}r~rFbGbasbscsdsesfsgshsisjskslsHbmsnsospsqsrssstsIbJbusKbLbvswsxsyszsAsBsCsMbDsEsFsGsHsIsJsNbl rgsgKsLsMsNstgugOsvgwgPsQsxgRsSsygzgAgTsUsVsWsXsYsZs0s1s2s3s4s5s6s7s8sPb9sQbRbSbTbUbVb!s#s$s%sWb'sXb(sYbZb0b1b2b3b4b5b)s*s6b7b+s,s-s.s/s:s;s=s?s@s[s]s8b^s_s`s{s|s}s~sat9b!bbt#b$bctdtetftgthtitjt%bktltmtntotptqt'bm BgCgrtstttutDgEgvtFgGgwtxtHgytztIgJgKgAtBtCtDtEtFtGtHtItJtKtLtMtNtOtPt)bQt*b+b,b-b.b/bRtStTtUt:bVt;bWt=b?b@b[b]b^b_b`bXtYt{b|bZt0t1t2t3t4t5t6t7t8t9t!t}b#t$t%t't(t)t*t+t~bac,tbccc-t.t/t:t;t=t?t@tdc[t]t^t_t`t{t|tecn LgMg}t~taubuNgOgcuPgQgdueuRgfuguSgTgUghuiujukulumunuoupuqurusutuuuvuwugcxuhcicjckclcmcyuzuAuBuncCuocDupcqcrcsctcucvcwcEuFuxcycGu

35 return "\n".join(line.rstrip() for line in output.splitlines()) 2=o?o@o[o]o^o_o`o{o|o}oo ~oapbpcpdpepfpgpp q hpr s ipjpkplpmpnpopppt qprpsptpupvpwpu h 'f(fxpypzpAp)f*fBp+f,fCpDp-fEpFp.f/f:fGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpw Wpx y z A B C XpYpZp0pD 1pE 2pF G H I J K L M 3p4pN O 5p6p7p8p9p!p#p$p%p'p(p)pP *p+p,p-p.p/p:p;pQ R =pS T ?p@p[p]p^p_p`p{pU |p}p~paqbqcqdqV i ;f=feqfqgqhq?f@fiq[f]fjqkq^flqmq_f`f{fnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqX DqY Z 0 1 2 3 EqFqGqHq4 Iq5 Jq6 7 8 9 ! # $ % KqLq' ( MqNqOqPqQqRqSqTqUqVqWqXq) YqZq0q1q2q3q4q5q* + 6q, - 7q8q9q!q#q$q%q'q. (q)q*q+q,q-q.q/ j |f}f/q:q;q=q~fag?qbgcg@q[qdg]q^qegfggg_q`q{q|q}q~qarbrcrdrerfrgrhrirjr; kr= ? @ [ ] ^ lrmrnror_ pr` qr{ | } ~ abbbcbdbrrsrebfbtrurvrwrxryrzrArBrCrDrErgbFrGrHrIrJrKrLrMrhbibNrjbkbOrPrQrRrSrTrUrVrlbWrXrYrZr0r1r2rmbk hgig3r4r5r6rjgkg7rlgmg8r9rng!r#rogpgqg$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@rob[rpbqbrbsbtbub]r^r_r`rvb{rwb|rxbybzbAbBbCbDbEb}r~rFbGbasbscsdsesfsgshsisjskslsHbmsnsospsqsrssstsIbJbusKbLbvswsxsyszsAsBsCsMbDsEsFsGsHsIsJsNbl rgsgKsLsMsNstgugOsvgwgPsQsxgRsSsygzgAgTsUsVsWsXsYsZs0s1s2s3s4s5s6s7s8sPb9sQbRbSbTbUbVb!s#s$s%sWb'sXb(sYbZb0b1b2b3b4b5b)s*s6b7b+s,s-s.s/s:s;s=s?s@s[s]s8b^s_s`s{s|s}s~sat9b!bbt#b$bctdtetftgthtitjt%bktltmtntotptqt'bm BgCgrtstttutDgEgvtFgGgwtxtHgytztIgJgKgAtBtCtDtEtFtGtHtItJtKtLtMtNtOtPt)bQt*b+b,b-b.b/bRtStTtUt:bVt;bWt=b?b@b[b]b^b_b`bXtYt{b|bZt0t1t2t3t4t5t6t7t8t9t!t}b#t$t%t't(t)t*t+t~bac,tbccc-t.t/t:t;t=t?t@tdc[t]t^t_t`t{t|tecn LgMg}t~taubuNgOgcuPgQgdueuRgfuguSgTgUghuiujukulumunuoupuqurusutuuuvuwugcxuhcicjckclcmcyuzuAuBuncCuocDupcqcrcsctcucvcwcEuFuxcycGu

36 

37 

38class SnapshotCliRunner(CliRunner): 1abcdefg

39 """Return normalized CLI output suitable for inline snapshots.""" 

40 

41 terminal_width = 80 1abcdefg

42 

43 def invoke( 1abcdefg

44 self, 

45 app: Typer, 

46 args: str | Sequence[str] | None = None, 

47 input: bytes | str | None = None, 

48 env: Mapping[str, str | None] | None = None, 

49 catch_exceptions: bool = True, 

50 color: bool = False, 

51 **extra: Any, 

52 ) -> _SnapshotResult: 

53 env = { 2JvKvLvMv=oNvOvPv?o@oQv[oRv]o^o_o`oSvTv{o|o}oUvVvWvXvo ~oapYvZv0v1vbpcp2v3v4vdpep5vfpzcgpAc6v7vp q BcCc8v9vDchpr s Ecip!v#v$v%vjpkpFclpGcmpHc'v(vIcnpopJc)v*vKc+vLc,v-v.v/vppt :vMcqprpNc;v=v?v@v[vsptpup]vvpwp^v_v`v{vu h 'f(fxp|vypzpAp}v)f*f~vBp^u+f_u,fCpOcawDpbwcw`u-fPcdwEpFpewfw.fgw{u|u/f}u:fGpHphwIpJpiwjwkwKpLpMpNplwOpmwPpQpRpnwowpwqwQcSprwRcswtwuwScvwTpUpwwxwywzwAwBwCwDwEwVpw Wpx y z A B C FwGwXpYpHwIwZp0pD JwKwLw1pE 2pF G H I J K L MwNwOwPwQwRwSwM 3p4pN O Tw5pUwVwWwXw6pYwZw0w7p8p1w9p2w!p#p$p%p3w4w'p(p)p5w6w7w8wP *p+p9w!w#w$w,p-p%w'w(w.p/p)w:pTc;pUc*w+wQ R VcWc,w-wXc=pS T Yc?p.w/w:w;w@p[pZc]p0c^p1c=w?w2c_p`p3c@w[w4c]w5c^w_w`w{w{pU |w6c|p}p7c}w~waxbxcx~paqbqdxcqdqexfxgxhxV i ;f=feqixfqgqhqjx?f@fkxiq~u[fav]fjq8clxkqmxnxbv^f9coxlqmqpxqx_frxcvdv`fev{fnqoqsxpqqqtxuxvxrqsqtquqwxvqxxwqxqyqyxzxAxBx!czqCx#cDxExFx$cGxAqBqHxIxJxKxLxMxNxOxPxCqX DqY Z 0 1 2 3 QxRxEqFqSxTxGqHq4 UxVxWxIq5 Jq6 7 8 9 ! # $ XxYxZx0x1x2x3x% KqLq' ( 4xMq5x6x7x8xNq9x!x#xOqPq$xQq%xRqSqTqUq'x(xVqWqXq)x*x+x,x) YqZq-x.x/x:x0q1q;x=x?x2q3q@x4q%c5q'c[x]x* + (c)c^x_x*c6q, - +c7q`x{x|x}x8q9q,c!q-c#q.c~xay/c$q%q:cbycy;cdy=ceyfygyhy'q. iy?c(q)q@cjykylymyny*q+q,qoy-q.qpyqyrysy/ j |f}f/qty:q;q=quy~fagvy?qfvbggvcg@q[cwy[qxyyyhvdg]czy]q^qAyByegCyivjvfgkvgg_q`qDy{q|qEyFyGy}q~qarbrHycrIydrerfrJyKyLyMy^cgrNy_cOyPyQy`cRyhrirSyTyUyVyWyXyYyZy0yjr; kr= ? @ [ ] ^ 1y2ylrmr3y4ynror_ 5y6y7ypr` qr{ | } ~ abbbcb8y9y!y#y$y%y'ydbrrsrebfb(ytr)y*y+y,yur-y.y/yvrwr:yxr;yyrzrArBr=y?yCrDrEr@y[y]y^ygbFrGr_y`y{y|yHrIr}y~yazJrKrbzLr{cMr|cczdzhbib}c~cezfzadNrjbkbbdOrgzhzizjzPrQrcdRrddSredkzlzfdTrUrgdmznzhdozidpzqzrzszVrlbtzjdWrXrkduzvzwzxzyzYrZr0rzz1r2rAzBzCzDzmbk hgig3rEz4r5r6rFzjgkgGz7rlvlgmvmg8rldHz9rIzJznvngmdKz!r#rLzMzogNzovpvpgqvqg$r%rOz'r(rPzQzRz)r*r+r,rSz-rTz.r/r:rUzVzWzXznd;rYzodZz0z1zpd2z=r?r3z4z5z6z7z8z9z!z#z@rob[rpbqbrbsbtbub$z%z]r^r'z(z_r`rvb)z*z+z{rwb|rxbybzbAbBbCbDb,z-z.z/z:z;z=zEb}r~rFbGb?zas@z[z]z^zbs_z`z{zcsds|zes}zfsgshsis~zaAjskslsbAcAdAeAHbmsnsfAgAhAiAospsjAkAlAqsrsmAssqdtsrdnAoAIbJbsdtdpAqAudusKbLbvdvsrAsAtAuAwsxswdysxdzsydvAwAzdAsBsAdxAyABdzACdAABACADACsMbEADdDsEsEdFAGAHAIAJAFsGsHsKAIsJsLAMANAOANbl rgsgKsPALsMsNsQAtgugRAOsrvvgsvwgPsFdSAQsTAUAtvxgGdVARsSsWAXAygYAuvvvzgwvAgTsUsZAVsWs0A1A2AXsYsZs0s3A1s4A2s3s4s5A6A7A8AHd5s9AId!A#A$AJd%A6s7s'A(A)A*A+A,A-A.A/A8sPb9sQbRbSbTbUbVb:A;A!s#s=A?A$s%sWb@A[A]A'sXb(sYbZb0b1b2b3b4b^A_A`A{A|A}A~A5b)s*s6b7baB+sbBcBdBeB,sfBgBhB-s.siB/sjB:s;s=s?skBlB@s[s]smBnBoBpB8b^s_sqBrBsBtB`s{suBvBwB|s}sxB~sKdatLdyBzB9b!bMdNdABBBOdbt#b$bPdctCBDBEBFBdtetQdftRdgtSdGBHBTdhtitUdIBJBVdKBWdLBMBNBOBjt%bPBXdktltYdQBRBSBTBUBmtntotVBptqtWBXBYBZB'bm BgCgrt0Bstttut1BDgEg2BvtxvFgyvGgwtZd3Bxt4B5BzvHg0d6Bytzt7B8BIg9BAvBvJgCvKgAtBt!BCtDt#B$B%BEtFtGtHt'BIt(BJtKtLt)B*B+B,B1dMt-B2d.B/B:B3d;BNtOt=B?B@B[B]B^B_B`B{BPt)bQt*b+b,b-b.b/b|B}BRtSt~BaCTtUt:bbCcCdCVt;bWt=b?b@b[b]b^b_beCfCgChCiCjCkC`bXtYt{b|blCZtmCnCoCpC0tqCrCsC1t2ttC3tuC4t5t6t7tvCwC8t9t!txCyCzCAC}b#t$tBCCCDCEC%t'tFCGCHC(t)tIC*t4d+t5dJCKC~bac6d7dLCMC8d,tbccc9d-tNCOCPCQC.t/t!d:t#d;t$dRCSC%d=t?t'dTCUC(dVC)dWCXCYCZC@tdc0C*d[t]t+d1C2C3C4C5C^t_t`t6C{t|t7C8C9C!Cecn LgMg}t#C~taubu$CNgOg%CcuDvPgEvQgdu,d'Ceu(C)CFvRg-d*Cfugu+C,CSg-CGvHvTgIvUghuiu.Cjuku/C:C;Clumunuou=Cpu?Cqurusu@C[C]C^C.dtu_C/d`C{C|C:d}Cuuvu~CaDbDcDdDeDfDgDhDwugcxuhcicjckclcmciDjDyuzukDlDAuBuncmDnDoDCuocDupcqcrcsctcucvcpDqDrDsDtDuDvDwcEuFuxcycwDGu

54 **(env or {}), 

55 # Rich reserves the final column on legacy Windows terminals. 

56 "COLUMNS": str(self.terminal_width + int(detect_legacy_windows())), 

57 } 

58 result = super().invoke( 2JvKvLvMv=oNvOvPv?o@oQv[oRv]o^o_o`oSvTv{o|o}oUvVvWvXvo ~oapYvZv0v1vbpcp2v3v4vdpep5vfpzcgpAc6v7vp q BcCc8v9vDchpr s Ecip!v#v$v%vjpkpFclpGcmpHc'v(vIcnpopJc)v*vKc+vLc,v-v.v/vppt :vMcqprpNc;v=v?v@v[vsptpup]vvpwp^v_v`v{vu h 'f(fxp|vypzpAp}v)f*f~vBp^u+f_u,fCpOcawDpbwcw`u-fPcdwEpFpewfw.fgw{u|u/f}u:fGpHphwIpJpiwjwkwKpLpMpNplwOpmwPpQpRpnwowpwqwQcSprwRcswtwuwScvwTpUpwwxwywzwAwBwCwDwEwVpw Wpx y z A B C FwGwXpYpHwIwZp0pD JwKwLw1pE 2pF G H I J K L MwNwOwPwQwRwSwM 3p4pN O Tw5pUwVwWwXw6pYwZw0w7p8p1w9p2w!p#p$p%p3w4w'p(p)p5w6w7w8wP *p+p9w!w#w$w,p-p%w'w(w.p/p)w:pTc;pUc*w+wQ R VcWc,w-wXc=pS T Yc?p.w/w:w;w@p[pZc]p0c^p1c=w?w2c_p`p3c@w[w4c]w5c^w_w`w{w{pU |w6c|p}p7c}w~waxbxcx~paqbqdxcqdqexfxgxhxV i ;f=feqixfqgqhqjx?f@fkxiq~u[fav]fjq8clxkqmxnxbv^f9coxlqmqpxqx_frxcvdv`fev{fnqoqsxpqqqtxuxvxrqsqtquqwxvqxxwqxqyqyxzxAxBx!czqCx#cDxExFx$cGxAqBqHxIxJxKxLxMxNxOxPxCqX DqY Z 0 1 2 3 QxRxEqFqSxTxGqHq4 UxVxWxIq5 Jq6 7 8 9 ! # $ XxYxZx0x1x2x3x% KqLq' ( 4xMq5x6x7x8xNq9x!x#xOqPq$xQq%xRqSqTqUq'x(xVqWqXq)x*x+x,x) YqZq-x.x/x:x0q1q;x=x?x2q3q@x4q%c5q'c[x]x* + (c)c^x_x*c6q, - +c7q`x{x|x}x8q9q,c!q-c#q.c~xay/c$q%q:cbycy;cdy=ceyfygyhy'q. iy?c(q)q@cjykylymyny*q+q,qoy-q.qpyqyrysy/ j |f}f/qty:q;q=quy~fagvy?qfvbggvcg@q[cwy[qxyyyhvdg]czy]q^qAyByegCyivjvfgkvgg_q`qDy{q|qEyFyGy}q~qarbrHycrIydrerfrJyKyLyMy^cgrNy_cOyPyQy`cRyhrirSyTyUyVyWyXyYyZy0yjr; kr= ? @ [ ] ^ 1y2ylrmr3y4ynror_ 5y6y7ypr` qr{ | } ~ abbbcb8y9y!y#y$y%y'ydbrrsrebfb(ytr)y*y+y,yur-y.y/yvrwr:yxr;yyrzrArBr=y?yCrDrEr@y[y]y^ygbFrGr_y`y{y|yHrIr}y~yazJrKrbzLr{cMr|cczdzhbib}c~cezfzadNrjbkbbdOrgzhzizjzPrQrcdRrddSredkzlzfdTrUrgdmznzhdozidpzqzrzszVrlbtzjdWrXrkduzvzwzxzyzYrZr0rzz1r2rAzBzCzDzmbk hgig3rEz4r5r6rFzjgkgGz7rlvlgmvmg8rldHz9rIzJznvngmdKz!r#rLzMzogNzovpvpgqvqg$r%rOz'r(rPzQzRz)r*r+r,rSz-rTz.r/r:rUzVzWzXznd;rYzodZz0z1zpd2z=r?r3z4z5z6z7z8z9z!z#z@rob[rpbqbrbsbtbub$z%z]r^r'z(z_r`rvb)z*z+z{rwb|rxbybzbAbBbCbDb,z-z.z/z:z;z=zEb}r~rFbGb?zas@z[z]z^zbs_z`z{zcsds|zes}zfsgshsis~zaAjskslsbAcAdAeAHbmsnsfAgAhAiAospsjAkAlAqsrsmAssqdtsrdnAoAIbJbsdtdpAqAudusKbLbvdvsrAsAtAuAwsxswdysxdzsydvAwAzdAsBsAdxAyABdzACdAABACADACsMbEADdDsEsEdFAGAHAIAJAFsGsHsKAIsJsLAMANAOANbl rgsgKsPALsMsNsQAtgugRAOsrvvgsvwgPsFdSAQsTAUAtvxgGdVARsSsWAXAygYAuvvvzgwvAgTsUsZAVsWs0A1A2AXsYsZs0s3A1s4A2s3s4s5A6A7A8AHd5s9AId!A#A$AJd%A6s7s'A(A)A*A+A,A-A.A/A8sPb9sQbRbSbTbUbVb:A;A!s#s=A?A$s%sWb@A[A]A'sXb(sYbZb0b1b2b3b4b^A_A`A{A|A}A~A5b)s*s6b7baB+sbBcBdBeB,sfBgBhB-s.siB/sjB:s;s=s?skBlB@s[s]smBnBoBpB8b^s_sqBrBsBtB`s{suBvBwB|s}sxB~sKdatLdyBzB9b!bMdNdABBBOdbt#b$bPdctCBDBEBFBdtetQdftRdgtSdGBHBTdhtitUdIBJBVdKBWdLBMBNBOBjt%bPBXdktltYdQBRBSBTBUBmtntotVBptqtWBXBYBZB'bm BgCgrt0Bstttut1BDgEg2BvtxvFgyvGgwtZd3Bxt4B5BzvHg0d6Bytzt7B8BIg9BAvBvJgCvKgAtBt!BCtDt#B$B%BEtFtGtHt'BIt(BJtKtLt)B*B+B,B1dMt-B2d.B/B:B3d;BNtOt=B?B@B[B]B^B_B`B{BPt)bQt*b+b,b-b.b/b|B}BRtSt~BaCTtUt:bbCcCdCVt;bWt=b?b@b[b]b^b_beCfCgChCiCjCkC`bXtYt{b|blCZtmCnCoCpC0tqCrCsC1t2ttC3tuC4t5t6t7tvCwC8t9t!txCyCzCAC}b#t$tBCCCDCEC%t'tFCGCHC(t)tIC*t4d+t5dJCKC~bac6d7dLCMC8d,tbccc9d-tNCOCPCQC.t/t!d:t#d;t$dRCSC%d=t?t'dTCUC(dVC)dWCXCYCZC@tdc0C*d[t]t+d1C2C3C4C5C^t_t`t6C{t|t7C8C9C!Cecn LgMg}t#C~taubu$CNgOg%CcuDvPgEvQgdu,d'Ceu(C)CFvRg-d*Cfugu+C,CSg-CGvHvTgIvUghuiu.Cjuku/C:C;Clumunuou=Cpu?Cqurusu@C[C]C^C.dtu_C/d`C{C|C:d}Cuuvu~CaDbDcDdDeDfDgDhDwugcxuhcicjckclcmciDjDyuzukDlDAuBuncmDnDoDCuocDupcqcrcsctcucvcpDqDrDsDtDuDvDwcEuFuxcycwDGu

59 app, 

60 args, 

61 input=input, 

62 env=env, 

63 catch_exceptions=catch_exceptions, 

64 color=color, 

65 **extra, 

66 ) 

67 return _SnapshotResult( 2JvKvLvMv=oNvOvPv?o@oQv[oRv]o^o_o`oSvTv{o|o}oUvVvWvXvo ~oapYvZv0v1vbpcp2v3v4vdpep5vfpzcgpAc6v7vp q BcCc8v9vDchpr s Ecip!v#v$v%vjpkpFclpGcmpHc'v(vIcnpopJc)v*vKc+vLc,v-v.v/vppt :vMcqprpNc;v=v?v@v[vsptpup]vvpwp^v_v`v{vu h 'f(fxp|vypzpAp}v)f*f~vBp^u+f_u,fCpOcawDpbwcw`u-fPcdwEpFpewfw.fgw{u|u/f}u:fGpHphwIpJpiwjwkwKpLpMpNplwOpmwPpQpRpnwowpwqwQcSprwRcswtwuwScvwTpUpwwxwywzwAwBwCwDwEwVpw Wpx y z A B C FwGwXpYpHwIwZp0pD JwKwLw1pE 2pF G H I J K L MwNwOwPwQwRwSwM 3p4pN O Tw5pUwVwWwXw6pYwZw0w7p8p1w9p2w!p#p$p%p3w4w'p(p)p5w6w7w8wP *p+p9w!w#w$w,p-p%w'w(w.p/p)w:pTc;pUc*w+wQ R VcWc,w-wXc=pS T Yc?p.w/w:w;w@p[pZc]p0c^p1c=w?w2c_p`p3c@w[w4c]w5c^w_w`w{w{pU |w6c|p}p7c}w~waxbxcx~paqbqdxcqdqexfxgxhxV i ;f=feqixfqgqhqjx?f@fkxiq~u[fav]fjq8clxkqmxnxbv^f9coxlqmqpxqx_frxcvdv`fev{fnqoqsxpqqqtxuxvxrqsqtquqwxvqxxwqxqyqyxzxAxBx!czqCx#cDxExFx$cGxAqBqHxIxJxKxLxMxNxOxPxCqX DqY Z 0 1 2 3 QxRxEqFqSxTxGqHq4 UxVxWxIq5 Jq6 7 8 9 ! # $ XxYxZx0x1x2x3x% KqLq' ( 4xMq5x6x7x8xNq9x!x#xOqPq$xQq%xRqSqTqUq'x(xVqWqXq)x*x+x,x) YqZq-x.x/x:x0q1q;x=x?x2q3q@x4q%c5q'c[x]x* + (c)c^x_x*c6q, - +c7q`x{x|x}x8q9q,c!q-c#q.c~xay/c$q%q:cbycy;cdy=ceyfygyhy'q. iy?c(q)q@cjykylymyny*q+q,qoy-q.qpyqyrysy/ j |f}f/qty:q;q=quy~fagvy?qfvbggvcg@q[cwy[qxyyyhvdg]czy]q^qAyByegCyivjvfgkvgg_q`qDy{q|qEyFyGy}q~qarbrHycrIydrerfrJyKyLyMy^cgrNy_cOyPyQy`cRyhrirSyTyUyVyWyXyYyZy0yjr; kr= ? @ [ ] ^ 1y2ylrmr3y4ynror_ 5y6y7ypr` qr{ | } ~ abbbcb8y9y!y#y$y%y'ydbrrsrebfb(ytr)y*y+y,yur-y.y/yvrwr:yxr;yyrzrArBr=y?yCrDrEr@y[y]y^ygbFrGr_y`y{y|yHrIr}y~yazJrKrbzLr{cMr|cczdzhbib}c~cezfzadNrjbkbbdOrgzhzizjzPrQrcdRrddSredkzlzfdTrUrgdmznzhdozidpzqzrzszVrlbtzjdWrXrkduzvzwzxzyzYrZr0rzz1r2rAzBzCzDzmbk hgig3rEz4r5r6rFzjgkgGz7rlvlgmvmg8rldHz9rIzJznvngmdKz!r#rLzMzogNzovpvpgqvqg$r%rOz'r(rPzQzRz)r*r+r,rSz-rTz.r/r:rUzVzWzXznd;rYzodZz0z1zpd2z=r?r3z4z5z6z7z8z9z!z#z@rob[rpbqbrbsbtbub$z%z]r^r'z(z_r`rvb)z*z+z{rwb|rxbybzbAbBbCbDb,z-z.z/z:z;z=zEb}r~rFbGb?zas@z[z]z^zbs_z`z{zcsds|zes}zfsgshsis~zaAjskslsbAcAdAeAHbmsnsfAgAhAiAospsjAkAlAqsrsmAssqdtsrdnAoAIbJbsdtdpAqAudusKbLbvdvsrAsAtAuAwsxswdysxdzsydvAwAzdAsBsAdxAyABdzACdAABACADACsMbEADdDsEsEdFAGAHAIAJAFsGsHsKAIsJsLAMANAOANbl rgsgKsPALsMsNsQAtgugRAOsrvvgsvwgPsFdSAQsTAUAtvxgGdVARsSsWAXAygYAuvvvzgwvAgTsUsZAVsWs0A1A2AXsYsZs0s3A1s4A2s3s4s5A6A7A8AHd5s9AId!A#A$AJd%A6s7s'A(A)A*A+A,A-A.A/A8sPb9sQbRbSbTbUbVb:A;A!s#s=A?A$s%sWb@A[A]A'sXb(sYbZb0b1b2b3b4b^A_A`A{A|A}A~A5b)s*s6b7baB+sbBcBdBeB,sfBgBhB-s.siB/sjB:s;s=s?skBlB@s[s]smBnBoBpB8b^s_sqBrBsBtB`s{suBvBwB|s}sxB~sKdatLdyBzB9b!bMdNdABBBOdbt#b$bPdctCBDBEBFBdtetQdftRdgtSdGBHBTdhtitUdIBJBVdKBWdLBMBNBOBjt%bPBXdktltYdQBRBSBTBUBmtntotVBptqtWBXBYBZB'bm BgCgrt0Bstttut1BDgEg2BvtxvFgyvGgwtZd3Bxt4B5BzvHg0d6Bytzt7B8BIg9BAvBvJgCvKgAtBt!BCtDt#B$B%BEtFtGtHt'BIt(BJtKtLt)B*B+B,B1dMt-B2d.B/B:B3d;BNtOt=B?B@B[B]B^B_B`B{BPt)bQt*b+b,b-b.b/b|B}BRtSt~BaCTtUt:bbCcCdCVt;bWt=b?b@b[b]b^b_beCfCgChCiCjCkC`bXtYt{b|blCZtmCnCoCpC0tqCrCsC1t2ttC3tuC4t5t6t7tvCwC8t9t!txCyCzCAC}b#t$tBCCCDCEC%t'tFCGCHC(t)tIC*t4d+t5dJCKC~bac6d7dLCMC8d,tbccc9d-tNCOCPCQC.t/t!d:t#d;t$dRCSC%d=t?t'dTCUC(dVC)dWCXCYCZC@tdc0C*d[t]t+d1C2C3C4C5C^t_t`t6C{t|t7C8C9C!Cecn LgMg}t#C~taubu$CNgOg%CcuDvPgEvQgdu,d'Ceu(C)CFvRg-d*Cfugu+C,CSg-CGvHvTgIvUghuiu.Cjuku/C:C;Clumunuou=Cpu?Cqurusu@C[C]C^C.dtu_C/d`C{C|C:d}Cuuvu~CaDbDcDdDeDfDgDhDwugcxuhcicjckclcmciDjDyuzukDlDAuBuncmDnDoDCuocDupcqcrcsctcucvcpDqDrDsDtDuDvDwcEuFuxcycwDGu

68 runner=result.runner, 

69 stdout_bytes=result.stdout_bytes, 

70 stderr_bytes=result.stderr_bytes, 

71 output_bytes=result.output_bytes, 

72 return_value=result.return_value, 

73 exit_code=result.exit_code, 

74 exception=result.exception, 

75 exc_info=result.exc_info, 

76 ) 

77 

78 

79if sys.platform == "win32": 1abcdefg

80 

81 class Keys: 1cd

82 RIGHT_ARROW = "\xe0M" 1cd

83 DOWN_ARROW = "\xe0P" 1cd

84 ENTER = "\r" 1cd

85 CTRL_C = "\x03" 1cd

86 TAB = "\t" 1cd

87 BACKSPACE = "\x08" 1cd

88 

89else: 

90 

91 class Keys: 1abefg

92 RIGHT_ARROW = "\x1b[C" 1abefg

93 DOWN_ARROW = "\x1b[B" 1abefg

94 ENTER = "\r" 1abefg

95 CTRL_C = "\x03" 1abefg

96 TAB = "\t" 1abefg

97 BACKSPACE = "\x7f" 1abefg

98 

99 

100def create_jwt_token(payload: dict[str, Any]) -> str: 1abcdefg

101 # Note: This creates a JWT with an invalid signature, but that's OK for our tests 

102 # since we only parse the payload, not verify the signature. 

103 

104 header = {"alg": "HS256", "typ": "JWT"} 2a HuIuJuKuLuMuNuv b OuPuQuRuSuTuUuW c VuWuXuYuZu0u1u: d 2u3u4u5u6u7u8unbe 9u!u#u$u%u'u(uObf )u*u+u,u-u.u/u(bg :u;u=u?u@u[u]ufc

105 header_encoded = ( 2a HuIuJuKuLuMuNuv b OuPuQuRuSuTuUuW c VuWuXuYuZu0u1u: d 2u3u4u5u6u7u8unbe 9u!u#u$u%u'u(uObf )u*u+u,u-u.u/u(bg :u;u=u?u@u[u]ufc

106 base64.urlsafe_b64encode(json.dumps(header).encode()).decode().rstrip("=") 

107 ) 

108 

109 payload_encoded = ( 2a HuIuJuKuLuMuNuv b OuPuQuRuSuTuUuW c VuWuXuYuZu0u1u: d 2u3u4u5u6u7u8unbe 9u!u#u$u%u'u(uObf )u*u+u,u-u.u/u(bg :u;u=u?u@u[u]ufc

110 base64.urlsafe_b64encode(json.dumps(payload).encode()).decode().rstrip("=") 

111 ) 

112 

113 signature = base64.urlsafe_b64encode(b"signature").decode().rstrip("=") 2a HuIuJuKuLuMuNuv b OuPuQuRuSuTuUuW c VuWuXuYuZu0u1u: d 2u3u4u5u6u7u8unbe 9u!u#u$u%u'u(uObf )u*u+u,u-u.u/u(bg :u;u=u?u@u[u]ufc

114 

115 return f"{header_encoded}.{payload_encoded}.{signature}" 2a HuIuJuKuLuMuNuv b OuPuQuRuSuTuUuW c VuWuXuYuZu0u1u: d 2u3u4u5u6u7u8unbe 9u!u#u$u%u'u(uObf )u*u+u,u-u.u/u(bg :u;u=u?u@u[u]ufc