Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 860017 Details for
Bug 904274
dev-python/rich-13.3.4 fails tests
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
build.log
build.log (text/plain), 431.33 KB, created by
Agostino Sarubbo
on 2023-04-13 16:36:47 UTC
(
hide
)
Description:
build.log
Filename:
MIME Type:
Creator:
Agostino Sarubbo
Created:
2023-04-13 16:36:47 UTC
Size:
431.33 KB
patch
obsolete
> * Package: dev-python/rich-13.3.4:0 > * Repository: gentoo > * Maintainer: python@gentoo.org > * USE: abi_x86_64 amd64 elibc_glibc kernel_linux python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 test userland_GNU > * FEATURES: network-sandbox preserve-libs sandbox test userpriv usersandbox > > >@@@@@ PLEASE PAY ATTENTION HERE!!! @@@@@ >This information may help you to understand if this is a duplicate or if this bug exists after you pushed a fix; >This ebuild was merged at the following commit: >https://github.com/gentoo/gentoo/commit/14cc919fef6b989a216d9408d48b0ed7ba4d2503 (Thu Apr 13 06:04:35 UTC 2023) >@@@@@ END @@@@@ > > > >@@@@@ PLEASE PAY ATTENTION HERE!!! @@@@@ >This ebuild was merged (directly or as a dependency) because of the following commit: >https://github.com/gentoo/gentoo/commit/233addade4782b56a75c3786f279c60f74e2f6ab >@@@@@ END @@@@@ > > > >################## ># emerge --info: # >################## >Portage 3.0.46 (python 3.11.3-final-0, default/linux/amd64/17.1, gcc-12, glibc-2.37-r1, 5.15.85-gentoo-dist x86_64) >================================================================= >System uname: Linux-5.15.85-gentoo-dist-x86_64-AMD_EPYC_7513_32-Core_Processor-with-glibc2.37 >KiB Mem: 263532996 total, 158133876 free >KiB Swap: 0 total, 0 free >sh bash 5.2_p15-r2 >ld GNU ld (Gentoo 2.40 p4) 2.40.0 >app-misc/pax-utils: 1.3.7::gentoo >app-shells/bash: 5.2_p15-r2::gentoo >dev-lang/perl: 5.36.0-r2::gentoo >dev-lang/python: 3.9.16_p3::gentoo, 3.10.11::gentoo, 3.11.3::gentoo >dev-util/cmake: 3.26.3::gentoo >dev-util/meson: 1.0.1::gentoo >sys-apps/baselayout: 2.13-r1::gentoo >sys-apps/openrc: 0.46::gentoo >sys-apps/sandbox: 2.30-r1::gentoo >sys-devel/autoconf: 2.71-r6::gentoo >sys-devel/automake: 1.16.5-r1::gentoo >sys-devel/binutils: 2.40-r4::gentoo >sys-devel/binutils-config: 5.5::gentoo >sys-devel/gcc: 12.2.1_p20230304::gentoo >sys-devel/gcc-config: 2.10::gentoo >sys-devel/libtool: 2.4.7-r1::gentoo >sys-devel/make: 4.4.1::gentoo >sys-kernel/linux-headers: 6.2::gentoo (virtual/os-headers) >sys-libs/glibc: 2.37-r1::gentoo >Repositories: > >gentoo > location: /usr/portage > sync-type: rsync > sync-uri: rsync://rsync.gentoo.org/gentoo-portage > priority: -1000 > volatile: True > sync-rsync-verify-metamanifest: yes > sync-rsync-verify-max-age: 24 > sync-rsync-verify-jobs: 1 > sync-rsync-extra-opts: > >ACCEPT_KEYWORDS="amd64 ~amd64" >ACCEPT_LICENSE="* MIT" >CBUILD="x86_64-pc-linux-gnu" >CFLAGS="-O2 -march=x86-64 -pipe -pipe -frecord-gcc-switches -fno-diagnostics-color -fmessage-length=0" >CHOST="x86_64-pc-linux-gnu" >CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt" >CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo" >CXXFLAGS="-O2 -march=x86-64 -pipe -pipe -frecord-gcc-switches -fno-diagnostics-color -fmessage-length=0" >DISTDIR="/var/tmp/portage/dev-python/rich-13.3.4/distdir" >EMERGE_DEFAULT_OPTS="--with-bdeps=y -1 -k -b" >ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR XDG_STATE_HOME" >FCFLAGS="-O2 -march=x86-64 -pipe -pipe -frecord-gcc-switches -fno-diagnostics-color -fmessage-length=0" >FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg buildpkg-live config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms sign split-log strict test unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" >FFLAGS="-O2 -march=x86-64 -pipe -pipe -frecord-gcc-switches -fno-diagnostics-color -fmessage-length=0" >GENTOO_MIRRORS="http://mirror.leaseweb.com/gentoo/ http://ftp.snt.utwente.nl/pub/os/linux/gentoo/ http://ftp.belnet.be/pub/rsync.gentoo.org/gentoo/ http://distfiles.gentoo.org" >LANG="en_US.utf8" >LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0" >LEX="flex" >MAKEOPTS="-j25" >PKGDIR="/root/tbci/binpkg" >PORTAGE_CONFIGROOT="/" >PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git" >PORTAGE_TMPDIR="/var/tmp" >SHELL="/bin/bash" >USE="acl amd64 bzip2 cli crypt debug dri elogind fortran gdbm iconv ipv6 jumbo-build libglvnd libtirpc multilib native-symlinks ncurses nls nptl openmp pam pcre readline seccomp split-usr ssl test test-rust unicode xattr zlib" ABI_X86="64" ELIBC="glibc" KERNEL="linux" PYTHON_TARGETS="pypy3 python3_9 python3_10 python3_11" USERLAND="GNU" >Unset: ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, INSTALL_MASK, LC_ALL, LD, LFLAGS, LIBTOOL, LINGUAS, MAKE, MAKEFLAGS, NM, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RANLIB, READELF, RUSTFLAGS, SIZE, STRINGS, STRIP, YACC, YFLAGS > > > > > >############################## ># emerge history (qlop -mv): # >############################## >2023-04-13T08:09:14 >>> dev-python/tomlkit-0.11.7 >2023-04-13T08:09:15 >>> dev-python/pathspec-0.11.1 >2023-04-13T08:09:17 >>> dev-python/mdurl-0.1.2 >2023-04-13T08:09:18 >>> dev-python/pluggy-1.0.0-r2 >2023-04-13T08:09:20 >>> dev-python/pygments-2.15.0 >2023-04-13T08:09:22 >>> dev-python/colorama-0.4.6 >2023-04-13T08:09:25 >>> dev-python/lark-1.1.5 >2023-04-13T08:09:27 >>> dev-python/pyrsistent-0.19.3 >2023-04-13T08:09:29 >>> dev-python/fqdn-1.5.1-r2 >2023-04-13T08:09:31 >>> dev-python/jsonpointer-2.3 >2023-04-13T08:09:32 >>> dev-python/uri_template-1.2.0-r1 >2023-04-13T08:09:34 >>> dev-python/webcolors-1.13 >2023-04-13T08:09:36 >>> dev-python/editables-0.3 >2023-04-13T08:09:38 >>> dev-python/trove-classifiers-2023.3.9 >2023-04-13T08:09:40 >>> dev-python/regex-2023.3.23 >2023-04-13T08:09:41 >>> dev-python/hatchling-1.14.0 >2023-04-13T08:09:43 >>> dev-python/rfc3987-1.3.8-r2 >2023-04-13T08:09:45 >>> dev-python/hatch-fancy-pypi-readme-22.8.0 >2023-04-13T08:09:47 >>> dev-python/rfc3986-validator-0.1.1-r1 >2023-04-13T08:09:49 >>> dev-python/strict-rfc3339-0.7-r2 >2023-04-13T08:09:51 >>> dev-python/python-dateutil-2.8.2-r1 >2023-04-13T08:09:53 >>> dev-python/rfc3339-validator-0.1.4-r1 >2023-04-13T08:09:54 >>> dev-python/arrow-1.2.3 >2023-04-13T08:09:56 >>> dev-python/zope-interface-6.0 >2023-04-13T08:09:58 >>> dev-python/isoduration-20.11.0-r1 >2023-04-13T08:10:00 >>> dev-python/attrs-22.2.0 >2023-04-13T08:10:03 >>> dev-python/iniconfig-2.0.0 >2023-04-13T08:10:05 >>> dev-python/jsonschema-4.17.3 >2023-04-13T08:10:07 >>> dev-python/exceptiongroup-1.1.1 >2023-04-13T08:10:09 >>> dev-python/poetry-core-1.5.2 >2023-04-13T08:10:11 >>> dev-python/pytest-7.3.0 >2023-04-13T08:10:13 >>> dev-python/uc-micro-py-1.0.1 >2023-04-13T08:10:16 >>> dev-python/calver-2022.06.26 >2023-04-13T08:10:18 >>> dev-python/linkify-it-py-2.0.0 >2023-04-13T08:10:19 >>> dev-python/hatch-vcs-0.3.0 >2023-04-13T08:10:21 >>> dev-python/markdown-it-py-2.2.0 >2023-04-13T08:10:23 >>> dev-python/flit_scm-1.7.0 > > > > >####################################### ># installed packages (qlist -ICvUSS): # >####################################### >acct-group/audio-0-r1:0 >acct-group/cdrom-0-r1:0 >acct-group/dialout-0-r1:0 >acct-group/disk-0-r1:0 >acct-group/floppy-0:0 >acct-group/input-0-r1:0 >acct-group/kmem-0-r1:0 >acct-group/kvm-0-r1:0 >acct-group/lp-0-r1:0 >acct-group/man-0-r1:0 >acct-group/messagebus-0-r1:0 >acct-group/polkitd-0-r1:0 >acct-group/portage-0:0 >acct-group/render-0-r1:0 >acct-group/root-0:0 >acct-group/sgx-0:0 >acct-group/sshd-0-r1:0 >acct-group/tape-0-r1:0 >acct-group/tty-0-r1:0 >acct-group/usb-0-r1:0 >acct-group/video-0-r1:0 >acct-user/man-1-r1:0 >acct-user/messagebus-0-r1:0 >acct-user/polkitd-0-r1:0 >acct-user/portage-0:0 >acct-user/sshd-0-r1:0 >app-admin/eselect-1.4.22:0 -doc -emacs -vim-syntax >app-admin/perl-cleaner-2.30-r1:0 -pkgcore >app-alternatives/awk-4:0 -busybox gawk -mawk -nawk split-usr >app-alternatives/bc-0:0 -gh gnu >app-alternatives/bzip2-1:0 -lbzip2 -pbzip2 reference split-usr >app-alternatives/gzip-0:0 -pigz reference split-usr >app-alternatives/lex-0-r1:0 flex -reflex >app-alternatives/sh-0:0 bash -busybox -dash -ksh -lksh -mksh >app-alternatives/tar-0:0 gnu -libarchive split-usr >app-alternatives/yacc-1-r2:0 bison -byacc -reference >app-arch/bzip2-1.0.8-r4:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 split-usr -static -static-libs -verify-sig >app-arch/gzip-1.12-r4:0 -pic -static -verify-sig >app-arch/libarchive-3.6.2-r1:0/13 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 acl -blake2 bzip2 e2fsprogs -expat iconv -lz4 lzma -lzo -nettle -static-libs -verify-sig xattr -zstd >app-arch/tar-1.34-r3:0 acl -minimal nls -selinux -verify-sig xattr >app-arch/unzip-6.0_p27-r1:0 bzip2 -natspec unicode >app-arch/xz-utils-5.4.2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc extra-filters nls split-usr -static-libs -verify-sig >app-arch/zstd-1.5.5:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -lz4 lzma split-usr -static-libs -test zlib >app-crypt/gnupg-2.4.0:0 bzip2 -doc -ldap nls readline -selinux smartcard ssl -test tofu -tools -tpm -usb -user-socket -verify-sig -wks-server >app-crypt/gpgme-1.19.0:1/11.6.15.2 -common-lisp cxx -python python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -qt5 -static-libs -test -verify-sig >app-crypt/libb2-0.98.1-r3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -native-cflags openmp -static-libs >app-crypt/pinentry-1.2.1-r1:0 -caps -efl -emacs -gnome-keyring -gtk ncurses -qt5 -verify-sig >app-crypt/rhash-1.4.3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 debug nls ssl -static-libs >app-editors/nano-7.2:0 -debug -justify -magic -minimal ncurses nls spell -static unicode >app-eselect/eselect-fontconfig-20220403:0 >app-eselect/eselect-iptables-20220320:0 >app-eselect/eselect-lib-bin-symlink-0.1.1-r1:0 >app-eselect/eselect-pinentry-0.7.2-r1:0 >app-i18n/man-pages-ja-20180315-r1:0 >app-i18n/man-pages-l10n-4.17.0:0 l10n_cs l10n_da l10n_de l10n_el l10n_es l10n_fi l10n_fr l10n_hu l10n_id l10n_it l10n_mk l10n_nb l10n_nl l10n_pl l10n_pt-BR l10n_ro l10n_ru l10n_sr l10n_sv l10n_uk l10n_vi >app-i18n/man-pages-zh_CN-1.6.3.6:0 >app-misc/ca-certificates-20230311.3.89:0 -cacert >app-misc/editor-wrapper-4-r1:0 >app-misc/mime-types-2.1.53:0 -nginx >app-misc/pax-utils-1.3.7:0 -caps -man -python python_single_target_python3_10 -python_single_target_python3_11 -python_single_target_python3_9 -seccomp -test >app-misc/tmux-3.3a-r1:0 debug -selinux -systemd -utempter -vim-syntax >app-portage/eix-0.36.6:0 debug -doc nls -sqlite >app-portage/elt-patches-20221210:0 >app-portage/gemato-20.1:0 gpg -pretty-log python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test -tools >app-portage/gentoolkit-0.6.1-r3:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >app-portage/portage-utils-0.95:0 openmp qmanifest qtegrity -static >app-shells/bash-5.2_p15-r2:0 -afs -bashlogger -examples -mem-scramble net nls -pgo -plugins readline -verify-sig >app-shells/bash-completion-2.11:0 eselect -test >app-shells/gentoo-bashcomp-20230313:0 >app-shells/push-3.4:0 >app-shells/quoter-4.2:0 >app-text/ansifilter-2.18:0 -qt5 >app-text/build-docbook-catalog-2.3-r1:0 >app-text/docbook-xml-dtd-4.5-r2:4.5 >app-text/docbook-xml-dtd-4.4-r3:4.4 >app-text/docbook-xml-dtd-4.2-r3:4.2 >app-text/docbook-xml-dtd-4.1.2-r7:4.1.2 >app-text/docbook-xsl-ns-stylesheets-1.79.1:0 -ruby >app-text/docbook-xsl-stylesheets-1.79.1-r4:0 -ruby >app-text/manpager-1:0 >app-text/opensp-1.5.2-r10:0 -doc nls -static-libs -test >app-text/po4a-0.69:0 -test -test >app-text/sgml-common-0.6.3-r7:0 >app-text/xmlto-0.0.28-r10:0 -latex text >dev-db/sqlite-3.41.2-r1:3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 debug -doc -icu readline -secure-delete -static-libs -tcl -test -tools >dev-lang/duktape-2.7.0-r3:0/2.7.0 >dev-lang/execline-2.9.2.1:0/2.9 >dev-lang/perl-5.36.0-r2:0/5.36 -berkdb debug -doc gdbm ithreads -minimal -quadmath >dev-lang/python-3.11.3:3.11 -bluetooth -build ensurepip -examples gdbm -hardened -libedit -lto ncurses -pgo readline sqlite ssl -test -tk -valgrind -verify-sig >dev-lang/python-3.10.11:3.10 -bluetooth -build ensurepip -examples gdbm -hardened -libedit -lto ncurses -pgo readline sqlite ssl -test -tk -valgrind -verify-sig xml >dev-lang/python-3.9.16_p3:3.9 -bluetooth -build ensurepip -examples gdbm -hardened -lto ncurses -pgo readline sqlite ssl -test -tk -valgrind -verify-sig xml >dev-lang/python-exec-2.4.10:2 native-symlinks python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-lang/python-exec-conf-2.4.6:2 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 >dev-lang/tcl-8.6.13-r1:0/8.6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 debug threads >dev-libs/boehm-gc-8.2.2-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -cxx large -static-libs threads >dev-libs/elfutils-0.189-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 bzip2 -lzma nls -static-libs -test utils -valgrind -verify-sig -zstd >dev-libs/expat-2.5.0:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -examples -static-libs unicode >dev-libs/glib-2.76.1:2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -dbus debug elf -gtk-doc mime -selinux -static-libs -sysprof -systemtap -test -utils xattr >dev-libs/gmp-6.2.1-r5:0/10.4 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 asm cpudetection cxx -doc -pic -static-libs >dev-libs/gobject-introspection-1.76.1:0 -doctool -gtk-doc python_single_target_python3_10 -python_single_target_python3_11 -python_single_target_python3_9 -test >dev-libs/gobject-introspection-common-1.76.1:0 >dev-libs/isl-0.26:0/23 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs >dev-libs/jsoncpp-1.9.5:0/25 -doc -test >dev-libs/libassuan-2.5.5:0 >dev-libs/libatomic_ops-7.8.0:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 >dev-libs/libevent-2.1.12-r1:0/2.1-7 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 clock-gettime debug -malloc-replacement ssl -static-libs -test -verbose-debug >dev-libs/libffi-3.4.4-r1:0/8 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 debug -exec-static-trampoline -pax-kernel -static-libs -test >dev-libs/libgcrypt-1.10.2:0/20 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 asm -cpu_flags_arm_aes -cpu_flags_arm_neon -cpu_flags_arm_sha1 -cpu_flags_arm_sha2 -cpu_flags_ppc_altivec -cpu_flags_ppc_vsx2 -cpu_flags_ppc_vsx3 cpu_flags_x86_aes cpu_flags_x86_avx cpu_flags_x86_avx2 -cpu_flags_x86_padlock -cpu_flags_x86_sha cpu_flags_x86_sse4_1 -doc getentropy -static-libs -verify-sig >dev-libs/libgpg-error-1.47:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -common-lisp nls -static-libs -test -verify-sig >dev-libs/libksba-1.6.3:0 -static-libs -verify-sig >dev-libs/libltdl-2.4.7-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs >dev-libs/libpcre2-10.42-r1:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 bzip2 jit -libedit pcre16 pcre32 readline split-usr -static-libs unicode -verify-sig zlib >dev-libs/libpipeline-1.5.7:0 -test >dev-libs/libtasn1-4.19.0:0/6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs -test -valgrind -verify-sig >dev-libs/libunistring-1.1-r1:0/5 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -static-libs >dev-libs/libuv-1.44.2-r1:0/1 >dev-libs/libxml2-2.10.4:2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug -examples ftp -icu -lzma python python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 readline -static-libs -test >dev-libs/libxslt-1.1.37-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 crypt debug -examples -python python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -static-libs >dev-libs/lzo-2.10:2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -examples split-usr -static-libs >dev-libs/mpc-1.3.1:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs >dev-libs/mpfr-4.2.0:0/6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs -verify-sig >dev-libs/nettle-3.8.1:0/8-6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 asm -cpu_flags_arm_aes -cpu_flags_arm_neon -cpu_flags_arm_sha1 -cpu_flags_arm_sha2 -cpu_flags_ppc_altivec cpu_flags_x86_aes cpu_flags_x86_pclmul -cpu_flags_x86_sha -doc gmp -static-libs -verify-sig >dev-libs/npth-1.6-r1:0 -test >dev-libs/openssl-3.0.8-r3:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 asm cpu_flags_x86_sse2 -fips -ktls -rfc3779 -sctp -static-libs -test -tls-compression -vanilla -verify-sig -verify-sig -weak-ssl-ciphers >dev-libs/popt-1.19:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 nls -static-libs >dev-libs/skalibs-2.13.1.0:0/2.13 >dev-perl/Clone-0.460.0:0 -test >dev-perl/Devel-CheckLib-1.160.0:0 -test >dev-perl/Encode-EUCJPASCII-0.30.0-r1:0 -test >dev-perl/Encode-HanExtra-0.230.0-r3:0 >dev-perl/Encode-Locale-1.50.0-r1:0 -test >dev-perl/ExtUtils-CChecker-0.110.0:0 -test >dev-perl/File-BaseDir-0.90.0:0 -test >dev-perl/File-DesktopEntry-0.220.0-r1:0 -test >dev-perl/File-Listing-6.150.0:0 -test -test >dev-perl/File-MimeInfo-0.300.0:0 -test >dev-perl/HTML-Parser-3.760.0:0 -test >dev-perl/HTML-Tagset-3.200.0-r2:0 >dev-perl/HTTP-Cookies-6.100.0:0 -test >dev-perl/HTTP-Date-6.50.0:0 >dev-perl/HTTP-Message-6.440.0:0 -test -test >dev-perl/HTTP-Negotiate-6.10.0-r2:0 -test >dev-perl/IO-HTML-1.4.0:0 -test >dev-perl/IO-Socket-INET6-2.720.0-r2:0 -test >dev-perl/IO-Socket-SSL-2.81.0:0 -examples -idn -test >dev-perl/IPC-System-Simple-1.300.0:0 -test >dev-perl/libwww-perl-6.600.0-r1:0 ssl -test >dev-perl/Locale-gettext-1.70.0-r1:0 -test >dev-perl/LWP-MediaTypes-6.40.0:0 -test >dev-perl/LWP-Protocol-https-6.100.0:0 -test >dev-perl/MIME-Charset-1.13.1:0 l10n_ja l10n_zh -test >dev-perl/Module-Build-0.423.100:0 -test >dev-perl/Mozilla-CA-20999999-r1:0 -test >dev-perl/Net-HTTP-6.220.0:0 -minimal -test -test >dev-perl/Net-SSLeay-1.920.0:0 -examples -examples -minimal -test >dev-perl/Pod-Parser-1.630.0-r1:0 -test >dev-perl/SGMLSpm-1.1-r2:0 -test >dev-perl/Socket6-0.290.0:0 -test >dev-perl/Sub-Name-0.260.0:0 -suggested -test >dev-perl/Syntax-Keyword-Try-0.270.0:0 -test >dev-perl/TermReadKey-2.380.0-r1:0 -examples -test >dev-perl/Text-CharWidth-0.40.0-r2:0 -test >dev-perl/Text-WrapI18N-0.60.0-r2:0 -test >dev-perl/TimeDate-2.330.0-r1:0 -test >dev-perl/Try-Tiny-0.310.0:0 -minimal -test >dev-perl/Unicode-LineBreak-2019.1.0:0 >dev-perl/URI-5.110.0:0 -test >dev-perl/WWW-RobotRules-6.20.0-r2:0 -test >dev-perl/XML-Parser-2.460.0-r2:0 >dev-perl/XS-Parse-Keyword-0.250.0:0 -test >dev-perl/YAML-Tiny-1.730.0-r1:0 -minimal -test >dev-python/arrow-1.2.3:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/attrs-22.2.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/autocommand-2.2.2:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/calver-2022.06.26:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/certifi-3021.3.16-r3:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/charset_normalizer-3.1.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/colorama-0.4.6:0 -examples python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/cython-0.29.34:0 -doc -emacs python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/editables-0.3:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/ensurepip-pip-23.0.1:0 >dev-python/ensurepip-setuptools-67.6.1:0 >dev-python/ensurepip-wheels-100:0 >dev-python/exceptiongroup-1.1.1:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/flit_core-3.8.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/flit_scm-1.7.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 >dev-python/fqdn-1.5.1-r2:0 -doc python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/gentoo-common-1:0 >dev-python/gpep517-13:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/hatch-fancy-pypi-readme-22.8.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/hatch-vcs-0.3.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/hatchling-1.14.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/idna-3.4:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/importlib_metadata-6.3.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/inflect-6.0.4:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/iniconfig-2.0.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/installer-0.7.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/isoduration-20.11.0-r1:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/jaraco-context-4.3.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/jaraco-functools-3.6.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/jaraco-text-3.11.1:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/jinja-3.1.2:0 -doc -examples python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/jsonpointer-2.3:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 >dev-python/jsonschema-4.17.3:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/lark-1.1.5:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/linkify-it-py-2.0.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/markdown-it-py-2.2.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/markupsafe-2.1.2:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/mdurl-0.1.2:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/more-itertools-9.1.0:0 -doc python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/nspektr-0.4.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/ordered-set-4.1.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/packaging-23.1:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/pathspec-0.11.1:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/platformdirs-3.2.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/pluggy-1.0.0-r2:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/poetry-core-1.5.2:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/pydantic-1.10.7:0 native-extensions python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/pygments-2.15.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/pyparsing-3.0.9:0 -examples python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/pypy3-7.3.11_p1:0/pypy39-pp73-336 ensurepip gdbm jit ncurses sqlite -tk >dev-python/pypy3-exe-bin-7.3.11:3.9-7.3.11 >dev-python/pyrsistent-0.19.3:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/PySocks-1.7.1-r2:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 >dev-python/pytest-7.3.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/python-dateutil-2.8.2-r1:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/regex-2023.3.23:0 -doc python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/requests-2.28.2:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -socks5 -test test-rust >dev-python/rfc3339-validator-0.1.4-r1:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/rfc3986-validator-0.1.1-r1:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/rfc3987-1.3.8-r2:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 >dev-python/setuptools-67.6.1:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/setuptools-scm-7.1.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/six-1.16.0-r1:0 -doc python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/strict-rfc3339-0.7-r2:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/tomli-2.0.1-r1:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/tomlkit-0.11.7:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/trove-classifiers-2023.3.9:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/typing-extensions-4.5.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/uc-micro-py-1.0.1:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/uri_template-1.2.0-r1:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 >dev-python/urllib3-1.26.15:0 -brotli python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/webcolors-1.13:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/wheel-0.40.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/zipp-3.15.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-python/zope-interface-6.0:0 python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-util/checkbashisms-2.22.2:0 >dev-util/cmake-3.26.3:0 -doc -emacs ncurses -qt5 -test -test -verify-sig >dev-util/desktop-file-utils-0.26-r2:0 -emacs >dev-util/glib-utils-2.76.1:0 python_single_target_python3_10 -python_single_target_python3_11 -python_single_target_python3_9 >dev-util/gperf-3.1-r1:0 >dev-util/gtk-doc-am-1.33.2:0 >dev-util/intltool-0.51.0-r3:0 >dev-util/meson-1.0.1:0 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -test >dev-util/meson-format-array-0:0 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 >dev-util/ninja-1.11.1-r2:0 -doc -emacs -test >dev-util/pkgconf-1.8.1:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -test >dev-util/re2c-2.2:0 debug -test >dev-vcs/git-2.40.0:0 blksha1 -cgi curl -cvs -doc -gnome-keyring gpg -highlight iconv -mediawiki nls pcre -perforce -perl python_single_target_python3_10 -python_single_target_python3_11 -python_single_target_python3_9 safe-directory -selinux -subversion -test -tk webdav -xinetd >media-fonts/liberation-fonts-2.1.5:0 -X -X -fontforge >media-gfx/graphite2-1.3.14_p20210810-r3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -perl -test >media-libs/fontconfig-2.14.2:1.0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc nls -test >media-libs/freetype-2.13.0:2 -X -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 adobe-cff -brotli bzip2 cleartype-hinting debug -doc -fontforge harfbuzz -infinality png -static-libs -svg -utils >media-libs/harfbuzz-7.1.0:0/6.0.0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 cairo debug -doc -experimental glib graphite -icu introspection -test truetype >media-libs/libpng-1.6.39:0/16 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -apng -cpu_flags_arm_neon cpu_flags_x86_sse -static-libs >net-dns/c-ares-1.19.0:0/2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs -test -verify-sig >net-dns/libidn2-2.3.4:0/2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 nls -static-libs -verify-sig >net-firewall/iptables-1.8.9:0/1.8.3 -conntrack -netlink -nftables -pcap split-usr -static-libs >net-libs/gnutls-3.8.0:0/30.30 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -brotli cxx -dane -doc -examples idn nls openssl -pkcs11 seccomp -sslv2 -sslv3 -static-libs -test -test-full tls-heartbeat -tools -valgrind -verify-sig zlib -zstd >net-libs/libmnl-1.0.5:0/0.2.0 -examples -verify-sig >net-libs/libnsl-2.0.0-r1:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs >net-libs/libtirpc-1.3.3:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -kerberos split-usr -static-libs >net-libs/nghttp2-1.52.0:0/1.14 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 debug -hpack-tools -jemalloc -static-libs -systemd -test -utils -xml >net-misc/curl-8.0.1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 adns -alt-svc -brotli -curl_ssl_gnutls -curl_ssl_mbedtls -curl_ssl_nss curl_ssl_openssl -curl_ssl_rustls ftp -gnutls -gopher -hsts http2 -idn imap -kerberos -ldap -mbedtls -nghttp3 -nss openssl pop3 progress-meter -rtmp -rustls -samba smtp -ssh ssl -sslv3 -static-libs -telnet -test tftp -verify-sig -websockets -zstd >net-misc/dhcpcd-9.5.0:0 debug embedded ipv6 -privsep udev >net-misc/iputils-20221126-r1:0 arping -caps -clockdiff -doc filecaps -idn nls -test -tracepath >net-misc/netifrc-0.7.3-r1:0 dhcp >net-misc/openssh-9.3_p1:0 -X -X509 -abi_mips_n32 -audit -debug -hpn -kerberos -ldns -libedit -livecd pam -pie -sctp -security-key -selinux ssl -static -test -verify-sig -xmss >net-misc/rsync-3.2.7-r2:0 acl -examples iconv -lz4 python_single_target_python3_10 -python_single_target_python3_11 -python_single_target_python3_9 -rrsync ssl -stunnel -system-zlib -verify-sig xattr -xxhash -zstd >net-misc/wget-1.21.3-r1:0 -cookie-check debug -gnutls -idn ipv6 -metalink nls -ntlm pcre ssl -static -test -uuid -verify-sig zlib >perl-core/Compress-Raw-Zlib-2.202.0:0 >perl-core/File-Temp-0.231.100:0 >sec-keys/openpgp-keys-gentoo-release-20230329:0 -test >sys-apps/acl-2.3.1-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 nls split-usr -static-libs >sys-apps/attr-2.5.1-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 debug nls split-usr -static-libs >sys-apps/baselayout-2.13-r1:0 -build split-usr >sys-apps/coreutils-9.2-r2:0 acl -caps -gmp -hostname -kill -multicall nls openssl -selinux split-usr -static -test -vanilla -verify-sig xattr >sys-apps/dbus-1.15.4-r1:0 -X -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 debug -doc elogind -selinux -static-libs -systemd -test -test >sys-apps/debianutils-5.7:0 installkernel -static >sys-apps/diffutils-3.9-r1:0 nls -verify-sig >sys-apps/file-5.44-r3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 bzip2 -lzip -lzma -python python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -seccomp -static-libs -verify-sig zlib -zstd >sys-apps/findutils-4.9.0-r2:0 nls -selinux -static -test -verify-sig >sys-apps/gawk-5.2.1:0 -mpfr nls -pma readline -verify-sig >sys-apps/gentoo-functions-0.19:0 >sys-apps/grep-3.10:0 egrep-fgrep nls pcre -static -verify-sig >sys-apps/groff-1.22.4:0 -X -examples -uchardet >sys-apps/help2man-1.49.3:0 nls >sys-apps/install-xattr-0.8-r1:0 >sys-apps/iproute2-6.2.0-r1:0 -atm -berkdb -bpf -caps -elf iptables -libbsd -minimal -nfs -selinux split-usr >sys-apps/kbd-2.5.1:0 nls pam -test >sys-apps/kmod-30-r1:0 debug -doc lzma -pkcs7 -python python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -static-libs tools zlib zstd >sys-apps/less-608-r2:0 pcre unicode >sys-apps/man-db-2.11.2:0 manpager nls seccomp -selinux -static-libs zlib >sys-apps/man-pages-6.04:0 l10n_cs l10n_da l10n_de l10n_el l10n_es l10n_fi l10n_fr l10n_hu l10n_id l10n_it l10n_ja l10n_mk l10n_nb l10n_nl l10n_pl l10n_pt-BR l10n_ro l10n_ru l10n_sr l10n_sv l10n_uk l10n_vi l10n_zh-CN >sys-apps/miscfiles-1.5-r4:0 -minimal >sys-apps/net-tools-2.10:0 arp hostname ipv6 -nis nls -plipconfig -selinux -slattach -static >sys-apps/openrc-0.46:0 -audit -bash debug ncurses netifrc -newnet pam -selinux -sysv-utils unicode >sys-apps/portage-3.0.46:0 -apidoc -build -doc -gentoo-dev ipc native-extensions python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 rsync-verify -selinux -test xattr >sys-apps/s6-2.11.3.0:0/2.11 execline >sys-apps/s6-linux-init-1.1.0.0:0/1.1 sysv-utils >sys-apps/sandbox-2.30-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 abi_x86_32 abi_x86_64 -abi_x86_x32 nnp >sys-apps/sed-4.9:0 acl nls -selinux -static -verify-sig >sys-apps/shadow-4.13-r2:0/4 acl -audit -bcrypt -cracklib nls pam -selinux -skey split-usr -su -verify-sig xattr >sys-apps/systemd-utils-252.9:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 acl -boot kmod -selinux split-usr -split-usr -sysusers -test tmpfiles udev >sys-apps/texinfo-7.0.3:0 nls standalone -static >sys-apps/util-linux-2.38.1-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -audit -build -caps cramfs -cryptsetup -fdformat hardlink -kill logger -magic ncurses nls pam -python python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 readline -rtas -selinux -slang split-usr -static-libs su suid -systemd -test -tty-helpers -udev unicode -verify-sig >sys-apps/which-2.21:0 >sys-auth/elogind-246.10-r2:0 acl -audit cgroup-hybrid debug -doc pam policykit -selinux -test >sys-auth/pambase-20220214:0 -caps -debug elogind -gnome-keyring -homed -minimal -mktemp nullok -pam_krb5 -pam_ssh passwdqc -pwhistory -pwquality -securetty -selinux sha512 -systemd -yescrypt >sys-auth/passwdqc-2.0.2-r1:0 >sys-auth/polkit-122-r1:0 daemon duktape -examples -gtk introspection -kde pam -selinux -systemd -test >sys-devel/autoconf-2.71-r6:2.71 -emacs >sys-devel/autoconf-archive-2023.02.20:0 >sys-devel/autoconf-wrapper-20221207-r1:0 >sys-devel/automake-1.16.5-r1:1.16 -test >sys-devel/automake-wrapper-20221207:0 >sys-devel/bc-1.07.1-r6:0 -libedit readline -static >sys-devel/binutils-2.40-r4:2.40 -cet -doc -gold -gprofng -multitarget nls -pgo plugins -static-libs -test -vanilla -zstd >sys-devel/binutils-config-5.5:0 native-symlinks >sys-devel/bison-3.8.2-r2:0 -examples nls -static -test -verify-sig >sys-devel/flex-2.6.4-r6:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 nls -static -test >sys-devel/gcc-12.2.1_p20230304:12 -ada -cet -custom-cflags cxx -d -debug -default-stack-clash-protection -default-znow -doc -fixed-point fortran -go graphite -hardened -ieee-long-double -jit -libssp lto multilib nls nptl -objc -objc++ -objc-gc openmp -pch -pgo pie sanitize -ssp -systemtap -test -valgrind -vanilla -vtv -zstd >sys-devel/gcc-config-2.10:0 cc-wrappers native-symlinks >sys-devel/gettext-0.21.1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 acl cxx -doc -emacs -git -java -java ncurses nls openmp -static-libs -verify-sig >sys-devel/gnuconfig-20221007:0 >sys-devel/libtool-2.4.7-r1:2 -vanilla >sys-devel/m4-1.4.19-r1:0 -examples nls -verify-sig >sys-devel/make-4.4.1:0 -guile nls -static -verify-sig >sys-devel/patch-2.7.6-r5:0 -static -test -verify-sig xattr >sys-fs/e2fsprogs-1.47.0-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -cron -fuse nls split-usr -static-libs -test tools >sys-fs/udev-init-scripts-35:0 >sys-kernel/installkernel-gentoo-7:0 -grub >sys-kernel/linux-headers-6.2:0 -headers-only >sys-libs/gdbm-1.23:0/6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 berkdb nls readline -static-libs -test -verify-sig >sys-libs/glibc-2.37-r1:2.2 -audit -caps -cet -compile-locales -crypt -custom-cflags -doc -gd -hash-sysv-compat -headers-only multiarch multilib -multilib-bootstrap -nscd -perl -profile -selinux -ssp stack-realign static-libs -suid -systemd -systemtap -test -vanilla >sys-libs/libcap-2.68:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 pam split-usr -static-libs -tools >sys-libs/libseccomp-2.5.4:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -experimental-loong -python python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 -static-libs -test >sys-libs/libxcrypt-4.4.33:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 abi_x86_32 abi_x86_64 -abi_x86_x32 compat -headers-only split-usr -static-libs system -test >sys-libs/ncurses-6.4_p20230408:0/6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -ada cxx debug -doc -gpm -minimal -profile split-usr -split-usr stack-realign -static-libs -test tinfo -trace -verify-sig >sys-libs/pam-1.5.2-r3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -audit -berkdb -debug filecaps -nis -selinux split-usr >sys-libs/readline-8.2_p1:0/8 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 split-usr -static-libs unicode -utils -verify-sig >sys-libs/timezone-data-2023c:0 -leaps-timezone nls -zic-slim >sys-libs/zlib-1.2.13-r1:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 minizip split-usr -static-libs -verify-sig >sys-process/procps-3.3.17-r1:0/8 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 elogind kill -modern-top ncurses nls -selinux split-usr -static-libs -systemd -test unicode >sys-process/psmisc-23.6:0 -X -apparmor nls -selinux -test >virtual/acl-0-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs >virtual/dev-manager-0-r2:0 >virtual/editor-0-r5:0 >virtual/libc-1-r1:0 >virtual/libcrypt-2-r1:0/2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs >virtual/libelf-3-r1:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 >virtual/libiconv-0-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 >virtual/libintl-0-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 >virtual/libudev-232-r7:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -systemd >virtual/man-0-r4:0 >virtual/os-headers-0-r2:0 >virtual/package-manager-1:0 >virtual/pager-0-r1:0 >virtual/perl-Carp-1.520.0-r2:0 >virtual/perl-Compress-Raw-Bzip2-2.103.0-r3:0 >virtual/perl-Compress-Raw-Zlib-2.202.0:0 >virtual/perl-CPAN-2.330.0:0 >virtual/perl-CPAN-Meta-2.150.10-r6:0 >virtual/perl-CPAN-Meta-Requirements-2.140.0-r8:0 >virtual/perl-CPAN-Meta-YAML-0.18.0-r8:0 >virtual/perl-Data-Dumper-2.184.0:0 >virtual/perl-Digest-MD5-2.580.0-r1:0 >virtual/perl-Encode-3.170.0:0 >virtual/perl-Exporter-5.770.0:0 >virtual/perl-ExtUtils-CBuilder-0.280.236-r1:0 >virtual/perl-ExtUtils-Install-2.200.0-r1:0 >virtual/perl-ExtUtils-MakeMaker-7.640.0:0 >virtual/perl-ExtUtils-Manifest-1.730.0-r1:0 >virtual/perl-ExtUtils-ParseXS-3.450.0:0 >virtual/perl-File-Path-2.180.0-r1:0 >virtual/perl-File-Spec-3.840.0:0 >virtual/perl-File-Temp-0.231.100:0 >virtual/perl-Getopt-Long-2.520.0-r1:0 >virtual/perl-IO-1.500.0:0 >virtual/perl-IO-Compress-2.106.0:0 >virtual/perl-IO-Socket-IP-0.410.0-r1:0 >virtual/perl-JSON-PP-4.70.0:0 >virtual/perl-libnet-3.140.0:0 ssl >virtual/perl-MIME-Base64-3.160.0-r1:0 >virtual/perl-Module-Metadata-1.0.37-r2:0 >virtual/perl-parent-0.238.0-r2:0 >virtual/perl-Parse-CPAN-Meta-2.150.10-r6:0 >virtual/perl-Perl-OSType-1.10.0-r6:0 >virtual/perl-podlators-4.140.0-r3:0 >virtual/perl-Scalar-List-Utils-1.620.0:0 >virtual/perl-Test-Harness-3.440.0:0 >virtual/perl-Text-ParseWords-3.310.0:0 >virtual/perl-Time-Local-1.300.0-r1:0 >virtual/perl-version-0.992.900:0 >virtual/perl-XSLoader-0.310.0:0 >virtual/pkgconfig-2-r1:0 >virtual/service-manager-1-r1:0 >virtual/ssh-0-r1:0 -minimal >virtual/tmpfiles-0-r3:0 >virtual/ttf-fonts-1-r2:0 >virtual/udev-217-r5:0 >virtual/w3m-1:0 >www-client/pybugz-0.13-r2:0 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 >www-client/w3m-0.5.3_p20230121:0 -X -fbcon -gdk-pixbuf -gpm -imlib l10n_ja -lynxkeymap nls -nntp ssl unicode -xface >x11-apps/xprop-1.2.6:0 >x11-apps/xset-1.2.5:0 >x11-base/xcb-proto-1.15.2:0 python_targets_python3_10 python_targets_python3_11 python_targets_python3_9 >x11-base/xorg-proto-2022.2:0 -test >x11-libs/cairo-1.17.8:0 X -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -aqua -debug glib -gtk-doc -test >x11-libs/libICE-1.1.1-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 >x11-libs/libSM-1.2.4:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc uuid >x11-libs/libX11-1.8.4-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -test >x11-libs/libXau-1.0.11:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc >x11-libs/libxcb-1.15-r1:0/1.12 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -doc -selinux -test xkb >x11-libs/libXdmcp-1.1.4-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc >x11-libs/libXext-1.3.5:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc >x11-libs/libXmu-1.1.4:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc >x11-libs/libXrender-0.9.11:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 >x11-libs/libXt-1.3.0:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -test >x11-libs/pixman-0.42.2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -cpu_flags_arm_iwmmxt -cpu_flags_arm_iwmmxt2 -cpu_flags_arm_neon -cpu_flags_ppc_altivec cpu_flags_x86_mmxext cpu_flags_x86_sse2 cpu_flags_x86_ssse3 -loongson2f -static-libs -test >x11-libs/xtrans-1.4.0:0 -doc >x11-misc/compose-tables-1.8.4-r1:0 >x11-misc/shared-mime-info-2.2:0 -test >x11-misc/xdg-utils-1.1.3_p20210805-r1:0 -dbus -doc -gnome > > >####################### ># build.log # >####################### > >>>> Unpacking source... >>>> Unpacking rich-13.3.4.gh.tar.gz to /var/tmp/portage/dev-python/rich-13.3.4/work >>>> Source unpacked in /var/tmp/portage/dev-python/rich-13.3.4/work >>>> Preparing source in /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4 ... > * Build system packages: > * dev-python/gpep517 : 13 > * dev-python/installer : 0.7.0 > * dev-python/poetry-core : 1.5.2 >>>> Source prepared. >>>> Configuring source in /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4 ... >>>> Source configured. >>>> Compiling source in /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4 ... > * pypy3: running distutils-r1_run_phase distutils-r1_python_compile > * Building the wheel for rich-13.3.4 via poetry.core.masonry.api >gpep517 build-wheel --backend poetry.core.masonry.api --output-fd 3 --wheel-dir /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-pypy3/wheel >2023-04-13 08:10:30,485 gpep517 INFO Building wheel via backend poetry.core.masonry.api >2023-04-13 08:10:30,957 poetry.core.masonry.builders.wheel INFO Building wheel >2023-04-13 08:10:31,061 poetry.core.masonry.builders.wheel INFO Built rich-13.3.4-py3-none-any.whl >2023-04-13 08:10:31,062 gpep517 INFO The backend produced /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-pypy3/wheel/rich-13.3.4-py3-none-any.whl > * Installing rich-13.3.4-py3-none-any.whl to /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-pypy3/install >gpep517 install-wheel --destdir=/var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-pypy3/install --interpreter=/usr/bin/pypy3 --prefix=/usr --optimize=all /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-pypy3/wheel/rich-13.3.4-py3-none-any.whl >2023-04-13 08:10:31,253 gpep517 INFO Installing /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-pypy3/wheel/rich-13.3.4-py3-none-any.whl into /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-pypy3/install >2023-04-13 08:10:31,889 gpep517 INFO Installation complete > * python3_9: running distutils-r1_run_phase distutils-r1_python_compile > * Building the wheel for rich-13.3.4 via poetry.core.masonry.api >gpep517 build-wheel --backend poetry.core.masonry.api --output-fd 3 --wheel-dir /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_9/wheel >2023-04-13 08:10:32,205 gpep517 INFO Building wheel via backend poetry.core.masonry.api >2023-04-13 08:10:32,386 poetry.core.masonry.builders.wheel INFO Building wheel >2023-04-13 08:10:32,421 poetry.core.masonry.builders.wheel INFO Built rich-13.3.4-py3-none-any.whl >2023-04-13 08:10:32,421 gpep517 INFO The backend produced /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_9/wheel/rich-13.3.4-py3-none-any.whl > * Installing rich-13.3.4-py3-none-any.whl to /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_9/install >gpep517 install-wheel --destdir=/var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_9/install --interpreter=/usr/bin/python3.9 --prefix=/usr --optimize=all /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_9/wheel/rich-13.3.4-py3-none-any.whl >2023-04-13 08:10:32,525 gpep517 INFO Installing /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_9/wheel/rich-13.3.4-py3-none-any.whl into /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_9/install >2023-04-13 08:10:32,975 gpep517 INFO Installation complete > * python3_10: running distutils-r1_run_phase distutils-r1_python_compile > * Building the wheel for rich-13.3.4 via poetry.core.masonry.api >gpep517 build-wheel --backend poetry.core.masonry.api --output-fd 3 --wheel-dir /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_10/wheel >2023-04-13 08:10:33,235 gpep517 INFO Building wheel via backend poetry.core.masonry.api >2023-04-13 08:10:33,418 poetry.core.masonry.builders.wheel INFO Building wheel >2023-04-13 08:10:33,456 poetry.core.masonry.builders.wheel INFO Built rich-13.3.4-py3-none-any.whl >2023-04-13 08:10:33,457 gpep517 INFO The backend produced /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_10/wheel/rich-13.3.4-py3-none-any.whl > * Installing rich-13.3.4-py3-none-any.whl to /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_10/install >gpep517 install-wheel --destdir=/var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_10/install --interpreter=/usr/bin/python3.10 --prefix=/usr --optimize=all /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_10/wheel/rich-13.3.4-py3-none-any.whl >2023-04-13 08:10:33,558 gpep517 INFO Installing /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_10/wheel/rich-13.3.4-py3-none-any.whl into /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_10/install >2023-04-13 08:10:33,999 gpep517 INFO Installation complete > * python3_11: running distutils-r1_run_phase distutils-r1_python_compile > * Building the wheel for rich-13.3.4 via poetry.core.masonry.api >gpep517 build-wheel --backend poetry.core.masonry.api --output-fd 3 --wheel-dir /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_11/wheel >2023-04-13 08:10:34,266 gpep517 INFO Building wheel via backend poetry.core.masonry.api >2023-04-13 08:10:34,427 poetry.core.masonry.builders.wheel INFO Building wheel >2023-04-13 08:10:34,459 poetry.core.masonry.builders.wheel INFO Built rich-13.3.4-py3-none-any.whl >2023-04-13 08:10:34,459 gpep517 INFO The backend produced /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_11/wheel/rich-13.3.4-py3-none-any.whl > * Installing rich-13.3.4-py3-none-any.whl to /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_11/install >gpep517 install-wheel --destdir=/var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_11/install --interpreter=/usr/bin/python3.11 --prefix=/usr --optimize=all /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_11/wheel/rich-13.3.4-py3-none-any.whl >2023-04-13 08:10:34,561 gpep517 INFO Installing /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_11/wheel/rich-13.3.4-py3-none-any.whl into /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-python3_11/install >2023-04-13 08:10:35,025 gpep517 INFO Installation complete >>>> Source compiled. >>>> Test phase: dev-python/rich-13.3.4 > * pypy3: running distutils-r1_run_phase python_test >pypy3 -m pytest -vv -ra -l -Wdefault --color=no -o console_output_style=count -p no:cov -p no:flake8 -p no:flakes -p no:pylint -p no:markdown -p no:sugar -p no:xvfb -p no:tavern --deselect tests/test_console.py::test_size_can_fall_back_to_std_descriptors --deselect tests/test_inspect.py::test_inspect_integer_with_methods_python38_and_python39 --deselect tests/test_syntax.py::test_python_render_simple_indent_guides --deselect tests/test_syntax.py::test_python_render_line_range_indent_guides -p no:pytest-qt >============================= test session starts ============================== >platform linux -- Python 3.9.16[pypy-7.3.11-final], pytest-7.3.0, pluggy-1.0.0 -- /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4-pypy3/install/usr/bin/pypy3 >cachedir: .pytest_cache >rootdir: /var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4 >configfile: pyproject.toml >testpaths: tests >collecting ... collected 797 items / 9 deselected / 788 selected > >tests/test_align.py::test_bad_align_legal PASSED [ 1/788] >tests/test_align.py::test_repr PASSED [ 2/788] >tests/test_align.py::test_align_left PASSED [ 3/788] >tests/test_align.py::test_align_center PASSED [ 4/788] >tests/test_align.py::test_align_right PASSED [ 5/788] >tests/test_align.py::test_align_top PASSED [ 6/788] >tests/test_align.py::test_align_middle PASSED [ 7/788] >tests/test_align.py::test_align_bottom PASSED [ 8/788] >tests/test_align.py::test_align_center_middle PASSED [ 9/788] >tests/test_align.py::test_align_fit PASSED [ 10/788] >tests/test_align.py::test_align_right_style PASSED [ 11/788] >tests/test_align.py::test_measure PASSED [ 12/788] >tests/test_align.py::test_align_no_pad PASSED [ 13/788] >tests/test_align.py::test_align_width PASSED [ 14/788] >tests/test_align.py::test_shortcuts PASSED [ 15/788] >tests/test_align.py::test_vertical_center PASSED [ 16/788] >tests/test_ansi.py::test_decode FAILED [ 17/788] >tests/test_ansi.py::test_decode_example FAILED [ 18/788] >tests/test_ansi.py::test_decode_issue_2688[\x1b[31mFound 4 errors in 2 files (checked 18 source files)\x1b(B\x1b[m\n-Found 4 errors in 2 files (checked 18 source files)] PASSED [ 19/788] >tests/test_ansi.py::test_decode_issue_2688[Hallo-Hallo] PASSED [ 20/788] >tests/test_ansi.py::test_decode_issue_2688[\x1b(BHallo-Hallo] PASSED [ 21/788] >tests/test_ansi.py::test_decode_issue_2688[\x1b(JHallo-Hallo] PASSED [ 22/788] >tests/test_ansi.py::test_decode_issue_2688[\x1b(BHal\x1b(Jlo-Hallo] PASSED [ 23/788] >tests/test_bar.py::test_init PASSED [ 24/788] >tests/test_bar.py::test_update PASSED [ 25/788] >tests/test_bar.py::test_render FAILED [ 26/788] >tests/test_bar.py::test_measure PASSED [ 27/788] >tests/test_bar.py::test_zero_total PASSED [ 28/788] >tests/test_bar.py::test_pulse FAILED [ 29/788] >tests/test_bar.py::test_get_pulse_segments PASSED [ 30/788] >tests/test_block_bar.py::test_repr PASSED [ 31/788] >tests/test_block_bar.py::test_render FAILED [ 32/788] >tests/test_block_bar.py::test_measure PASSED [ 33/788] >tests/test_block_bar.py::test_zero_total PASSED [ 34/788] >tests/test_box.py::test_str PASSED [ 35/788] >tests/test_box.py::test_repr PASSED [ 36/788] >tests/test_box.py::test_get_top PASSED [ 37/788] >tests/test_box.py::test_get_row PASSED [ 38/788] >tests/test_box.py::test_get_bottom PASSED [ 39/788] >tests/test_box.py::test_box_substitute PASSED [ 40/788] >tests/test_card.py::test_card_render FAILED [ 41/788] >tests/test_cells.py::test_cell_len_long_string PASSED [ 42/788] >tests/test_cells.py::test_cell_len_short_string PASSED [ 43/788] >tests/test_cells.py::test_set_cell_size PASSED [ 44/788] >tests/test_cells.py::test_set_cell_size_infinite PASSED [ 45/788] >tests/test_color.py::test_str PASSED [ 46/788] >tests/test_color.py::test_repr PASSED [ 47/788] >tests/test_color.py::test_color_system_repr PASSED [ 48/788] >tests/test_color.py::test_rich PASSED [ 49/788] >tests/test_color.py::test_system PASSED [ 50/788] >tests/test_color.py::test_windows PASSED [ 51/788] >tests/test_color.py::test_truecolor PASSED [ 52/788] >tests/test_color.py::test_parse_success PASSED [ 53/788] >tests/test_color.py::test_from_triplet PASSED [ 54/788] >tests/test_color.py::test_from_rgb PASSED [ 55/788] >tests/test_color.py::test_from_ansi PASSED [ 56/788] >tests/test_color.py::test_default PASSED [ 57/788] >tests/test_color.py::test_parse_error PASSED [ 58/788] >tests/test_color.py::test_get_ansi_codes PASSED [ 59/788] >tests/test_color.py::test_downgrade PASSED [ 60/788] >tests/test_color.py::test_parse_rgb_hex PASSED [ 61/788] >tests/test_color.py::test_blend_rgb PASSED [ 62/788] >tests/test_color_triplet.py::test_hex PASSED [ 63/788] >tests/test_color_triplet.py::test_rgb PASSED [ 64/788] >tests/test_color_triplet.py::test_normalized PASSED [ 65/788] >tests/test_columns.py::test_render PASSED [ 66/788] >tests/test_columns_align.py::test_align PASSED [ 67/788] >tests/test_console.py::test_dumb_terminal PASSED [ 68/788] >tests/test_console.py::test_soft_wrap PASSED [ 69/788] >tests/test_console.py::test_16color_terminal PASSED [ 70/788] >tests/test_console.py::test_truecolor_terminal PASSED [ 71/788] >tests/test_console.py::test_kitty_terminal PASSED [ 72/788] >tests/test_console.py::test_console_options_update PASSED [ 73/788] >tests/test_console.py::test_console_options_update_height PASSED [ 74/788] >tests/test_console.py::test_init PASSED [ 75/788] >tests/test_console.py::test_size PASSED [ 76/788] >tests/test_console.py::test_repr PASSED [ 77/788] >tests/test_console.py::test_print PASSED [ 78/788] >tests/test_console.py::test_print_multiple PASSED [ 79/788] >tests/test_console.py::test_print_text PASSED [ 80/788] >tests/test_console.py::test_print_text_multiple PASSED [ 81/788] >tests/test_console.py::test_print_json FAILED [ 82/788] >tests/test_console.py::test_print_json_error PASSED [ 83/788] >tests/test_console.py::test_print_json_data FAILED [ 84/788] >tests/test_console.py::test_print_json_ensure_ascii FAILED [ 85/788] >tests/test_console.py::test_print_json_with_default_ensure_ascii FAILED [ 86/788] >tests/test_console.py::test_print_json_indent_none FAILED [ 87/788] >tests/test_console.py::test_console_null_file PASSED [ 88/788] >tests/test_console.py::test_log PASSED [ 89/788] >tests/test_console.py::test_log_milliseconds PASSED [ 90/788] >tests/test_console.py::test_print_empty PASSED [ 91/788] >tests/test_console.py::test_markup_highlight FAILED [ 92/788] >tests/test_console.py::test_print_style PASSED [ 93/788] >tests/test_console.py::test_show_cursor PASSED [ 94/788] >tests/test_console.py::test_clear PASSED [ 95/788] >tests/test_console.py::test_clear_no_terminal PASSED [ 96/788] >tests/test_console.py::test_get_style PASSED [ 97/788] >tests/test_console.py::test_get_style_default PASSED [ 98/788] >tests/test_console.py::test_get_style_error PASSED [ 99/788] >tests/test_console.py::test_render_error PASSED [100/788] >tests/test_console.py::test_control PASSED [101/788] >tests/test_console.py::test_capture PASSED [102/788] >tests/test_console.py::test_capture_and_record PASSED [103/788] >tests/test_console.py::test_input PASSED [104/788] >tests/test_console.py::test_input_password PASSED [105/788] >tests/test_console.py::test_status PASSED [106/788] >tests/test_console.py::test_justify_none PASSED [107/788] >tests/test_console.py::test_justify_left PASSED [108/788] >tests/test_console.py::test_justify_center PASSED [109/788] >tests/test_console.py::test_justify_right PASSED [110/788] >tests/test_console.py::test_justify_renderable_none PASSED [111/788] >tests/test_console.py::test_justify_renderable_left PASSED [112/788] >tests/test_console.py::test_justify_renderable_center PASSED [113/788] >tests/test_console.py::test_justify_renderable_right PASSED [114/788] >tests/test_console.py::test_render_broken_renderable PASSED [115/788] >tests/test_console.py::test_export_text PASSED [116/788] >tests/test_console.py::test_export_html PASSED [117/788] >tests/test_console.py::test_export_html_inline PASSED [118/788] >tests/test_console.py::test_export_svg PASSED [119/788] >tests/test_console.py::test_export_svg_specified_unique_id PASSED [120/788] >tests/test_console.py::test_save_svg PASSED [121/788] >tests/test_console.py::test_save_text PASSED [122/788] >tests/test_console.py::test_save_html PASSED [123/788] >tests/test_console.py::test_no_wrap PASSED [124/788] >tests/test_console.py::test_unicode_error PASSED [125/788] >tests/test_console.py::test_bell PASSED [126/788] >tests/test_console.py::test_pager PASSED [127/788] >tests/test_console.py::test_out PASSED [128/788] >tests/test_console.py::test_render_group PASSED [129/788] >tests/test_console.py::test_render_group_fit PASSED [130/788] >tests/test_console.py::test_get_time PASSED [131/788] >tests/test_console.py::test_console_style FAILED [132/788] >tests/test_console.py::test_no_color PASSED [133/788] >tests/test_console.py::test_quiet PASSED [134/788] >tests/test_console.py::test_no_nested_live PASSED [135/788] >tests/test_console.py::test_screen PASSED [136/788] >tests/test_console.py::test_screen_update PASSED [137/788] >tests/test_console.py::test_height PASSED [138/788] >tests/test_console.py::test_columns_env PASSED [139/788] >tests/test_console.py::test_lines_env PASSED [140/788] >tests/test_console.py::test_screen_update_class PASSED [141/788] >tests/test_console.py::test_is_alt_screen PASSED [142/788] >tests/test_console.py::test_set_console_title PASSED [143/788] >tests/test_console.py::test_update_screen PASSED [144/788] >tests/test_console.py::test_update_screen_lines PASSED [145/788] >tests/test_console.py::test_update_options_markup PASSED [146/788] >tests/test_console.py::test_print_width_zero PASSED [147/788] >tests/test_console.py::test_size_properties PASSED [148/788] >tests/test_console.py::test_print_newline_start PASSED [149/788] >tests/test_console.py::test_is_terminal_broken_file PASSED [150/788] >tests/test_console.py::test_detect_color_system PASSED [151/788] >tests/test_console.py::test_reset_height PASSED [152/788] >tests/test_console.py::test_render_lines_height_minus_vertical_pad_is_negative PASSED [153/788] >tests/test_console.py::test_recording_no_stdout_and_no_stderr_files PASSED [154/788] >tests/test_console.py::test_capturing_no_stdout_and_no_stderr_files PASSED [155/788] >tests/test_console.py::test_force_color PASSED [156/788] >tests/test_console.py::test_force_color_jupyter PASSED [157/788] >tests/test_constrain.py::test_width_of_none PASSED [158/788] >tests/test_containers.py::test_renderables_measure PASSED [159/788] >tests/test_containers.py::test_renderables_empty PASSED [160/788] >tests/test_containers.py::test_lines_rich_console PASSED [161/788] >tests/test_containers.py::test_lines_justify PASSED [162/788] >tests/test_control.py::test_control PASSED [163/788] >tests/test_control.py::test_strip_control_codes PASSED [164/788] >tests/test_control.py::test_escape_control_codes PASSED [165/788] >tests/test_control.py::test_control_move_to PASSED [166/788] >tests/test_control.py::test_control_move PASSED [167/788] >tests/test_control.py::test_move_to_column PASSED [168/788] >tests/test_control.py::test_title PASSED [169/788] >tests/test_emoji.py::test_no_emoji PASSED [170/788] >tests/test_emoji.py::test_str_repr PASSED [171/788] >tests/test_emoji.py::test_replace PASSED [172/788] >tests/test_emoji.py::test_render PASSED [173/788] >tests/test_emoji.py::test_variant PASSED [174/788] >tests/test_emoji.py::test_variant_non_default PASSED [175/788] >tests/test_file_proxy.py::test_empty_bytes PASSED [176/788] >tests/test_file_proxy.py::test_flush PASSED [177/788] >tests/test_file_proxy.py::test_new_lines PASSED [178/788] >tests/test_filesize.py::test_traditional PASSED [179/788] >tests/test_filesize.py::test_pick_unit_and_suffix PASSED [180/788] >tests/test_getfileno.py::test_get_fileno PASSED [181/788] >tests/test_getfileno.py::test_get_fileno_missing PASSED [182/788] >tests/test_getfileno.py::test_get_fileno_broken PASSED [183/788] >tests/test_highlighter.py::test_wrong_type PASSED [184/788] >tests/test_highlighter.py::test_highlight_regex[-spans0] PASSED [185/788] >tests/test_highlighter.py::test_highlight_regex[ -spans1] PASSED [186/788] >tests/test_highlighter.py::test_highlight_regex[<foo>-spans2] PASSED [187/788] >tests/test_highlighter.py::test_highlight_regex[<foo: 23>-spans3] PASSED [188/788] >tests/test_highlighter.py::test_highlight_regex[<foo: <bar: 23>>-spans4] PASSED [189/788] >tests/test_highlighter.py::test_highlight_regex[False True None-spans5] PASSED [190/788] >tests/test_highlighter.py::test_highlight_regex[foo=bar-spans6] PASSED [191/788] >tests/test_highlighter.py::test_highlight_regex[foo="bar"-spans7] PASSED [192/788] >tests/test_highlighter.py::test_highlight_regex[<Permission.WRITE|READ: 3>-spans8] PASSED [193/788] >tests/test_highlighter.py::test_highlight_regex[( )-spans9] PASSED [194/788] >tests/test_highlighter.py::test_highlight_regex[[ ]-spans10] PASSED [195/788] >tests/test_highlighter.py::test_highlight_regex[{ }-spans11] PASSED [196/788] >tests/test_highlighter.py::test_highlight_regex[ 1 -spans12] PASSED [197/788] >tests/test_highlighter.py::test_highlight_regex[ 1.2 -spans13] PASSED [198/788] >tests/test_highlighter.py::test_highlight_regex[ 0xff -spans14] PASSED [199/788] >tests/test_highlighter.py::test_highlight_regex[ 1e10 -spans15] PASSED [200/788] >tests/test_highlighter.py::test_highlight_regex[ 1j -spans16] PASSED [201/788] >tests/test_highlighter.py::test_highlight_regex[ 3.14j -spans17] PASSED [202/788] >tests/test_highlighter.py::test_highlight_regex[ (3.14+2.06j) -spans18] PASSED [203/788] >tests/test_highlighter.py::test_highlight_regex[ (3+2j) -spans19] PASSED [204/788] >tests/test_highlighter.py::test_highlight_regex[ (123456.4321-1234.5678j) -spans20] PASSED [205/788] >tests/test_highlighter.py::test_highlight_regex[ (-123123-2.1312342342423422e+25j) -spans21] PASSED [206/788] >tests/test_highlighter.py::test_highlight_regex[ /foo -spans22] PASSED [207/788] >tests/test_highlighter.py::test_highlight_regex[ /foo/bar.html -spans23] PASSED [208/788] >tests/test_highlighter.py::test_highlight_regex[01-23-45-67-89-AB-spans24] PASSED [209/788] >tests/test_highlighter.py::test_highlight_regex[01-23-45-FF-FE-67-89-AB-spans25] PASSED [210/788] >tests/test_highlighter.py::test_highlight_regex[01:23:45:67:89:AB-spans26] PASSED [211/788] >tests/test_highlighter.py::test_highlight_regex[01:23:45:FF:FE:67:89:AB-spans27] PASSED [212/788] >tests/test_highlighter.py::test_highlight_regex[0123.4567.89AB-spans28] PASSED [213/788] >tests/test_highlighter.py::test_highlight_regex[0123.45FF.FE67.89AB-spans29] PASSED [214/788] >tests/test_highlighter.py::test_highlight_regex[ed-ed-ed-ed-ed-ed-spans30] PASSED [215/788] >tests/test_highlighter.py::test_highlight_regex[ED-ED-ED-ED-ED-ED-spans31] PASSED [216/788] >tests/test_highlighter.py::test_highlight_regex[Ed-Ed-Ed-Ed-Ed-Ed-spans32] PASSED [217/788] >tests/test_highlighter.py::test_highlight_regex[0-00-1-01-2-02-spans33] PASSED [218/788] >tests/test_highlighter.py::test_highlight_regex[ https://example.org -spans34] PASSED [219/788] >tests/test_highlighter.py::test_highlight_regex[ http://example.org -spans35] PASSED [220/788] >tests/test_highlighter.py::test_highlight_regex[ http://example.org/index.html -spans36] PASSED [221/788] >tests/test_highlighter.py::test_highlight_regex[No place like 127.0.0.1-spans37] PASSED [222/788] >tests/test_highlighter.py::test_highlight_regex[''-spans38] PASSED [223/788] >tests/test_highlighter.py::test_highlight_regex['hello'-spans39] PASSED [224/788] >tests/test_highlighter.py::test_highlight_regex['''hello'''-spans40] PASSED [225/788] >tests/test_highlighter.py::test_highlight_regex[""-spans41] PASSED [226/788] >tests/test_highlighter.py::test_highlight_regex["hello"-spans42] PASSED [227/788] >tests/test_highlighter.py::test_highlight_regex["""hello"""-spans43] PASSED [228/788] >tests/test_highlighter.py::test_highlight_regex[\\'foo'-spans44] PASSED [229/788] >tests/test_highlighter.py::test_highlight_regex[it's no 'string'-spans45] PASSED [230/788] >tests/test_highlighter.py::test_highlight_regex[78351748-9b32-4e08-ad3e-7e9ff124d541-spans46] PASSED [231/788] >tests/test_highlighter.py::test_highlight_json_with_indent PASSED [232/788] >tests/test_highlighter.py::test_highlight_json_string_only PASSED [233/788] >tests/test_highlighter.py::test_highlight_json_empty_string_only PASSED [234/788] >tests/test_highlighter.py::test_highlight_json_no_indent PASSED [235/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[2008-08-spans0] PASSED [236/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[2008-08-30-spans1] PASSED [237/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[20080830-spans2] PASSED [238/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[2008-243-spans3] PASSED [239/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[2008243-spans4] PASSED [240/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[2008-W35-spans5] PASSED [241/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[2008W35-spans6] PASSED [242/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[2008-W35-6-spans7] PASSED [243/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[2008W356-spans8] PASSED [244/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[17:21-spans9] PASSED [245/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[1721-spans10] PASSED [246/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[172159-spans11] PASSED [247/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[Z-spans12] PASSED [248/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[+07-spans13] PASSED [249/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[+07:00-spans14] PASSED [250/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[17:21:59+07:00-spans15] PASSED [251/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[172159+0700-spans16] PASSED [252/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[172159+07-spans17] PASSED [253/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[2008-08-30 17:21:59-spans18] PASSED [254/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[20080830 172159-spans19] PASSED [255/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[2008-08-30-spans20] PASSED [256/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[2008-08-30+07:00-spans21] PASSED [257/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[01:45:36-spans22] PASSED [258/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[01:45:36.123+07:00-spans23] PASSED [259/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[01:45:36.123+07:00-spans24] PASSED [260/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[2008-08-30T01:45:36-spans25] PASSED [261/788] >tests/test_highlighter.py::test_highlight_iso8601_regex[2008-08-30T01:45:36.123Z-spans26] PASSED [262/788] >tests/test_inspect.py::test_render PASSED [263/788] >tests/test_inspect.py::test_inspect_text SKIPPED (rendered differently on pypy3) [264/788] >tests/test_inspect.py::test_inspect_empty_dict SKIPPED (rendered differently on pypy3) [265/788] >tests/test_inspect.py::test_inspect_builtin_function_except_python311 SKIPPED (rendered differently on pypy3) [266/788] >tests/test_inspect.py::test_inspect_builtin_function_only_python311 SKIPPED (rendered differently on pypy3) [267/788] >tests/test_inspect.py::test_inspect_coroutine SKIPPED (rendered differently on pypy3) [268/788] >tests/test_inspect.py::test_inspect_integer PASSED [269/788] >tests/test_inspect.py::test_inspect_integer_with_value PASSED [270/788] >tests/test_inspect.py::test_inspect_integer_with_methods_python310only SKIPPED (rendered differently on py3.9) [271/788] >tests/test_inspect.py::test_inspect_integer_with_methods_python311_and_above SKIPPED (rendered differently on py3.9) [272/788] >tests/test_inspect.py::test_broken_call_attr SKIPPED (rendered differently on pypy3) [273/788] >tests/test_inspect.py::test_inspect_swig_edge_case PASSED [274/788] >tests/test_inspect.py::test_inspect_module_with_class PASSED [275/788] >tests/test_inspect.py::test_can_handle_special_characters_in_docstrings[\x07-\\a] PASSED [276/788] >tests/test_inspect.py::test_can_handle_special_characters_in_docstrings[\x08-\\b] PASSED [277/788] >tests/test_inspect.py::test_can_handle_special_characters_in_docstrings[\x0c-\\f] PASSED [278/788] >tests/test_inspect.py::test_can_handle_special_characters_in_docstrings[\r-\\r] PASSED [279/788] >tests/test_inspect.py::test_can_handle_special_characters_in_docstrings[\x0b-\\v] PASSED [280/788] >tests/test_inspect.py::test_object_types_mro[object-expected_result0] PASSED [281/788] >tests/test_inspect.py::test_object_types_mro[obj1-expected_result1] PASSED [282/788] >tests/test_inspect.py::test_object_types_mro[hi-expected_result2] PASSED [283/788] >tests/test_inspect.py::test_object_types_mro[str-expected_result3] PASSED [284/788] >tests/test_inspect.py::test_object_types_mro[obj4-expected_result4] PASSED [285/788] >tests/test_inspect.py::test_object_types_mro[Foo-expected_result5] PASSED [286/788] >tests/test_inspect.py::test_object_types_mro[obj6-expected_result6] PASSED [287/788] >tests/test_inspect.py::test_object_types_mro[FooSubclass-expected_result7] PASSED [288/788] >tests/test_inspect.py::test_object_types_mro_as_strings[hi-expected_result0] PASSED [289/788] >tests/test_inspect.py::test_object_types_mro_as_strings[str-expected_result1] PASSED [290/788] >tests/test_inspect.py::test_object_types_mro_as_strings[obj2-expected_result2] PASSED [291/788] >tests/test_inspect.py::test_object_types_mro_as_strings[Foo-expected_result3] PASSED [292/788] >tests/test_inspect.py::test_object_types_mro_as_strings[obj4-expected_result4] PASSED [293/788] >tests/test_inspect.py::test_object_types_mro_as_strings[FooSubclass-expected_result5] PASSED [294/788] >tests/test_inspect.py::test_object_is_one_of_types[hi-types0-True] PASSED [295/788] >tests/test_inspect.py::test_object_is_one_of_types[str-types1-True] PASSED [296/788] >tests/test_inspect.py::test_object_is_one_of_types[hi-types2-True] PASSED [297/788] >tests/test_inspect.py::test_object_is_one_of_types[str-types3-True] PASSED [298/788] >tests/test_inspect.py::test_object_is_one_of_types[obj4-types4-True] PASSED [299/788] >tests/test_inspect.py::test_object_is_one_of_types[Foo-types5-True] PASSED [300/788] >tests/test_inspect.py::test_object_is_one_of_types[obj6-types6-True] PASSED [301/788] >tests/test_inspect.py::test_object_is_one_of_types[Foo-types7-True] PASSED [302/788] >tests/test_inspect.py::test_object_is_one_of_types[obj8-types8-False] PASSED [303/788] >tests/test_inspect.py::test_object_is_one_of_types[Foo-types9-False] PASSED [304/788] >tests/test_inspect.py::test_object_is_one_of_types[obj10-types10-True] PASSED [305/788] >tests/test_inspect.py::test_object_is_one_of_types[Foo-types11-True] PASSED [306/788] >tests/test_json.py::test_print_json_data_with_default PASSED [307/788] >tests/test_jupyter.py::test_jupyter PASSED [308/788] >tests/test_jupyter.py::test_jupyter_columns_env PASSED [309/788] >tests/test_jupyter.py::test_jupyter_lines_env PASSED [310/788] >tests/test_layout.py::test_no_layout PASSED [311/788] >tests/test_layout.py::test_add_split PASSED [312/788] >tests/test_layout.py::test_unsplit PASSED [313/788] >tests/test_layout.py::test_render PASSED [314/788] >tests/test_layout.py::test_tree PASSED [315/788] >tests/test_layout.py::test_refresh_screen PASSED [316/788] >tests/test_live.py::test_live_state PASSED [317/788] >tests/test_live.py::test_growing_display PASSED [318/788] >tests/test_live.py::test_growing_display_transient PASSED [319/788] >tests/test_live.py::test_growing_display_overflow_ellipsis PASSED [320/788] >tests/test_live.py::test_growing_display_overflow_crop PASSED [321/788] >tests/test_live.py::test_growing_display_overflow_visible PASSED [322/788] >tests/test_live.py::test_growing_display_autorefresh PASSED [323/788] >tests/test_live.py::test_growing_display_console_redirect PASSED [324/788] >tests/test_live.py::test_growing_display_file_console PASSED [325/788] >tests/test_live.py::test_live_screen PASSED [326/788] >tests/test_live_render.py::test_renderable PASSED [327/788] >tests/test_live_render.py::test_position_cursor PASSED [328/788] >tests/test_live_render.py::test_restore_cursor PASSED [329/788] >tests/test_live_render.py::test_rich_console PASSED [330/788] >tests/test_log.py::test_log FAILED [331/788] >tests/test_log.py::test_log_caller_frame_info PASSED [332/788] >tests/test_log.py::test_justify PASSED [333/788] >tests/test_logging.py::test_exception PASSED [334/788] >tests/test_logging.py::test_exception_with_extra_lines PASSED [335/788] >tests/test_logging.py::test_stderr_and_stdout_are_none PASSED [336/788] >tests/test_logging.py::test_markup_and_highlight PASSED [337/788] >tests/test_markdown.py::test_markdown_render FAILED [338/788] >tests/test_markdown.py::test_inline_code FAILED [339/788] >tests/test_markdown_no_hyperlinks.py::test_markdown_render FAILED [340/788] >tests/test_markup.py::test_re_no_match PASSED [341/788] >tests/test_markup.py::test_re_match PASSED [342/788] >tests/test_markup.py::test_escape PASSED [343/788] >tests/test_markup.py::test_render_escape PASSED [344/788] >tests/test_markup.py::test_parse PASSED [345/788] >tests/test_markup.py::test_parse_link PASSED [346/788] >tests/test_markup.py::test_render PASSED [347/788] >tests/test_markup.py::test_render_not_tags PASSED [348/788] >tests/test_markup.py::test_render_link PASSED [349/788] >tests/test_markup.py::test_render_combine PASSED [350/788] >tests/test_markup.py::test_render_overlap PASSED [351/788] >tests/test_markup.py::test_adjoint PASSED [352/788] >tests/test_markup.py::test_render_close PASSED [353/788] >tests/test_markup.py::test_render_close_ambiguous PASSED [354/788] >tests/test_markup.py::test_markup_error PASSED [355/788] >tests/test_markup.py::test_markup_escape PASSED [356/788] >tests/test_markup.py::test_escape_escape PASSED [357/788] >tests/test_markup.py::test_events PASSED [358/788] >tests/test_markup.py::test_events_broken PASSED [359/788] >tests/test_markup.py::test_render_meta PASSED [360/788] >tests/test_measure.py::test_span PASSED [361/788] >tests/test_measure.py::test_no_renderable PASSED [362/788] >tests/test_measure.py::test_measure_renderables PASSED [363/788] >tests/test_measure.py::test_clamp PASSED [364/788] >tests/test_null_file.py::test_null_file PASSED [365/788] >tests/test_padding.py::test_repr PASSED [366/788] >tests/test_padding.py::test_indent PASSED [367/788] >tests/test_padding.py::test_unpack PASSED [368/788] >tests/test_padding.py::test_expand_false PASSED [369/788] >tests/test_padding.py::test_rich_console PASSED [370/788] >tests/test_palette.py::test_rich_cast PASSED [371/788] >tests/test_panel.py::test_render_panel[panel0-\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502Hello, World \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n] PASSED [372/788] >tests/test_panel.py::test_render_panel[panel1-\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502Hello, World\u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n] PASSED [373/788] >tests/test_panel.py::test_render_panel[panel2-\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502Hello, World\u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n] PASSED [374/788] >tests/test_panel.py::test_render_panel[panel3-\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502Hello,\u2502\n\u2502World \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n] PASSED [375/788] >tests/test_panel.py::test_render_panel[panel4-\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\u2502\n\u2502\u2502Hello, World \u2502\u2502\n\u2502\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n] PASSED [376/788] >tests/test_panel.py::test_render_panel[panel5-\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 FOO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502Hello, World \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n] PASSED [377/788] >tests/test_panel.py::test_render_panel[panel6-\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502Hello, World \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 FOO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n] PASSED [378/788] >tests/test_panel.py::test_console_width PASSED [379/788] >tests/test_panel.py::test_fixed_width PASSED [380/788] >tests/test_panel.py::test_render_size PASSED [381/788] >tests/test_pick.py::test_pick_bool PASSED [382/788] >tests/test_pretty.py::test_install PASSED [383/788] >tests/test_pretty.py::test_install_max_depth PASSED [384/788] >tests/test_pretty.py::test_ipy_display_hook__repr_html PASSED [385/788] >tests/test_pretty.py::test_ipy_display_hook__multiple_special_reprs PASSED [386/788] >tests/test_pretty.py::test_ipy_display_hook__no_special_repr_methods PASSED [387/788] >tests/test_pretty.py::test_ipy_display_hook__special_repr_raises_exception PASSED [388/788] >tests/test_pretty.py::test_ipy_display_hook__console_renderables_on_newline PASSED [389/788] >tests/test_pretty.py::test_pretty PASSED [390/788] >tests/test_pretty.py::test_pretty_dataclass PASSED [391/788] >tests/test_pretty.py::test_empty_dataclass PASSED [392/788] >tests/test_pretty.py::test_pretty_namedtuple PASSED [393/788] >tests/test_pretty.py::test_pretty_namedtuple_length_one_no_trailing_comma PASSED [394/788] >tests/test_pretty.py::test_pretty_namedtuple_empty PASSED [395/788] >tests/test_pretty.py::test_pretty_namedtuple_custom_repr PASSED [396/788] >tests/test_pretty.py::test_pretty_namedtuple_fields_invalid_type PASSED [397/788] >tests/test_pretty.py::test_pretty_namedtuple_max_depth PASSED [398/788] >tests/test_pretty.py::test_small_width PASSED [399/788] >tests/test_pretty.py::test_ansi_in_pretty_repr PASSED [400/788] >tests/test_pretty.py::test_broken_repr PASSED [401/788] >tests/test_pretty.py::test_broken_getattr PASSED [402/788] >tests/test_pretty.py::test_reference_cycle_container PASSED [403/788] >tests/test_pretty.py::test_reference_cycle_namedtuple PASSED [404/788] >tests/test_pretty.py::test_reference_cycle_dataclass PASSED [405/788] >tests/test_pretty.py::test_reference_cycle_attrs PASSED [406/788] >tests/test_pretty.py::test_reference_cycle_custom_repr PASSED [407/788] >tests/test_pretty.py::test_max_depth PASSED [408/788] >tests/test_pretty.py::test_max_depth_rich_repr PASSED [409/788] >tests/test_pretty.py::test_max_depth_attrs PASSED [410/788] >tests/test_pretty.py::test_max_depth_dataclass PASSED [411/788] >tests/test_pretty.py::test_defaultdict PASSED [412/788] >tests/test_pretty.py::test_array PASSED [413/788] >tests/test_pretty.py::test_tuple_of_one PASSED [414/788] >tests/test_pretty.py::test_node PASSED [415/788] >tests/test_pretty.py::test_indent_lines PASSED [416/788] >tests/test_pretty.py::test_pprint PASSED [417/788] >tests/test_pretty.py::test_pprint_max_values PASSED [418/788] >tests/test_pretty.py::test_pprint_max_items PASSED [419/788] >tests/test_pretty.py::test_pprint_max_string PASSED [420/788] >tests/test_pretty.py::test_tuples PASSED [421/788] >tests/test_pretty.py::test_newline PASSED [422/788] >tests/test_pretty.py::test_empty_repr PASSED [423/788] >tests/test_pretty.py::test_attrs PASSED [424/788] >tests/test_pretty.py::test_attrs_empty PASSED [425/788] >tests/test_pretty.py::test_attrs_broken PASSED [426/788] >tests/test_pretty.py::test_attrs_broken_310 SKIPPED (rendered differently on py3.9) [427/788] >tests/test_pretty.py::test_user_dict PASSED [428/788] >tests/test_pretty.py::test_lying_attribute PASSED [429/788] >tests/test_pretty.py::test_measure_pretty PASSED [430/788] >tests/test_pretty.py::test_tuple_rich_repr PASSED [431/788] >tests/test_pretty.py::test_tuple_rich_repr_default PASSED [432/788] >tests/test_progress.py::test_bar_columns PASSED [433/788] >tests/test_progress.py::test_text_column PASSED [434/788] >tests/test_progress.py::test_time_elapsed_column PASSED [435/788] >tests/test_progress.py::test_time_remaining_column PASSED [436/788] >tests/test_progress.py::test_compact_time_remaining_column[None---:--] PASSED [437/788] >tests/test_progress.py::test_compact_time_remaining_column[0-00:00] PASSED [438/788] >tests/test_progress.py::test_compact_time_remaining_column[59-00:59] PASSED [439/788] >tests/test_progress.py::test_compact_time_remaining_column[71-01:11] PASSED [440/788] >tests/test_progress.py::test_compact_time_remaining_column[4210-1:10:10] PASSED [441/788] >tests/test_progress.py::test_time_remaining_column_elapsed_when_finished PASSED [442/788] >tests/test_progress.py::test_renderable_column PASSED [443/788] >tests/test_progress.py::test_spinner_column PASSED [444/788] >tests/test_progress.py::test_download_progress_uses_decimal_units PASSED [445/788] >tests/test_progress.py::test_download_progress_uses_binary_units PASSED [446/788] >tests/test_progress.py::test_task_ids PASSED [447/788] >tests/test_progress.py::test_finished PASSED [448/788] >tests/test_progress.py::test_expand_bar PASSED [449/788] >tests/test_progress.py::test_progress_with_none_total_renders_a_pulsing_bar PASSED [450/788] >tests/test_progress.py::test_render PASSED [451/788] >tests/test_progress.py::test_track PASSED [452/788] >tests/test_progress.py::test_progress_track PASSED [453/788] >tests/test_progress.py::test_columns PASSED [454/788] >tests/test_progress.py::test_using_default_columns PASSED [455/788] >tests/test_progress.py::test_task_create PASSED [456/788] >tests/test_progress.py::test_task_start PASSED [457/788] >tests/test_progress.py::test_task_zero_total PASSED [458/788] >tests/test_progress.py::test_progress_create PASSED [459/788] >tests/test_progress.py::test_track_thread PASSED [460/788] >tests/test_progress.py::test_reset PASSED [461/788] >tests/test_progress.py::test_progress_max_refresh PASSED [462/788] >tests/test_progress.py::test_live_is_started_if_progress_is_enabled PASSED [463/788] >tests/test_progress.py::test_live_is_not_started_if_progress_is_disabled PASSED [464/788] >tests/test_progress.py::test_no_output_if_progress_is_disabled PASSED [465/788] >tests/test_progress.py::test_open PASSED [466/788] >tests/test_progress.py::test_open_text_mode PASSED [467/788] >tests/test_progress.py::test_wrap_file PASSED [468/788] >tests/test_progress.py::test_wrap_file_task_total PASSED [469/788] >tests/test_progress.py::test_task_progress_column_speed PASSED [470/788] >tests/test_prompt.py::test_prompt_str PASSED [471/788] >tests/test_prompt.py::test_prompt_str_default PASSED [472/788] >tests/test_prompt.py::test_prompt_int PASSED [473/788] >tests/test_prompt.py::test_prompt_confirm_no PASSED [474/788] >tests/test_prompt.py::test_prompt_confirm_yes PASSED [475/788] >tests/test_prompt.py::test_prompt_confirm_default PASSED [476/788] >tests/test_protocol.py::test_rich_cast PASSED [477/788] >tests/test_protocol.py::test_rich_cast_fake PASSED [478/788] >tests/test_protocol.py::test_rich_cast_container PASSED [479/788] >tests/test_protocol.py::test_abc PASSED [480/788] >tests/test_protocol.py::test_cast_deep PASSED [481/788] >tests/test_protocol.py::test_cast_recursive PASSED [482/788] >tests/test_ratio.py::test_ratio_reduce[20-ratios0-maximums0-values0-result0] PASSED [483/788] >tests/test_ratio.py::test_ratio_reduce[20-ratios1-maximums1-values1-result1] PASSED [484/788] >tests/test_ratio.py::test_ratio_reduce[20-ratios2-maximums2-values2-result2] PASSED [485/788] >tests/test_ratio.py::test_ratio_reduce[3-ratios3-maximums3-values3-result3] PASSED [486/788] >tests/test_ratio.py::test_ratio_reduce[3-ratios4-maximums4-values4-result4] PASSED [487/788] >tests/test_ratio.py::test_ratio_reduce[3-ratios5-maximums5-values5-result5] PASSED [488/788] >tests/test_ratio.py::test_ratio_resolve PASSED [489/788] >tests/test_repr.py::test_rich_repr PASSED [490/788] >tests/test_repr.py::test_rich_repr_positional_only PASSED [491/788] >tests/test_repr.py::test_rich_angular PASSED [492/788] >tests/test_repr.py::test_rich_repr_auto PASSED [493/788] >tests/test_repr.py::test_rich_repr_auto_angular PASSED [494/788] >tests/test_repr.py::test_broken_egg PASSED [495/788] >tests/test_repr.py::test_rich_pretty PASSED [496/788] >tests/test_repr.py::test_rich_pretty_angular PASSED [497/788] >tests/test_rich_print.py::test_get_console PASSED [498/788] >tests/test_rich_print.py::test_reconfigure_console PASSED [499/788] >tests/test_rich_print.py::test_rich_print PASSED [500/788] >tests/test_rich_print.py::test_rich_print_json PASSED [501/788] >tests/test_rich_print.py::test_rich_print_json_round_trip PASSED [502/788] >tests/test_rich_print.py::test_rich_print_json_no_truncation PASSED [503/788] >tests/test_rich_print.py::test_rich_print_X PASSED [504/788] >tests/test_rule.py::test_rule PASSED [505/788] >tests/test_rule.py::test_rule_error PASSED [506/788] >tests/test_rule.py::test_rule_align PASSED [507/788] >tests/test_rule.py::test_rule_cjk PASSED [508/788] >tests/test_rule.py::test_rule_not_enough_space_for_title_text[center-\u2500\u2500\u2500\n] PASSED [509/788] >tests/test_rule.py::test_rule_not_enough_space_for_title_text[left-\u2026 \u2500\n] PASSED [510/788] >tests/test_rule.py::test_rule_not_enough_space_for_title_text[right-\u2500 \u2026\n] PASSED [511/788] >tests/test_rule.py::test_rule_center_aligned_title_not_enough_space_for_rule PASSED [512/788] >tests/test_rule.py::test_rule_side_aligned_not_enough_space_for_rule[left] PASSED [513/788] >tests/test_rule.py::test_rule_side_aligned_not_enough_space_for_rule[right] PASSED [514/788] >tests/test_rule.py::test_rule_just_enough_width_available_for_title[center-\u2500 \u2026 \u2500\n] PASSED [515/788] >tests/test_rule.py::test_rule_just_enough_width_available_for_title[left-AB\u2026 \u2500\n] PASSED [516/788] >tests/test_rule.py::test_rule_just_enough_width_available_for_title[right-\u2500 AB\u2026\n] PASSED [517/788] >tests/test_rule.py::test_characters PASSED [518/788] >tests/test_rule.py::test_repr PASSED [519/788] >tests/test_rule.py::test_error PASSED [520/788] >tests/test_rule_in_table.py::test_rule_in_unexpanded_table[expand_kwarg0] PASSED [521/788] >tests/test_rule_in_table.py::test_rule_in_unexpanded_table[expand_kwarg1] PASSED [522/788] >tests/test_rule_in_table.py::test_rule_in_expanded_table PASSED [523/788] >tests/test_rule_in_table.py::test_rule_in_ratio_table PASSED [524/788] >tests/test_screen.py::test_screen PASSED [525/788] >tests/test_segment.py::test_repr PASSED [526/788] >tests/test_segment.py::test_line PASSED [527/788] >tests/test_segment.py::test_apply_style PASSED [528/788] >tests/test_segment.py::test_split_lines PASSED [529/788] >tests/test_segment.py::test_split_and_crop_lines PASSED [530/788] >tests/test_segment.py::test_adjust_line_length PASSED [531/788] >tests/test_segment.py::test_get_line_length PASSED [532/788] >tests/test_segment.py::test_get_shape PASSED [533/788] >tests/test_segment.py::test_set_shape PASSED [534/788] >tests/test_segment.py::test_simplify PASSED [535/788] >tests/test_segment.py::test_filter_control PASSED [536/788] >tests/test_segment.py::test_strip_styles PASSED [537/788] >tests/test_segment.py::test_strip_links PASSED [538/788] >tests/test_segment.py::test_remove_color PASSED [539/788] >tests/test_segment.py::test_is_control PASSED [540/788] >tests/test_segment.py::test_segments_renderable PASSED [541/788] >tests/test_segment.py::test_divide PASSED [542/788] >tests/test_segment.py::test_divide_complex FAILED [543/788] >tests/test_segment.py::test_divide_emoji PASSED [544/788] >tests/test_segment.py::test_divide_edge PASSED [545/788] >tests/test_segment.py::test_divide_edge_2 PASSED [546/788] >tests/test_segment.py::test_split_cells_emoji[XX-4-result0] PASSED [547/788] >tests/test_segment.py::test_split_cells_emoji[X-1-result1] PASSED [548/788] >tests/test_segment.py::test_split_cells_emoji[\U0001f4a9-1-result2] PASSED [549/788] >tests/test_segment.py::test_split_cells_emoji[XY-1-result3] PASSED [550/788] >tests/test_segment.py::test_split_cells_emoji[\U0001f4a9X-1-result4] PASSED [551/788] >tests/test_segment.py::test_split_cells_emoji[\U0001f4a9\U0001f4a9-1-result5] PASSED [552/788] >tests/test_segment.py::test_split_cells_emoji[X\U0001f4a9Y-2-result6] PASSED [553/788] >tests/test_segment.py::test_split_cells_emoji[X\U0001f4a9YZ-2-result7] PASSED [554/788] >tests/test_segment.py::test_split_cells_emoji[X\U0001f4a9\U0001f4a9Z-2-result8] PASSED [555/788] >tests/test_segment.py::test_split_cells_emoji[X\U0001f4a9\U0001f4a9Z-3-result9] PASSED [556/788] >tests/test_segment.py::test_split_cells_emoji[X\U0001f4a9\U0001f4a9Z-4-result10] PASSED [557/788] >tests/test_segment.py::test_split_cells_emoji[X\U0001f4a9\U0001f4a9Z-5-result11] PASSED [558/788] >tests/test_segment.py::test_split_cells_emoji[X\U0001f4a9\U0001f4a9Z-6-result12] PASSED [559/788] >tests/test_segment.py::test_split_cells_emoji[XYZABC\U0001f4a9\U0001f4a9-6-result13] PASSED [560/788] >tests/test_segment.py::test_split_cells_emoji[XYZABC\U0001f4a9\U0001f4a9-7-result14] PASSED [561/788] >tests/test_segment.py::test_split_cells_emoji[XYZABC\U0001f4a9\U0001f4a9-8-result15] PASSED [562/788] >tests/test_segment.py::test_split_cells_emoji[XYZABC\U0001f4a9\U0001f4a9-9-result16] PASSED [563/788] >tests/test_segment.py::test_split_cells_emoji[XYZABC\U0001f4a9\U0001f4a9-10-result17] PASSED [564/788] >tests/test_segment.py::test_split_cells_emoji[\U0001f4a9\U0001f4a9\U0001f4a9\U0001f4a9\U0001f4a9-3-result18] PASSED [565/788] >tests/test_segment.py::test_split_cells_emoji[\U0001f4a9\U0001f4a9\U0001f4a9\U0001f4a9\U0001f4a9-4-result19] PASSED [566/788] >tests/test_segment.py::test_split_cells_emoji[\U0001f4a9X\U0001f4a9Y\U0001f4a9Z\U0001f4a9A\U0001f4a9-4-result20] PASSED [567/788] >tests/test_segment.py::test_split_cells_emoji[XYZABC-4-result21] PASSED [568/788] >tests/test_segment.py::test_split_cells_emoji[XYZABC-5-result22] PASSED [569/788] >tests/test_segment.py::test_split_cells_emoji[a1\u3042\uff11\uff11bcdaef-9-result23] PASSED [570/788] >tests/test_segment.py::test_segment_lines_renderable PASSED [571/788] >tests/test_segment.py::test_align_top PASSED [572/788] >tests/test_segment.py::test_align_middle PASSED [573/788] >tests/test_segment.py::test_align_bottom PASSED [574/788] >tests/test_spinner.py::test_spinner_create PASSED [575/788] >tests/test_spinner.py::test_spinner_render PASSED [576/788] >tests/test_spinner.py::test_spinner_update PASSED [577/788] >tests/test_spinner.py::test_rich_measure PASSED [578/788] >tests/test_spinner.py::test_spinner_markup PASSED [579/788] >tests/test_stack.py::test_stack PASSED [580/788] >tests/test_status.py::test_status PASSED [581/788] >tests/test_status.py::test_renderable PASSED [582/788] >tests/test_style.py::test_str PASSED [583/788] >tests/test_style.py::test_ansi_codes PASSED [584/788] >tests/test_style.py::test_repr PASSED [585/788] >tests/test_style.py::test_eq PASSED [586/788] >tests/test_style.py::test_hash PASSED [587/788] >tests/test_style.py::test_empty PASSED [588/788] >tests/test_style.py::test_bool PASSED [589/788] >tests/test_style.py::test_color_property PASSED [590/788] >tests/test_style.py::test_bgcolor_property PASSED [591/788] >tests/test_style.py::test_parse PASSED [592/788] >tests/test_style.py::test_link_id PASSED [593/788] >tests/test_style.py::test_get_html_style PASSED [594/788] >tests/test_style.py::test_chain PASSED [595/788] >tests/test_style.py::test_copy PASSED [596/788] >tests/test_style.py::test_render PASSED [597/788] >tests/test_style.py::test_test PASSED [598/788] >tests/test_style.py::test_add PASSED [599/788] >tests/test_style.py::test_iadd PASSED [600/788] >tests/test_style.py::test_style_stack PASSED [601/788] >tests/test_style.py::test_pick_first PASSED [602/788] >tests/test_style.py::test_background_style PASSED [603/788] >tests/test_style.py::test_without_color PASSED [604/788] >tests/test_style.py::test_meta PASSED [605/788] >tests/test_style.py::test_from_meta PASSED [606/788] >tests/test_style.py::test_on PASSED [607/788] >tests/test_style.py::test_clear_meta_and_links PASSED [608/788] >tests/test_styled.py::test_styled PASSED [609/788] >tests/test_syntax.py::test_blank_lines FAILED [610/788] >tests/test_syntax.py::test_python_render FAILED [611/788] >tests/test_syntax.py::test_python_render_simple FAILED [612/788] >tests/test_syntax.py::test_python_render_simple_passing_lexer_instance FAILED [613/788] >tests/test_syntax.py::test_python_render_indent_guides FAILED [614/788] >tests/test_syntax.py::test_pygments_syntax_theme_non_str PASSED [615/788] >tests/test_syntax.py::test_pygments_syntax_theme PASSED [616/788] >tests/test_syntax.py::test_get_line_color_none PASSED [617/788] >tests/test_syntax.py::test_highlight_background_color PASSED [618/788] >tests/test_syntax.py::test_get_number_styles PASSED [619/788] >tests/test_syntax.py::test_get_style_for_token PASSED [620/788] >tests/test_syntax.py::test_option_no_wrap FAILED [621/788] >tests/test_syntax.py::test_syntax_highlight_ranges FAILED [622/788] >tests/test_syntax.py::test_ansi_theme PASSED [623/788] >tests/test_syntax.py::test_from_path PASSED [624/788] >tests/test_syntax.py::test_from_path_unknown_lexer PASSED [625/788] >tests/test_syntax.py::test_from_path_lexer_override PASSED [626/788] >tests/test_syntax.py::test_from_path_lexer_override_invalid_lexer PASSED [627/788] >tests/test_syntax.py::test_syntax_guess_lexer PASSED [628/788] >tests/test_syntax.py::test_syntax_padding PASSED [629/788] >tests/test_syntax.py::test_syntax_measure PASSED [630/788] >tests/test_table.py::test_render_table PASSED [631/788] >tests/test_table.py::test_not_renderable PASSED [632/788] >tests/test_table.py::test_init_append_column PASSED [633/788] >tests/test_table.py::test_rich_measure PASSED [634/788] >tests/test_table.py::test_min_width PASSED [635/788] >tests/test_table.py::test_no_columns PASSED [636/788] >tests/test_table.py::test_get_row_style PASSED [637/788] >tests/test_table.py::test_vertical_align_top PASSED [638/788] >tests/test_table.py::test_table_show_header_false_substitution[None- 1 2 \n 3 4 \n] PASSED [639/788] >tests/test_table.py::test_table_show_header_false_substitution[box1-\u250c\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2510\n\u2502 1 \u2502 2 \u2502\n\u2502 3 \u2502 4 \u2502\n\u2514\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2518\n] PASSED [640/788] >tests/test_table.py::test_table_show_header_false_substitution[box2-\u250c\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2510\n\u2502 1 \u2502 2 \u2502\n\u2502 3 \u2502 4 \u2502\n\u2514\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2518\n] PASSED [641/788] >tests/test_table.py::test_table_show_header_false_substitution[box3- \u2577 \n 1 \u2502 2 \n 3 \u2502 4 \n \u2575 \n] PASSED [642/788] >tests/test_table.py::test_table_show_header_false_substitution[box4- \u2577 \n 1 \u2502 2 \n 3 \u2502 4 \n \u2575 \n] PASSED [643/788] >tests/test_table.py::test_table_show_header_false_substitution[box5-+---+---+\n| 1 | 2 |\n| 3 | 4 |\n+---+---+\n] PASSED [644/788] >tests/test_table.py::test_section PASSED [645/788] >tests/test_text.py::test_span PASSED [646/788] >tests/test_text.py::test_span_split PASSED [647/788] >tests/test_text.py::test_span_move PASSED [648/788] >tests/test_text.py::test_span_right_crop PASSED [649/788] >tests/test_text.py::test_len PASSED [650/788] >tests/test_text.py::test_cell_len PASSED [651/788] >tests/test_text.py::test_bool PASSED [652/788] >tests/test_text.py::test_str PASSED [653/788] >tests/test_text.py::test_repr PASSED [654/788] >tests/test_text.py::test_add PASSED [655/788] >tests/test_text.py::test_eq PASSED [656/788] >tests/test_text.py::test_contain PASSED [657/788] >tests/test_text.py::test_plain_property PASSED [658/788] >tests/test_text.py::test_plain_property_setter PASSED [659/788] >tests/test_text.py::test_from_markup PASSED [660/788] >tests/test_text.py::test_from_ansi PASSED [661/788] >tests/test_text.py::test_copy PASSED [662/788] >tests/test_text.py::test_rstrip PASSED [663/788] >tests/test_text.py::test_rstrip_end PASSED [664/788] >tests/test_text.py::test_stylize PASSED [665/788] >tests/test_text.py::test_stylize_before PASSED [666/788] >tests/test_text.py::test_stylize_negative_index PASSED [667/788] >tests/test_text.py::test_highlight_regex PASSED [668/788] >tests/test_text.py::test_highlight_regex_callable PASSED [669/788] >tests/test_text.py::test_highlight_words PASSED [670/788] >tests/test_text.py::test_set_length PASSED [671/788] >tests/test_text.py::test_console_width PASSED [672/788] >tests/test_text.py::test_join PASSED [673/788] >tests/test_text.py::test_trim_spans PASSED [674/788] >tests/test_text.py::test_pad_left PASSED [675/788] >tests/test_text.py::test_pad_right PASSED [676/788] >tests/test_text.py::test_append PASSED [677/788] >tests/test_text.py::test_append_text PASSED [678/788] >tests/test_text.py::test_end PASSED [679/788] >tests/test_text.py::test_split PASSED [680/788] >tests/test_text.py::test_split_spans PASSED [681/788] >tests/test_text.py::test_divide PASSED [682/788] >tests/test_text.py::test_right_crop PASSED [683/788] >tests/test_text.py::test_wrap_3 PASSED [684/788] >tests/test_text.py::test_wrap_4 PASSED [685/788] >tests/test_text.py::test_wrap_wrapped_word_length_greater_than_available_width PASSED [686/788] >tests/test_text.py::test_wrap_cjk PASSED [687/788] >tests/test_text.py::test_wrap_cjk_width_mid_character PASSED [688/788] >tests/test_text.py::test_wrap_long PASSED [689/788] >tests/test_text.py::test_wrap_overflow PASSED [690/788] >tests/test_text.py::test_wrap_overflow_long PASSED [691/788] >tests/test_text.py::test_wrap_long_words PASSED [692/788] >tests/test_text.py::test_wrap_long_words_2 PASSED [693/788] >tests/test_text.py::test_wrap_long_words_justify_left PASSED [694/788] >tests/test_text.py::test_no_wrap_no_crop PASSED [695/788] >tests/test_text.py::test_fit PASSED [696/788] >tests/test_text.py::test_wrap_tabs PASSED [697/788] >tests/test_text.py::test_render PASSED [698/788] >tests/test_text.py::test_render_simple PASSED [699/788] >tests/test_text.py::test_print[.-.\n] PASSED [700/788] >tests/test_text.py::test_print[print_text1-. .\n] PASSED [701/788] >tests/test_text.py::test_print[print_text2-Hello World !\n] PASSED [702/788] >tests/test_text.py::test_print_sep_end[.-.X] PASSED [703/788] >tests/test_text.py::test_print_sep_end[print_text1-..X] PASSED [704/788] >tests/test_text.py::test_print_sep_end[print_text2-HelloWorld!X] PASSED [705/788] >tests/test_text.py::test_tabs_to_spaces PASSED [706/788] >tests/test_text.py::test_markup_switch PASSED [707/788] >tests/test_text.py::test_emoji PASSED [708/788] >tests/test_text.py::test_emoji_switch PASSED [709/788] >tests/test_text.py::test_assemble PASSED [710/788] >tests/test_text.py::test_assemble_meta PASSED [711/788] >tests/test_text.py::test_styled PASSED [712/788] >tests/test_text.py::test_strip_control_codes PASSED [713/788] >tests/test_text.py::test_get_style_at_offset PASSED [714/788] >tests/test_text.py::test_truncate_ellipsis[Hello-10-Hello] PASSED [715/788] >tests/test_text.py::test_truncate_ellipsis[Hello-5-Hello] PASSED [716/788] >tests/test_text.py::test_truncate_ellipsis[Hello-4-Hel\u2026] PASSED [717/788] >tests/test_text.py::test_truncate_ellipsis[Hello-3-He\u2026] PASSED [718/788] >tests/test_text.py::test_truncate_ellipsis[Hello-2-H\u2026] PASSED [719/788] >tests/test_text.py::test_truncate_ellipsis[Hello-1-\u2026] PASSED [720/788] >tests/test_text.py::test_truncate_ellipsis_pad[Hello-5-Hello] PASSED [721/788] >tests/test_text.py::test_truncate_ellipsis_pad[Hello-10-Hello ] PASSED [722/788] >tests/test_text.py::test_truncate_ellipsis_pad[Hello-3-He\u2026] PASSED [723/788] >tests/test_text.py::test_pad PASSED [724/788] >tests/test_text.py::test_align_left PASSED [725/788] >tests/test_text.py::test_align_right PASSED [726/788] >tests/test_text.py::test_align_center PASSED [727/788] >tests/test_text.py::test_detect_indentation PASSED [728/788] >tests/test_text.py::test_indentation_guides PASSED [729/788] >tests/test_text.py::test_slice PASSED [730/788] >tests/test_text.py::test_wrap_invalid_style PASSED [731/788] >tests/test_text.py::test_apply_meta PASSED [732/788] >tests/test_text.py::test_on PASSED [733/788] >tests/test_text.py::test_markup_property PASSED [734/788] >tests/test_theme.py::test_inherit PASSED [735/788] >tests/test_theme.py::test_config PASSED [736/788] >tests/test_theme.py::test_from_file PASSED [737/788] >tests/test_theme.py::test_read PASSED [738/788] >tests/test_theme.py::test_theme_stack PASSED [739/788] >tests/test_tools.py::test_loop_first PASSED [740/788] >tests/test_tools.py::test_loop_last PASSED [741/788] >tests/test_tools.py::test_loop_first_last PASSED [742/788] >tests/test_tools.py::test_ratio_distribute PASSED [743/788] >tests/test_traceback.py::test_handler PASSED [744/788] >tests/test_traceback.py::test_capture PASSED [745/788] >tests/test_traceback.py::test_no_exception PASSED [746/788] >tests/test_traceback.py::test_print_exception PASSED [747/788] >tests/test_traceback.py::test_print_exception_no_msg PASSED [748/788] >tests/test_traceback.py::test_print_exception_locals PASSED [749/788] >tests/test_traceback.py::test_syntax_error PASSED [750/788] >tests/test_traceback.py::test_nested_exception PASSED [751/788] >tests/test_traceback.py::test_caused_exception PASSED [752/788] >tests/test_traceback.py::test_filename_with_bracket PASSED [753/788] >tests/test_traceback.py::test_filename_not_a_file PASSED [754/788] >tests/test_traceback.py::test_traceback_console_theme_applies PASSED [755/788] >tests/test_traceback.py::test_broken_str PASSED [756/788] >tests/test_traceback.py::test_guess_lexer PASSED [757/788] >tests/test_traceback.py::test_guess_lexer_yaml_j2 PASSED [758/788] >tests/test_traceback.py::test_recursive PASSED [759/788] >tests/test_traceback.py::test_suppress PASSED [760/788] >tests/test_traceback.py::test_rich_traceback_omit_optional_local_flag[True-3-expected_frame_names0] PASSED [761/788] >tests/test_traceback.py::test_rich_traceback_omit_optional_local_flag[False-4-expected_frame_names1] PASSED [762/788] >tests/test_tree.py::test_render_single_node PASSED [763/788] >tests/test_tree.py::test_render_single_branch PASSED [764/788] >tests/test_tree.py::test_render_double_branch PASSED [765/788] >tests/test_tree.py::test_render_ascii PASSED [766/788] >tests/test_tree.py::test_render_tree_non_win32 PASSED [767/788] >tests/test_tree.py::test_render_tree_win32 SKIPPED (Windows specific) [768/788] >tests/test_tree.py::test_render_tree_hide_root_non_win32 PASSED [769/788] >tests/test_tree.py::test_render_tree_hide_root_win32 SKIPPED (Windows specific) [770/788] >tests/test_tree.py::test_tree_measure PASSED [771/788] >tests/test_windows_renderer.py::test_text_only SKIPPED (windows only) [772/788] >tests/test_windows_renderer.py::test_text_multiple_segments SKIPPED (windows only) [773/788] >tests/test_windows_renderer.py::test_text_with_style SKIPPED (windows only) [774/788] >tests/test_windows_renderer.py::test_control_cursor_move_to SKIPPED (windows only) [775/788] >tests/test_windows_renderer.py::test_control_carriage_return SKIPPED (windows only) [776/788] >tests/test_windows_renderer.py::test_control_home SKIPPED (windows only) [777/788] >tests/test_windows_renderer.py::test_control_cursor_single_cell_movement[ControlType.CURSOR_UP-move_cursor_up] SKIPPED (windows only) [778/788] >tests/test_windows_renderer.py::test_control_cursor_single_cell_movement[ControlType.CURSOR_DOWN-move_cursor_down] SKIPPED (windows only) [779/788] >tests/test_windows_renderer.py::test_control_cursor_single_cell_movement[ControlType.CURSOR_FORWARD-move_cursor_forward] SKIPPED (windows only) [780/788] >tests/test_windows_renderer.py::test_control_cursor_single_cell_movement[ControlType.CURSOR_BACKWARD-move_cursor_backward] SKIPPED (windows only) [781/788] >tests/test_windows_renderer.py::test_control_erase_line[0-erase_end_of_line] SKIPPED (windows only) [782/788] >tests/test_windows_renderer.py::test_control_erase_line[1-erase_start_of_line] SKIPPED (windows only) [783/788] >tests/test_windows_renderer.py::test_control_erase_line[2-erase_line] SKIPPED (windows only) [784/788] >tests/test_windows_renderer.py::test_control_show_cursor SKIPPED (windows only) [785/788] >tests/test_windows_renderer.py::test_control_hide_cursor SKIPPED (windows only) [786/788] >tests/test_windows_renderer.py::test_control_cursor_move_to_column SKIPPED (windows only) [787/788] >tests/test_windows_renderer.py::test_control_set_terminal_window_title SKIPPED (windows only) [788/788] > >=================================== FAILURES =================================== >_________________________________ test_decode __________________________________ > > def test_decode(): > console = Console( > force_terminal=True, legacy_windows=False, color_system="truecolor" > ) > console.begin_capture() > console.print("Hello") > console.print("[b]foo[/b]") > console.print("[link http://example.org]bar") > console.print("[#ff0000 on color(200)]red") > console.print("[color(200) on #ff0000]red") > terminal_codes = console.end_capture() > > decoder = AnsiDecoder() > lines = list(decoder.decode(terminal_codes)) > > expected = [ > Text("Hello"), > Text("foo", spans=[Span(0, 3, Style.parse("bold"))]), > Text("bar", spans=[Span(0, 3, Style.parse("link http://example.org"))]), > Text("red", spans=[Span(0, 3, Style.parse("#ff0000 on color(200)"))]), > Text("red", spans=[Span(0, 3, Style.parse("color(200) on #ff0000"))]), > ] > >> assert lines == expected >E AssertionError: assert [<text 'Hello' []>, <text 'foo' [Span(0, 3, Style(bold=True))]>, <text 'bar' [Span(0, 3, Style(link='http://example.org'))]>, <text 'red' [Span(0, 3, Style())]>, <text 'red' [Span(0, 3, Style())]>] == [<text 'Hello' []>, <text 'foo' [Span(0, 3, Style(bold=True))]>, <text 'bar' [Span(0, 3, Style(link='http://example.org'))]>, <text 'red' [Span(0, 3, Style(color=Color('#ff0000', ColorType.TRUECOLOR, triplet=ColorTriplet(red=255, green=0, blue=0)), bgcolor=Color('color(200)', ColorType.EIGHT_BIT, number=200)))]>, <text 'red' [Span(0, 3, Style(color=Color('color(200)', ColorType.EIGHT_BIT, number=200), bgcolor=Color('#ff0000', ColorType.TRUECOLOR, triplet=ColorTriplet(red=255, green=0, blue=0))))]>] >E At index 3 diff: <text 'red' [Span(0, 3, Style())]> != <text 'red' [Span(0, 3, Style(color=Color('#ff0000', ColorType.TRUECOLOR, triplet=ColorTriplet(red=255, green=0, blue=0)), bgcolor=Color('color(200)', ColorType.EIGHT_BIT, number=200)))]> >E Full diff: >E [ >E <text 'Hello' []>, >E <text 'foo' [Span(0, 3, Style(bold=True))]>, >E <text 'bar' [Span(0, 3, Style(link='http://example.org'))]>, >E - <text 'red' [Span(0, 3, Style(color=Color('#ff0000', ColorType.TRUECOLOR, triplet=ColorTriplet(red=255, green=0, blue=0)), bgcolor=Color('color(200)', ColorType.EIGHT_BIT, number=200)))]>, >E - <text 'red' [Span(0, 3, Style(color=Color('color(200)', ColorType.EIGHT_BIT, number=200), bgcolor=Color('#ff0000', ColorType.TRUECOLOR, triplet=ColorTriplet(red=255, green=0, blue=0))))]>, >E + <text 'red' [Span(0, 3, Style())]>, >E + <text 'red' [Span(0, 3, Style())]>, >E ] > >console = <console width=80 ColorSystem.TRUECOLOR> >decoder = <rich.ansi.AnsiDecoder object at 0x00005638aa86f328> >expected = [<text 'Hello' []>, > <text 'foo' [Span(0, 3, Style(bold=True))]>, > <text 'bar' [Span(0, 3, Style(link='http://example.org'))]>, > <text 'red' [Span(0, 3, Style(color=Color('#ff0000', ColorType.TRUECOLOR, triplet=ColorTriplet(red=255, green=0, blue=0)), bgcolor=Color('color(200)', ColorType.EIGHT_BIT, number=200)))]>, > <text 'red' [Span(0, 3, Style(color=Color('color(200)', ColorType.EIGHT_BIT, number=200), bgcolor=Color('#ff0000', ColorType.TRUECOLOR, triplet=ColorTriplet(red=255, green=0, blue=0))))]>] >lines = [<text 'Hello' []>, > <text 'foo' [Span(0, 3, Style(bold=True))]>, > <text 'bar' [Span(0, 3, Style(link='http://example.org'))]>, > <text 'red' [Span(0, 3, Style())]>, > <text 'red' [Span(0, 3, Style())]>] >terminal_codes = ('Hello\n' > '\x1b[1mfoo\x1b[0m\n' > '\x1b]8;id=757453;http://example.org\x1b\\bar\x1b]8;;\x1b\\\n' > 'red\n' > 'red\n') > >tests/test_ansi.py:32: AssertionError >_____________________________ test_decode_example ______________________________ > > def test_decode_example(): > ansi_bytes = b"\x1b[01m\x1b[KC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:\x1b[m\x1b[K In function '\x1b[01m\x1b[Kmain\x1b[m\x1b[K':\n\x1b[01m\x1b[KC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:3:5:\x1b[m\x1b[K \x1b[01;35m\x1b[Kwarning: \x1b[m\x1b[Kunused variable '\x1b[01m\x1b[Ka\x1b[m\x1b[K' [\x1b[01;35m\x1b[K-Wunused-variable\x1b[m\x1b[K]\n 3 | int \x1b[01;35m\x1b[Ka\x1b[m\x1b[K=1;\n | \x1b[01;35m\x1b[K^\x1b[m\x1b[K\n" > ansi_text = ansi_bytes.decode("utf-8") > > text = Text.from_ansi(ansi_text) > > console = Console( > force_terminal=True, legacy_windows=False, color_system="truecolor" > ) > with console.capture() as capture: > console.print(text) > result = capture.get() > print(repr(result)) > expected = "\x1b[1mC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:\x1b[0m In function '\x1b[1mmain\x1b[0m':\n\x1b[1mC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:3:5:\x1b[0m \x1b[1;35mwarning: \x1b[0munused variable '\x1b[1ma\x1b[0m' \n[\x1b[1;35m-Wunused-variable\x1b[0m]\n 3 | int \x1b[1;35ma\x1b[0m=1;\n | \x1b[1;35m^\x1b[0m\n" >> assert result == expected >E assert "\x1b[1mC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:\x1b[0m In function '\x1b[1mmain\x1b[0m':\n\x1b[1mC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:3:5:\x1b[0m \x1b[1mwarning: \x1b[0munused variable '\x1b[1ma\x1b[0m' \n[\x1b[1m-Wunused-variable\x1b[0m]\n 3 | int \x1b[1ma\x1b[0m=1;\n | \x1b[1m^\x1b[0m\n" == "\x1b[1mC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:\x1b[0m In function '\x1b[1mmain\x1b[0m':\n\x1b[1mC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:3:5:\x1b[0m \x1b[1;35mwarning: \x1b[0munused variable '\x1b[1ma\x1b[0m' \n[\x1b[1;35m-Wunused-variable\x1b[0m]\n 3 | int \x1b[1;35ma\x1b[0m=1;\n | \x1b[1;35m^\x1b[0m\n" >E C:\Users\stefa\AppData\Local\Temp\tmp3ydingba: In function 'main': >E - C:\Users\stefa\AppData\Local\Temp\tmp3ydingba:3:5: warning: unused variable 'a' >E ? --- >E + C:\Users\stefa\AppData\Local\Temp\tmp3ydingba:3:5: warning: unused variable 'a' >E - [-Wunused-variable] >E ? --- >E + [-Wunused-variable] >E - 3 | int a=1; >E ? --- >E + 3 | int a=1; >E - | ^ >E ? --- >E + | ^ > >ansi_bytes = (b'\x1b[01m\x1b[KC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:\x1b[' > b"m\x1b[K In function '\x1b[01m\x1b[Kmain\x1b[m\x1b[K':\n\x1b[01m\x1b[KC:\\Us" > b'ers\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:3:5:\x1b[m\x1b[K \x1b[01;35m' > b"\x1b[Kwarning: \x1b[m\x1b[Kunused variable '\x1b[01m\x1b[Ka\x1b[m\x1b[K' " > b'[\x1b[01;35m\x1b[K-Wunused-variable\x1b[m\x1b[K]\n 3 | int \x1b[01;35' > b'm\x1b[Ka\x1b[m\x1b[K=1;\n | \x1b[01;35m\x1b[K^\x1b[m\x1b[K\n') >ansi_text = ('\x1b[01m\x1b[KC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:\x1b[m\x1b[K ' > "In function '\x1b[01m\x1b[Kmain\x1b[m\x1b[K':\n" > '\x1b[01m\x1b[KC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:3:5:\x1b[m\x1b[K ' > '\x1b[01;35m\x1b[Kwarning: \x1b[m\x1b[Kunused variable ' > "'\x1b[01m\x1b[Ka\x1b[m\x1b[K' " > '[\x1b[01;35m\x1b[K-Wunused-variable\x1b[m\x1b[K]\n' > ' 3 | int \x1b[01;35m\x1b[Ka\x1b[m\x1b[K=1;\n' > ' | \x1b[01;35m\x1b[K^\x1b[m\x1b[K\n') >capture = <rich.console.Capture object at 0x00005638aad48fa8> >console = <console width=80 ColorSystem.TRUECOLOR> >expected = ('\x1b[1mC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:\x1b[0m In ' > "function '\x1b[1mmain\x1b[0m':\n" > '\x1b[1mC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:3:5:\x1b[0m ' > "\x1b[1;35mwarning: \x1b[0munused variable '\x1b[1ma\x1b[0m' \n" > '[\x1b[1;35m-Wunused-variable\x1b[0m]\n' > ' 3 | int \x1b[1;35ma\x1b[0m=1;\n' > ' | \x1b[1;35m^\x1b[0m\n') >result = ('\x1b[1mC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:\x1b[0m In ' > "function '\x1b[1mmain\x1b[0m':\n" > '\x1b[1mC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:3:5:\x1b[0m ' > "\x1b[1mwarning: \x1b[0munused variable '\x1b[1ma\x1b[0m' \n" > '[\x1b[1m-Wunused-variable\x1b[0m]\n' > ' 3 | int \x1b[1ma\x1b[0m=1;\n' > ' | \x1b[1m^\x1b[0m\n') >text = <text "C:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba: In function 'main':\nC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:3:5: warning: unused variable 'a' [-Wunused-variable]\n 3 | int a=1;\n | ^" [Span(0, 46, Style(bold=True)), Span(60, 64, Style(bold=True)), Span(67, 117, Style(bold=True)), Span(118, 127, Style(color=Color('color(5)', ColorType.STANDARD, number=5), bold=True)), Span(144, 145, Style(bold=True)), Span(148, 165, Style(color=Color('color(5)', ColorType.STANDARD, number=5), bold=True)), Span(179, 180, Style(color=Color('color(5)', ColorType.STANDARD, number=5), bold=True)), Span(196, 197, Style(color=Color('color(5)', ColorType.STANDARD, number=5), bold=True))]> > >tests/test_ansi.py:49: AssertionError >----------------------------- Captured stdout call ----------------------------- >"\x1b[1mC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:\x1b[0m In function '\x1b[1mmain\x1b[0m':\n\x1b[1mC:\\Users\\stefa\\AppData\\Local\\Temp\\tmp3ydingba:3:5:\x1b[0m \x1b[1mwarning: \x1b[0munused variable '\x1b[1ma\x1b[0m' \n[\x1b[1m-Wunused-variable\x1b[0m]\n 3 | int \x1b[1ma\x1b[0m=1;\n | \x1b[1m^\x1b[0m\n" >_________________________________ test_render __________________________________ > > def test_render(): > bar = ProgressBar(completed=11, width=50) > bar_render = render(bar) >> assert bar_render == expected[0] >E AssertionError: assert 'ââââââ¸' == '\x1b[38;2;249;38;114mâââââ\x1b[0m\x1b[38;2;249;38;114mâ¸\x1b[0m\x1b[38;5;237mââââââââââââââââââââââââââââââââââââââââââââ\x1b[0m' >E - ââââââ¸ââââââââââââââââââââââââââââââââââââââââââââ >E + âââââ⸠> >bar = <Bar 11 of 100.0> >bar_render = 'ââââââ¸' > >tests/test_bar.py:36: AssertionError >__________________________________ test_pulse __________________________________ > > def test_pulse(): > bar = ProgressBar(pulse=True, animation_time=10) > bar_render = render(bar) > print(repr(bar_render)) > expected = "\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m" >> assert bar_render == expected >E AssertionError: assert ' ââââââââââ ââââââââââ ââââââââââ ââââââââââ ââââââââââ' == '\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m' >E - ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E + ââââââââââ ââââââââââ ââââââââââ ââââââââââ ââââââââââ > >bar = <Bar 0 of 100.0> >bar_render = (' ââââââââââ ââââââââââ ââââââââââ ' > 'ââââââââââ ââââââââââ') >expected = '\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;249;38;114mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;58;58;58mâ\x1b[0m\x1b[38;2;62;57;59mâ\x1b[0m\x1b[38;2;76;56;63mâ\x1b[0m\x1b[38;2;97;53;69mâ\x1b[0m\x1b[38;2;123;51;77mâ\x1b[0m\x1b[38;2;153;48;86mâ\x1b[0m\x1b[38;2;183;44;94mâ\x1b[0m\x1b[38;2;209;42;102mâ\x1b[0m\x1b[38;2;230;39;108mâ\x1b[0m\x1b[38;2;244;38;112mâ\x1b[0m' > >tests/test_bar.py:61: AssertionError >----------------------------- Captured stdout call ----------------------------- >' ââââââââââ ââââââââââ ââââââââââ ââââââââââ ââââââââââ' >_________________________________ test_render __________________________________ > > def test_render(): > bar = Bar(size=100, begin=11, end=62, width=50) > bar_render = render(bar) >> assert bar_render == expected[0] >E AssertionError: assert ' ââââââââââââââââââââââââââ \n' == '\x1b[39;49m ââââââââââââââââââââââââââ \x1b[0m\n' >E - ââââââââââââââââââââââââââ >E ? -------- ---- >E + ââââââââââââââââââââââââââ > >bar = Bar(100, 11, 62) >bar_render = ' ââââââââââââââââââââââââââ \n' > >tests/test_block_bar.py:22: AssertionError >_______________________________ test_card_render _______________________________ > > def test_card_render(): > card = make_test_card() > result = render(card) >> assert result == expected >E assert '\x1b[3m Rich features \x1b[0m\n\x1b[1m \x1b[0m \n\x1b[1m \x1b[0m\x1b[1m Colors \x1b[0m\x1b[1m \x1b[0mâ \x1b[1m4-bit color\x1b[0m âââââââââââââââââââââââââââââââââââââââââââââââââââââââ \n\x1b[1m \x1b[0mâ \x1b[1m8-bit color\x1b[0m âââââââââââââââââââââââââââââââââââââââââââââââââââââââ \n\x1b[1m \x1b[0mâ \x1b[1mTruecolor (16.7 million)\x1b[0m âââââââââââââââââââââââââââââââââââââââââââââââââââââââ \n\x1b[1m \x1b[0mâ \x1b[1mDumb terminals\x1b[0m âââââââââââââââââââââââââââââââââââââââââââââââââââââââ \n\x1b[1m \x1b[0mâ \x1b[1mAutomatic color conversion\x1b[0m âââââââââââââââââââââââââââââââââââââââââââââââââââââââ \n\x1b[1m \x1b[0m \n\x1b[1m \x1b[0m\x1b[1m Styles \x1b[0m\x1b[1m \x1b[0mAll ansi styles: \x1b[1mbold\x1b[0m, \x1b[2mdim\x1b[0m, \x1b[3mitalic\x1b[0m, \x1b[4munderline\x1b[0m, \x1b[9mstrikethrough\x1b[0m, \x1b[7mreverse\x1b[0m, and even \n\x1b[1m \x1b[0m\x1b[5mblink\x1b[0m. \n\x1b[1m \x1b[0m \n\x1b[1m \x1b[0m\x1b[1m Text \x1b[0m\x1b[1m \x1b[0mWord wrap text. Justify left, center, right or full. \n\x1b[1m \x1b[0m \n\x1b[1m \x1b[0mLorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor sit \n\x1b[1m \x1b[0msit amet, sit amet, sit amet, amet, consectetur \n\x1b[1m \x1b[0mconsectetur consectetur consectetur adipiscing elit. \n\x1b[1m \x1b[0madipiscing elit. adipiscing elit. adipiscing elit. Quisque in metus sed \n\x1b[1m \x1b[0mQuisque in metus sed Quisque in metus sed Quisque in metus sed sapien ultricies \n\x1b[1m \x1b[0msapien ultricies sapien ultricies sapien ultricies pretium a at justo. \n\x1b[1m \x1b[0mpretium a at justo. pretium a at justo. pretium a at justo. Maecenas luctus velit \n\x1b[1m \x1b[0mMaecenas luctus Maecenas luctus Maecenas luctus et auctor maximus. \n\x1b[1m \x1b[0mvelit et auctor velit et auctor velit et auctor \n\x1b[1m \x1b[0mmaximus. maximus. maximus. \n\x1b[1m \x1b[0m \n\x1b[1m \x1b[0m\x1b[1m Asian \x1b[0m\x1b[1m \x1b[0mðãæ¥æ¬èªãéã®ããã¹ãããµããæ¥æ¬èªãéã®ããã¹ãããµãã¼ããã¦ãã¾ã \n\x1b[1;31m \x1b[0m\x1b[1;31m support \x1b[0m\x1b[1;31m \x1b[0mð°ð· ì´ ë¼ì´ë¸ë¬ë¦¬ë ì¤êµì´, ì¼ë³¸ì´ ë° íêµì´ í ì¤í¸ë¥¼ ì§ìn\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Markup \x1b[0m\x1b[1;31m \x1b[0m\x1b[1;35mRich\x1b[0m supports a simple \x1b[3mbbcode\x1b[0m-like \x1b[1mmarkup\x1b[0m for \x1b[33mcolor\x1b[0m, \x1b[4mstyle\x1b[0m, and emoji! ð ð ð ð» ⦠\n\x1b[1;31m \x1b[0mð \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Tables \x1b[0m\x1b[1;31m \x1b[0m\x1b[1m \x1b[0m\x1b[1;32mDate\x1b[0m\x1b[1m \x1b[0m\x1b[1m \x1b[0m \x1b[1m \x1b[0m\x1b[1;34mTitle\x1b[0m\x1b[1m \x1b[0m\x1b[1m \x1b[0m \x1b[1m \x1b[0m\x1b[1;36mProduction Budget\x1b[0m\x1b[1m \x1b[0m \x1b[1m \x1b[0m\x1b[1m \x1b[0m\x1b[1;35mBox Office\x1b[0m\x1b[1m \x1b[0m \n\x1b[1;31m \x1b[0mâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ \n\x1b[1;31m \x1b[0m\x1b[32m \x1b[0m\x1b[32mDec 20, 2019\x1b[0m\x1b[32m \x1b[0m \x1b[34m \x1b[0m\x1b[34mStar Wars: The Rise of \x1b[0m\x1b[34m \x1b[0m \x1b[36m \x1b[0m\x1b[36m $275,000,000\x1b[0m\x1b[36m \x1b[0m \x1b[35m \x1b[0m\x1b[35m $375,126,118\x1b[0m\x1b[35m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[32m \x1b[0m \x1b[34m \x1b[0m\x1b[34mSkywalker \x1b[0m\x1b[34m \x1b[0m \x1b[36m \x1b[0m \x1b[35m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[2;32m \x1b[0m\x1b[2;32mMay 25, 2018\x1b[0m\x1b[2;32m \x1b[0m \x1b[2;34m \x1b[0m\x1b[1;2;34mSolo\x1b[0m\x1b[2;34m: A Star Wars Story \x1b[0m\x1b[2;34m \x1b[0m \x1b[2;36m \x1b[0m\x1b[2;36m $275,000,000\x1b[0m\x1b[2;36m \x1b[0m \x1b[2;35m \x1b[0m\x1b[2;35m $393,151,347\x1b[0m\x1b[2;35m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[32m \x1b[0m\x1b[32mDec 15, 2017\x1b[0m\x1b[32m \x1b[0m \x1b[34m \x1b[0m\x1b[34mStar Wars Ep. VIII: The Last \x1b[0m\x1b[34m \x1b[0m \x1b[36m \x1b[0m\x1b[36m $262,000,000\x1b[0m\x1b[36m \x1b[0m \x1b[35m \x1b[0m\x1b[1;35m$1,332,539,889\x1b[0m\x1b[35m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[32m \x1b[0m \x1b[34m \x1b[0m\x1b[34mJedi \x1b[0m\x1b[34m \x1b[0m \x1b[36m \x1b[0m \x1b[35m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[2;32m \x1b[0m\x1b[2;32mMay 19, 1999\x1b[0m\x1b[2;32m \x1b[0m \x1b[2;34m \x1b[0m\x1b[2;34mStar Wars Ep. \x1b[0m\x1b[1;2;34mI\x1b[0m\x1b[2;34m: \x1b[0m\x1b[2;3;34mThe phantom \x1b[0m\x1b[2;34m \x1b[0m\x1b[2;34m \x1b[0m \x1b[2;36m \x1b[0m\x1b[2;36m $115,000,000\x1b[0m\x1b[2;36m \x1b[0m \x1b[2;35m \x1b[0m\x1b[2;35m$1,027,044,677\x1b[0m\x1b[2;35m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[2;32m \x1b[0m \x1b[2;34m \x1b[0m\x1b[2;3;34mMenace\x1b[0m\x1b[2;34m \x1b[0m\x1b[2;34m \x1b[0m \x1b[2;36m \x1b[0m \x1b[2;35m \x1b[0m \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Syntax \x1b[0m\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 1 \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mdef\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34miter_last\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m-\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m>\x1b[0m \x1b[1m{\x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31mhighlighting\x1b[0m\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 2 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple w\x1b[0m \x1b[2;32mâ \x1b[0m\x1b[32m\'foo\'\x1b[0m: \x1b[1m[\x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m & \x1b[0m\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 3 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32mâ â \x1b[0m\x1b[1;36m3.1427\x1b[0m, \n\x1b[1;31m \x1b[0m\x1b[1;31m pretty \x1b[0m\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 4 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32mâ â \x1b[0m\x1b[1m(\x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m printing \x1b[0m\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 5 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ â \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_va\x1b[0m \x1b[2;32mâ â â \x1b[0m\x1b[32m\'Paul Atreides\'\x1b[0m, \n\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 6 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32mâ â â \x1b[0m\x1b[32m\'Vladimir Harkonnen\'\x1b[0m, \n\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 7 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ â \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32mâ â â \x1b[0m\x1b[32m\'Thufir Hawat\'\x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 8 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32mâ â \x1b[0m\x1b[1m)\x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 9 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ â \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32mâ \x1b[0m\x1b[1m]\x1b[0m, \n\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m10 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ â \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32mâ \x1b[0m\x1b[32m\'atomic\'\x1b[0m: \x1b[1m(\x1b[0m\x1b[3;91mFalse\x1b[0m, \x1b[3;92mTrue\x1b[0m, \x1b[3;35mNone\x1b[0m\x1b[1m)\x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m11 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[1m}\x1b[0m \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Markdown \x1b[0m\x1b[1;31m \x1b[0m\x1b[36m# Markdown\x1b[0m âââââââââââââââââââââââââââââââââââââââââ \n\x1b[1;31m \x1b[0m â \x1b[1mMarkdown\x1b[0m â \n\x1b[1;31m \x1b[0m\x1b[36mSupports much of the *markdown* \x1b[0m ââââââââââââââââââââââââââââââââââââââââân\x1b[1;31m \x1b[0m\x1b[36m__syntax__!\x1b[0m \n\x1b[1;31m \x1b[0m Supports much of the \x1b[3mmarkdown\x1b[0m \x1b[1msyntax\x1b[0m! \n\x1b[1;31m \x1b[0m\x1b[36m- Headers\x1b[0m \n\x1b[1;31m \x1b[0m\x1b[36m- Basic formatting: **bold**, *italic*, \x1b[0m \x1b[1;33m ⢠\x1b[0mHeaders \n\x1b[1;31m \x1b[0m\x1b[36m`code`\x1b[0m \x1b[1;33m ⢠\x1b[0mBasic formatting: \x1b[1mbold\x1b[0m, \x1b[3mitalic\x1b[0m, \x1b[1;36;40mcode\x1b[0m \n\x1b[1;31m \x1b[0m\x1b[36m- Block quotes\x1b[0m \x1b[1;33m ⢠\x1b[0mBlock quotes \n\x1b[1;31m \x1b[0m\x1b[36m- Lists, and more...\x1b[0m \x1b[1;33m ⢠\x1b[0mLists, and more... \n\x1b[1;31m \x1b[0m\x1b[36m \x1b[0m \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m +more! \x1b[0m\x1b[1;31m \x1b[0mProgress bars, columns, styled logging handler, tracebacks, etc... \n\x1b[1;31m \x1b[0m \n' >E Rich features >E - >E ? --- >E + >E - Colors â 4-bit color âââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E - â 8-bit color âââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E - â Truecolor (16.7 million) âââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E - â Dumb terminals âââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E - â Automatic color conversion âââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E + Colors â 4-bit color âââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E + â 8-bit color âââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E + â Truecolor (16.7 million) âââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E + â Dumb terminals âââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E + â Automatic color conversion âââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E - >E ? --- >E + >E - Styles All ansi styles: bold, dim, italic, underline, strikethrough, reverse, and even >E ? --- --- --- >E + Styles All ansi styles: bold, dim, italic, underline, strikethrough, reverse, and even >E - blink. >E ? --- >E + blink. >E - >E ? --- >E + >E - Text Word wrap text. Justify left, center, right or full. >E ? --- --- --- ----- ---- ----- ---- ----- ---- ----- ---- >E + Text Word wrap text. Justify left, center, right or full. >E - >E ? --- >E + >E - Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor sit >E - sit amet, sit amet, sit amet, amet, consectetur >E - consectetur consectetur consectetur adipiscing elit. >E - adipiscing elit. adipiscing elit. adipiscing elit. Quisque in metus sed >E - Quisque in metus sed Quisque in metus sed Quisque in metus sed sapien ultricies >E - sapien ultricies sapien ultricies sapien ultricies pretium a at justo. >E - pretium a at justo. pretium a at justo. pretium a at justo. Maecenas luctus velit >E + Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor sit >E + sit amet, sit amet, sit amet, amet, consectetur >E + consectetur consectetur consectetur adipiscing elit. >E + adipiscing elit. adipiscing elit. adipiscing elit. Quisque in metus sed >E + Quisque in metus sed Quisque in metus sed Quisque in metus sed sapien ultricies >E + sapien ultricies sapien ultricies sapien ultricies pretium a at justo. >E + pretium a at justo. pretium a at justo. pretium a at justo. Maecenas luctus velit >E - Maecenas luctus Maecenas luctus Maecenas luctus et auctor maximus. >E ? --- ----- ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ---- >E + Maecenas luctus Maecenas luctus Maecenas luctus et auctor maximus. >E ? ^ ^ ^ >E - velit et auctor velit et auctor velit et auctor >E ? --- ----- ^^^^^^^^^^ ^^^^^^^^^^ ---- >E + velit et auctor velit et auctor velit et auctor >E ? ^ ^ >E - maximus. maximus. maximus. >E ? --- ----- ^^^^^^^^^^ ^^^^^^^^^^ ---- >E + maximus. maximus. maximus. >E ? ^ ^ >E - >E ? --- >E + >E - Asian ð¨ð³ 该åºæ¯æä¸æï¼æ¥æåé©æææ¬ï¼ >E ? --- --- --- >E + Asian ð¨ð³ 该åºæ¯æä¸æï¼æ¥æåé©æææ¬ï¼ >E - language ðãæ¥æ¬èªãéã®ããã¹ãããµãã¼ããã¦ãã¾ã >E ? --- --- --- >E + language ðãæ¥æ¬èªãéã®ããã¹ãããµãã¼ããã¦ãã¾ã >E - support ð°ð· ì´ ë¼ì´ë¸ë¬ë¦¬ë ì¤êµì´, ì¼ë³¸ì´ ë° íêµì´ í ì¤í¸ë¥¼ ì§ìí©ëë¤ >E ? --- --- --- >E + support ð°ð· ì´ ë¼ì´ë¸ë¬ë¦¬ë ì¤êµì´, ì¼ë³¸ì´ ë° íêµì´ í ì¤í¸ë¥¼ ì§ìí©ëë¤ >E - >E ? --- >E + >E - Markup Rich supports a simple bbcode-like markup for color, style, and emoji! ð ð ð ð» ⦠>E ? --- --- --- --- ----- ---- >E + Markup Rich supports a simple bbcode-like markup for color, style, and emoji! ð ð ð ð» ⦠>E - ð >E ? --- >E + ð >E - >E ? --- >E + >E - Tables Date Title Production Budget Box Office >E ? ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ --- --- --- >E + Tables Date Title Production Budget Box Office >E ? ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >E - âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E ? --- >E + âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E - Dec 20, 2019 Star Wars: The Rise of $275,000,000 $375,126,118 >E - Skywalker >E - May 25, 2018 Solo: A Star Wars Story $275,000,000 $393,151,347 >E - Dec 15, 2017 Star Wars Ep. VIII: The Last $262,000,000 $1,332,539,889 >E - Jedi >E - May 19, 1999 Star Wars Ep. I: The phantom $115,000,000 $1,027,044,677 >E + Dec 20, 2019 Star Wars: The Rise of $275,000,000 $375,126,118 >E + Skywalker >E + May 25, 2018 Solo: A Star Wars Story $275,000,000 $393,151,347 >E + Dec 15, 2017 Star Wars Ep. VIII: The Last $262,000,000 $1,332,539,889 >E + Jedi >E + May 19, 1999 Star Wars Ep. I: The phantom $115,000,000 $1,027,044,677 >E - Menace >E ? --- ----------------------------------------- --- --- --- --- >E + Menace >E ? ++++++++++++++++++++++++++++++++ >E - >E ? --- >E + >E - Syntax 1 def iter_last(values: Iterable[T]) -> { >E - highlighting 2 â """Iterate and generate a tuple w â 'foo': [ >E - & 3 â iter_values = iter(values) â â 3.1427, >E - pretty 4 â try: â â ( >E - printing 5 â â previous_value = next(iter_va â â â 'Paul Atreides', >E - 6 â except StopIteration: â â â 'Vladimir Harkonnen', >E - 7 â â return â â â 'Thufir Hawat' >E - 8 â for value in iter_values: â â ) >E - 9 â â yield False, previous_value â ], >E - 10 â â previous_value = value â 'atomic': (False, True, None) >E - 11 â yield True, previous_value } >E + Syntax 1 def iter_last(values: Iterable[T]) -> { >E + highlighting 2 â """Iterate and generate a tuple w â 'foo': [ >E + & 3 â iter_values = iter(values) â â 3.1427, >E + pretty 4 â try: â â ( >E + printing 5 â â previous_value = next(iter_va â â â 'Paul Atreides', >E + 6 â except StopIteration: â â â 'Vladimir Harkonnen', >E + 7 â â return â â â 'Thufir Hawat' >E + 8 â for value in iter_values: â â ) >E + 9 â â yield False, previous_value â ], >E + 10 â â previous_value = value â 'atomic': (False, True, None) >E + 11 â yield True, previous_value } >E - >E ? --- >E + >E - Markdown # Markdown âââââââââââââââââââââââââââââââââââââââââ >E ? --- --- --- ----- ---- >E + Markdown # Markdown âââââââââââââââââââââââââââââââââââââââââ >E - â Markdown â >E ? --- >E + â Markdown â >E - Supports much of the *markdown* âââââââââââââââââââââââââââââââââââââââââ >E ? --- ----- ---- >E + Supports much of the *markdown* âââââââââââââââââââââââââââââââââââââââââ >E - __syntax__! >E ? --- ----- ---- >E + __syntax__! >E - Supports much of the markdown syntax! >E ? --- >E + Supports much of the markdown syntax! >E - - Headers >E ? --- ----- ---- >E + - Headers >E - - Basic formatting: **bold**, *italic*, ⢠Headers >E ? --- ----- ---- --- >E + - Basic formatting: **bold**, *italic*, ⢠Headers >E - `code` ⢠Basic formatting: bold, italic, code >E ? --- ----- ---- --- ------ >E + `code` ⢠Basic formatting: bold, italic, code >E - - Block quotes ⢠Block quotes >E ? --- ----- ---- --- >E + - Block quotes ⢠Block quotes >E - - Lists, and more... ⢠Lists, and more... >E ? --- ----- ---- --- >E + - Lists, and more... ⢠Lists, and more... >E - >E - >E ? --- >E + >E - +more! Progress bars, columns, styled logging handler, tracebacks, etc... >E - >E ? --- >E + >E + +more! Progress bars, columns, styled logging handler, tracebacks, etc... >E + > >card = <rich.table.Table object at 0x00005638ab141398> >result = ('\x1b[3m Rich ' > 'features \x1b[0m\n' > '\x1b[1m ' > '\x1b[0m \n' > '\x1b[1m \x1b[0m\x1b[1m Colors \x1b[0m\x1b[1m \x1b[0mâ \x1b[1m4-bit ' > 'color\x1b[0m ' > 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââ \n' > '\x1b[1m \x1b[0mâ \x1b[1m8-bit color\x1b[0m ' > 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââ \n' > '\x1b[1m \x1b[0mâ \x1b[1mTruecolor (16.7 million)\x1b[0m ' > 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââ \n' > '\x1b[1m \x1b[0mâ \x1b[1mDumb terminals\x1b[0m ' > 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââ \n' > '\x1b[1m \x1b[0mâ \x1b[1mAutomatic color conversion\x1b[0m ' > 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââ \n' > '\x1b[1m ' > '\x1b[0m \n' > '\x1b[1m \x1b[0m\x1b[1m Styles \x1b[0m\x1b[1m \x1b[0mAll ansi styles: ' > '\x1b[1mbold\x1b[0m, \x1b[2mdim\x1b[0m, \x1b[3mitalic\x1b[0m, ' > '\x1b[4munderline\x1b[0m, \x1b[9mstrikethrough\x1b[0m, \x1b[7mreverse\x1b[0m, ' > 'and even \n' > '\x1b[1m ' > '\x1b[0m\x1b[5mblink\x1b[0m. \n' > '\x1b[1m ' > '\x1b[0m \n' > '\x1b[1m \x1b[0m\x1b[1m Text \x1b[0m\x1b[1m \x1b[0mWord wrap text. ' > 'Justify left, center, right or full. \n' > '\x1b[1m ' > '\x1b[0m \n' > '\x1b[1m \x1b[0mLorem ipsum dolor Lorem ipsum dolor ' > 'Lorem ipsum dolor Lorem ipsum dolor sit \n' > '\x1b[1m \x1b[0msit amet, sit ' > 'amet, sit amet, amet, consectetur \n' > '\x1b[1m \x1b[0mconsectetur ' > 'consectetur consectetur adipiscing elit. \n' > '\x1b[1m \x1b[0madipiscing elit. adipiscing elit. ' > 'adipiscing elit. Quisque in metus sed \n' > '\x1b[1m \x1b[0mQuisque in metus sed Quisque in metus sed ' > 'Quisque in metus sed sapien ultricies \n' > '\x1b[1m \x1b[0msapien ultricies sapien ultricies ' > 'sapien ultricies pretium a at justo. \n' > '\x1b[1m \x1b[0mpretium a at justo. pretium a at justo. ' > 'pretium a at justo. Maecenas luctus velit \n' > '\x1b[1m \x1b[0mMaecenas luctus Maecenas luctus ' > 'Maecenas luctus et auctor maximus. \n' > '\x1b[1m \x1b[0mvelit et auctor velit et auctor ' > 'velit et auctor \n' > '\x1b[1m \x1b[0mmaximus. ' > 'maximus. maximus. \n' > '\x1b[1m ' > '\x1b[0m \n' > '\x1b[1m \x1b[0m\x1b[1m Asian \x1b[0m\x1b[1m \x1b[0mð¨ð³ ' > '该åºæ¯æä¸æï¼æ¥æåé©æææ¬ï¼ \n' > '\x1b[1m \x1b[0m\x1b[1m language \x1b[0m\x1b[1m \x1b[0mð¯ðµ ' > 'ã©ã¤ãã©ãªã¯ä¸ån' > '\x1b[1m \x1b[0m\x1b[1m support \x1b[0m\x1b[1m \x1b[0mð°ð· ì´ ë¼ì´ë¸ë¬ë¦¬ë ì¤êµì´, ' > 'ì¼ë³¸ì´ ë° íêµì´ í ì¤í¸ë¥¼ ì§ìn' > '\x1b[1m ' > '\x1b[0m \n' > '\x1b[1m \x1b[0m\x1b[1m Markup \x1b[0m\x1b[1m \x1b[0m\x1b[1mRich\x1b[0m ' > 'supports a simple \x1b[3mbbcode\x1b[0m-like \x1b[1mmarkup\x1b[0m for color, ' > '\x1b[4mstyle\x1b[0m, and emoji! ð ð ð ð» ⦠\n' > '\x1b[1m ' > '\x1b[0mð \n' > '\x1b[1m ' > '\x1b[0m \n' > '\x1b[1m \x1b[0m\x1b[1m Tables \x1b[0m\x1b[1m \x1b[0m\x1b[1m ' > '\x1b[0m\x1b[1mDate\x1b[0m\x1b[1m \x1b[0m\x1b[1m \x1b[0m \x1b[1m ' > '\x1b[0m\x1b[1mTitle\x1b[0m\x1b[1m \x1b[0m\x1b[1m ' > '\x1b[0m \x1b[1m \x1b[0m\x1b[1mProduction Budget\x1b[0m\x1b[1m \x1b[0m ' > '\x1b[1m \x1b[0m\x1b[1m \x1b[0m\x1b[1mBox Office\x1b[0m\x1b[1m \x1b[0m \n' > '\x1b[1m ' > '\x1b[0mâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ \n' > '\x1b[1m \x1b[0m Dec 20, 2019 Star Wars: The Rise ' > 'of $275,000,000 $375,126,118 \n' > '\x1b[1m \x1b[0m ' > 'Skywalker \n' > '\x1b[1m \x1b[0m\x1b[2m \x1b[0m\x1b[2mMay 25, 2018\x1b[0m\x1b[2m ' > '\x1b[0m \x1b[2m \x1b[0m\x1b[1;2mSolo\x1b[0m\x1b[2m: A Star Wars Story ' > '\x1b[0m\x1b[2m \x1b[0m \x1b[2m \x1b[0m\x1b[2m $275,000,000\x1b[0m\x1b[2m ' > '\x1b[0m \x1b[2m \x1b[0m\x1b[2m $393,151,347\x1b[0m\x1b[2m \x1b[0m \n' > '\x1b[1m \x1b[0m Dec 15, 2017 Star Wars Ep. VIII: The ' > 'Last $262,000,000 \x1b[1m$1,332,539,889\x1b[0m \n' > '\x1b[1m \x1b[0m ' > 'Jedi \n' > '\x1b[1m \x1b[0m\x1b[2m \x1b[0m\x1b[2mMay 19, 1999\x1b[0m\x1b[2m ' > '\x1b[0m \x1b[2m \x1b[0m\x1b[2mStar Wars Ep. \x1b[0m\x1b[1;2mI\x1b[0m\x1b[2m: ' > '\x1b[0m\x1b[2;3mThe phantom \x1b[0m\x1b[2m \x1b[0m\x1b[2m \x1b[0m \x1b[2m ' > '\x1b[0m\x1b[2m $115,000,000\x1b[0m\x1b[2m \x1b[0m \x1b[2m ' > '\x1b[0m\x1b[2m$1,027,044,677\x1b[0m\x1b[2m \x1b[0m \n' > '\x1b[1m \x1b[0m\x1b[2m \x1b[0m \x1b[2m ' > '\x1b[0m\x1b[2;3mMenace\x1b[0m\x1b[2m \x1b[0m\x1b[2m ' > '\x1b[0m \x1b[2m \x1b[0m \x1b[2m \x1b[0m \n' > '\x1b[1m ' > '\x1b[0m \n' > '\x1b[1m \x1b[0m\x1b[1m Syntax \x1b[0m\x1b[1m \x1b[0m\x1b[1m \x1b[0m 1 ' > 'def iter_last(values: Iterable[T]) -> ' > '\x1b[1m{\x1b[0m \n' > '\x1b[1m \x1b[0m\x1b[1mhighlighting\x1b[0m\x1b[1m \x1b[0m\x1b[1m \x1b[0m 2 ' > '\x1b[2mâ \x1b[0m"""Iterate and generate a tuple w \x1b[2mâ ' > "\x1b[0m'foo': \x1b[1m[\x1b[0m \n" > '\x1b[1m \x1b[0m\x1b[1m & \x1b[0m\x1b[1m \x1b[0m\x1b[1m \x1b[0m 3 ' > '\x1b[2mâ \x1b[0miter_values = iter(values) \x1b[2mâ â ' > '\x1b[0m\x1b[1m3.1427\x1b[0m, \n' > '\x1b[1m \x1b[0m\x1b[1m pretty \x1b[0m\x1b[1m \x1b[0m\x1b[1m \x1b[0m 4 ' > '\x1b[2mâ \x1b[0mtry: \x1b[2mâ â ' > '\x1b[0m\x1b[1m(\x1b[0m \n' > '\x1b[1m \x1b[0m\x1b[1m printing \x1b[0m\x1b[1m \x1b[0m\x1b[1m \x1b[0m 5 ' > '\x1b[2mâ â \x1b[0mprevious_value = next(iter_va \x1b[2mâ â â ' > "\x1b[0m'Paul Atreides', \n" > '\x1b[1m \x1b[0m\x1b[1m \x1b[0m 6 \x1b[2mâ \x1b[0mexcept ' > "StopIteration: \x1b[2mâ â â \x1b[0m'Vladimir " > "Harkonnen', \n" > '\x1b[1m \x1b[0m\x1b[1m \x1b[0m 7 \x1b[2mâ â ' > "\x1b[0mreturn \x1b[2mâ â â \x1b[0m'Thufir " > "Hawat' \n" > '\x1b[1m \x1b[0m\x1b[1m \x1b[0m 8 \x1b[2mâ \x1b[0mfor value ' > 'in iter_values: \x1b[2mâ â ' > '\x1b[0m\x1b[1m)\x1b[0m \n' > '\x1b[1m \x1b[0m\x1b[1m \x1b[0m 9 \x1b[2mâ â \x1b[0myield ' > 'False, previous_value \x1b[2mâ ' > '\x1b[0m\x1b[1m]\x1b[0m, \n' > '\x1b[1m \x1b[0m\x1b[1m \x1b[0m10 \x1b[2mâ â ' > "\x1b[0mprevious_value = value \x1b[2mâ \x1b[0m'atomic': " > '\x1b[1m(\x1b[0m\x1b[3mFalse\x1b[0m, \x1b[3mTrue\x1b[0m, ' > '\x1b[3mNone\x1b[0m\x1b[1m)\x1b[0m \n' > '\x1b[1m \x1b[0m\x1b[1m \x1b[0m11 \x1b[2mâ \x1b[0myield True, ' > 'previous_value ' > '\x1b[1m}\x1b[0m \n' > '\x1b[1m ' > '\x1b[0m \n' > '\x1b[1m \x1b[0m\x1b[1m Markdown \x1b[0m\x1b[1m \x1b[0m# ' > 'Markdown ' > 'âââââââââââââââââââââââââââââââââââââââââ \n' > '\x1b[1m \x1b[0m ' > 'â \x1b[1mMarkdown\x1b[0m â \n' > '\x1b[1m \x1b[0mSupports much of the *markdown* ' > 'ââââââââââââââââââââââââââââââââââââââââân' > '\x1b[1m ' > '\x1b[0m__syntax__! \n' > '\x1b[1m \x1b[0m ' > 'Supports much of the \x1b[3mmarkdown\x1b[0m \x1b[1msyntax\x1b[0m! \n' > '\x1b[1m \x1b[0m- ' > 'Headers \n' > '\x1b[1m \x1b[0m- Basic formatting: **bold**, *italic*, ' > '\x1b[1m ⢠\x1b[0mHeaders \n' > '\x1b[1m \x1b[0m`code` ' > '\x1b[1m ⢠\x1b[0mBasic formatting: \x1b[1mbold\x1b[0m, \x1b[3mitalic\x1b[0m, ' > '\x1b[1mcode\x1b[0m \n' > '\x1b[1m \x1b[0m- Block quotes ' > '\x1b[1m ⢠\x1b[0mBlock quotes \n' > '\x1b[1m \x1b[0m- Lists, and more... ' > '\x1b[1m ⢠\x1b[0mLists, and more... \n' > '\x1b[1m ' > '\x1b[0m \n' > '\x1b[1m ' > '\x1b[0m \n' > '\x1b[1m \x1b[0m\x1b[1m +more! \x1b[0m\x1b[1m \x1b[0mProgress bars, ' > 'columns, styled logging handler, tracebacks, etc... \n' > '\x1b[1m ' > '\x1b[0m \n') > >tests/test_card.py:32: AssertionError >_______________________________ test_print_json ________________________________ > > def test_print_json(): > console = Console(file=io.StringIO(), color_system="truecolor") > console.print_json('[false, true, null, "foo"]', indent=4) > result = console.file.getvalue() > print(repr(result)) > expected = '\x1b[1m[\x1b[0m\n \x1b[3;91mfalse\x1b[0m,\n \x1b[3;92mtrue\x1b[0m,\n \x1b[3;35mnull\x1b[0m,\n \x1b[32m"foo"\x1b[0m\n\x1b[1m]\x1b[0m\n' >> assert result == expected >E assert '\x1b[1m[\x1b[0m\n \x1b[3mfalse\x1b[0m,\n \x1b[3mtrue\x1b[0m,\n \x1b[3mnull\x1b[0m,\n "foo"\n\x1b[1m]\x1b[0m\n' == '\x1b[1m[\x1b[0m\n \x1b[3;91mfalse\x1b[0m,\n \x1b[3;92mtrue\x1b[0m,\n \x1b[3;35mnull\x1b[0m,\n \x1b[32m"foo"\x1b[0m\n\x1b[1m]\x1b[0m\n' >E [ >E - false, >E ? --- >E + false, >E - true, >E ? --- >E + true, >E - null, >E ? --- >E + null, >E - "foo" >E + "foo" >E ] > >console = <console width=80 ColorSystem.TRUECOLOR> >expected = ('\x1b[1m[\x1b[0m\n' > ' \x1b[3;91mfalse\x1b[0m,\n' > ' \x1b[3;92mtrue\x1b[0m,\n' > ' \x1b[3;35mnull\x1b[0m,\n' > ' \x1b[32m"foo"\x1b[0m\n' > '\x1b[1m]\x1b[0m\n') >result = ('\x1b[1m[\x1b[0m\n' > ' \x1b[3mfalse\x1b[0m,\n' > ' \x1b[3mtrue\x1b[0m,\n' > ' \x1b[3mnull\x1b[0m,\n' > ' "foo"\n' > '\x1b[1m]\x1b[0m\n') > >tests/test_console.py:216: AssertionError >----------------------------- Captured stdout call ----------------------------- >'\x1b[1m[\x1b[0m\n \x1b[3mfalse\x1b[0m,\n \x1b[3mtrue\x1b[0m,\n \x1b[3mnull\x1b[0m,\n "foo"\n\x1b[1m]\x1b[0m\n' >_____________________________ test_print_json_data _____________________________ > > def test_print_json_data(): > console = Console(file=io.StringIO(), color_system="truecolor") > console.print_json(data=[False, True, None, "foo"], indent=4) > result = console.file.getvalue() > print(repr(result)) > expected = '\x1b[1m[\x1b[0m\n \x1b[3;91mfalse\x1b[0m,\n \x1b[3;92mtrue\x1b[0m,\n \x1b[3;35mnull\x1b[0m,\n \x1b[32m"foo"\x1b[0m\n\x1b[1m]\x1b[0m\n' >> assert result == expected >E assert '\x1b[1m[\x1b[0m\n \x1b[3mfalse\x1b[0m,\n \x1b[3mtrue\x1b[0m,\n \x1b[3mnull\x1b[0m,\n "foo"\n\x1b[1m]\x1b[0m\n' == '\x1b[1m[\x1b[0m\n \x1b[3;91mfalse\x1b[0m,\n \x1b[3;92mtrue\x1b[0m,\n \x1b[3;35mnull\x1b[0m,\n \x1b[32m"foo"\x1b[0m\n\x1b[1m]\x1b[0m\n' >E [ >E - false, >E ? --- >E + false, >E - true, >E ? --- >E + true, >E - null, >E ? --- >E + null, >E - "foo" >E + "foo" >E ] > >console = <console width=80 ColorSystem.TRUECOLOR> >expected = ('\x1b[1m[\x1b[0m\n' > ' \x1b[3;91mfalse\x1b[0m,\n' > ' \x1b[3;92mtrue\x1b[0m,\n' > ' \x1b[3;35mnull\x1b[0m,\n' > ' \x1b[32m"foo"\x1b[0m\n' > '\x1b[1m]\x1b[0m\n') >result = ('\x1b[1m[\x1b[0m\n' > ' \x1b[3mfalse\x1b[0m,\n' > ' \x1b[3mtrue\x1b[0m,\n' > ' \x1b[3mnull\x1b[0m,\n' > ' "foo"\n' > '\x1b[1m]\x1b[0m\n') > >tests/test_console.py:231: AssertionError >----------------------------- Captured stdout call ----------------------------- >'\x1b[1m[\x1b[0m\n \x1b[3mfalse\x1b[0m,\n \x1b[3mtrue\x1b[0m,\n \x1b[3mnull\x1b[0m,\n "foo"\n\x1b[1m]\x1b[0m\n' >_________________________ test_print_json_ensure_ascii _________________________ > > def test_print_json_ensure_ascii(): > console = Console(file=io.StringIO(), color_system="truecolor") > console.print_json(data={"foo": "ð©"}, ensure_ascii=False) > result = console.file.getvalue() > print(repr(result)) > expected = '\x1b[1m{\x1b[0m\n \x1b[1;34m"foo"\x1b[0m: \x1b[32m"ð©"\x1b[0m\n\x1b[1m}\x1b[0m\n' >> assert result == expected >E assert '\x1b[1m{\x1b[0m\n \x1b[1m"foo"\x1b[0m: "ð©"\n\x1b[1m}\x1b[0m\n' == '\x1b[1m{\x1b[0m\n \x1b[1;34m"foo"\x1b[0m: \x1b[32m"ð©"\x1b[0m\n\x1b[1m}\x1b[0m\n' >E { >E - "foo": "ð©" >E ? --- ----- ---- >E + "foo": "ð©" >E } > >console = <console width=80 ColorSystem.TRUECOLOR> >expected = ('\x1b[1m{\x1b[0m\n' > ' \x1b[1;34m"foo"\x1b[0m: \x1b[32m"ð©"\x1b[0m\n' > '\x1b[1m}\x1b[0m\n') >result = '\x1b[1m{\x1b[0m\n \x1b[1m"foo"\x1b[0m: "ð©"\n\x1b[1m}\x1b[0m\n' > >tests/test_console.py:240: AssertionError >----------------------------- Captured stdout call ----------------------------- >'\x1b[1m{\x1b[0m\n \x1b[1m"foo"\x1b[0m: "ð©"\n\x1b[1m}\x1b[0m\n' >__________________ test_print_json_with_default_ensure_ascii ___________________ > > def test_print_json_with_default_ensure_ascii(): > console = Console(file=io.StringIO(), color_system="truecolor") > console.print_json(data={"foo": "ð©"}) > result = console.file.getvalue() > print(repr(result)) > expected = '\x1b[1m{\x1b[0m\n \x1b[1;34m"foo"\x1b[0m: \x1b[32m"ð©"\x1b[0m\n\x1b[1m}\x1b[0m\n' >> assert result == expected >E assert '\x1b[1m{\x1b[0m\n \x1b[1m"foo"\x1b[0m: "ð©"\n\x1b[1m}\x1b[0m\n' == '\x1b[1m{\x1b[0m\n \x1b[1;34m"foo"\x1b[0m: \x1b[32m"ð©"\x1b[0m\n\x1b[1m}\x1b[0m\n' >E { >E - "foo": "ð©" >E ? --- ----- ---- >E + "foo": "ð©" >E } > >console = <console width=80 ColorSystem.TRUECOLOR> >expected = ('\x1b[1m{\x1b[0m\n' > ' \x1b[1;34m"foo"\x1b[0m: \x1b[32m"ð©"\x1b[0m\n' > '\x1b[1m}\x1b[0m\n') >result = '\x1b[1m{\x1b[0m\n \x1b[1m"foo"\x1b[0m: "ð©"\n\x1b[1m}\x1b[0m\n' > >tests/test_console.py:249: AssertionError >----------------------------- Captured stdout call ----------------------------- >'\x1b[1m{\x1b[0m\n \x1b[1m"foo"\x1b[0m: "ð©"\n\x1b[1m}\x1b[0m\n' >_________________________ test_print_json_indent_none __________________________ > > def test_print_json_indent_none(): > console = Console(file=io.StringIO(), color_system="truecolor") > data = {"name": "apple", "count": 1} > console.print_json(data=data, indent=None) > result = console.file.getvalue() > expected = '\x1b[1m{\x1b[0m\x1b[1;34m"name"\x1b[0m: \x1b[32m"apple"\x1b[0m, \x1b[1;34m"count"\x1b[0m: \x1b[1;36m1\x1b[0m\x1b[1m}\x1b[0m\n' >> assert result == expected >E assert '\x1b[1m{\x1b[0m\x1b[1m"name"\x1b[0m: "apple", \x1b[1m"count"\x1b[0m: \x1b[1m1\x1b[0m\x1b[1m}\x1b[0m\n' == '\x1b[1m{\x1b[0m\x1b[1;34m"name"\x1b[0m: \x1b[32m"apple"\x1b[0m, \x1b[1;34m"count"\x1b[0m: \x1b[1;36m1\x1b[0m\x1b[1m}\x1b[0m\n' >E - {"name": "apple", "count": 1} >E ? --- ----- ---- --- --- >E + {"name": "apple", "count": 1} > >console = <console width=80 ColorSystem.TRUECOLOR> >data = {'count': 1, 'name': 'apple'} >expected = ('\x1b[1m{\x1b[0m\x1b[1;34m"name"\x1b[0m: \x1b[32m"apple"\x1b[0m, ' > '\x1b[1;34m"count"\x1b[0m: \x1b[1;36m1\x1b[0m\x1b[1m}\x1b[0m\n') >result = ('\x1b[1m{\x1b[0m\x1b[1m"name"\x1b[0m: "apple", \x1b[1m"count"\x1b[0m: ' > '\x1b[1m1\x1b[0m\x1b[1m}\x1b[0m\n') > >tests/test_console.py:258: AssertionError >____________________________ test_markup_highlight _____________________________ > > def test_markup_highlight(): > console = Console(file=io.StringIO(), color_system="truecolor") > console.print("'[bold]foo[/bold]'") >> assert ( > console.file.getvalue() > == "\x1b[32m'\x1b[0m\x1b[1;32mfoo\x1b[0m\x1b[32m'\x1b[0m\n" > ) >E assert "'\x1b[1mfoo\x1b[0m'\n" == "\x1b[32m'\x1b[0m\x1b[1;32mfoo\x1b[0m\x1b[32m'\x1b[0m\n" >E - 'foo' >E + 'foo' > >console = <console width=80 ColorSystem.TRUECOLOR> > >tests/test_console.py:307: AssertionError >______________________________ test_console_style ______________________________ > > def test_console_style() -> None: > console = Console( > file=io.StringIO(), color_system="truecolor", force_terminal=True, style="red" > ) > console.print("foo") > expected = "\x1b[31mfoo\x1b[0m\n" > result = console.file.getvalue() >> assert result == expected >E AssertionError: assert 'foo\n' == '\x1b[31mfoo\x1b[0m\n' >E - foo >E + foo > >console = <console width=80 ColorSystem.TRUECOLOR> >expected = '\x1b[31mfoo\x1b[0m\n' >result = 'foo\n' > >tests/test_console.py:710: AssertionError >___________________________________ test_log ___________________________________ > > def test_log(): > expected = replace_link_ids( > "\x1b[2;36m[TIME]\x1b[0m\x1b[2;36m \x1b[0m \x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m32\x1b[0m\x1b]8;;\x1b\\\n\x1b[2;36m \x1b[0m\x1b[2;36m \x1b[0mHello from \x1b[1m<\x1b[0m\x1b[1;95mconsole\x1b[0m\x1b[39m \x1b[0m\x1b[33mwidth\x1b[0m\x1b[39m=\x1b[0m\x1b[1;36m80\x1b[0m\x1b[39m ColorSystem.TRUECOLOR\x1b[0m\x1b[1m>\x1b[0m ! \x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m33\x1b[0m\x1b]8;;\x1b\\\n\x1b[2;36m \x1b[0m\x1b[2;36m \x1b[0m\x1b[1m[\x1b[0m\x1b[1;36m1\x1b[0m, \x1b[1;36m2\x1b[0m, \x1b[1;36m3\x1b[0m\x1b[1m]\x1b[0m \x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m34\x1b[0m\x1b]8;;\x1b\\\n\x1b[2;36m \x1b[0m\x1b[34mââ\x1b[0m\x1b[34mâââââââââââââââââââââ\x1b[0m\x1b[34m \x1b[0m\x1b[3;34mlocals\x1b[0m\x1b[34m \x1b[0m\x1b[34mâââââââââââââââââââââ\x1b[0m\x1b[34mââ®\x1b[0m \x1b[2m \x1b[0m\n\x1b[2;36m \x1b[0m\x1b[34mâ\x1b[0m \x1b[3;33mconsole\x1b[0m\x1b[31m =\x1b[0m \x1b[1m<\x1b[0m\x1b[1;95mconsole\x1b[0m\x1b[39m \x1b[0m\x1b[33mwidth\x1b[0m\x1b[39m=\x1b[0m\x1b[1;36m80\x1b[0m\x1b[39m ColorSystem.TRUECOLOR\x1b[0m\x1b[1m>\x1b[0m \x1b[34mâ\x1b[0m \x1b[2m \x1b[0m\n\x1b[2;36m \x1b[0m\x1b[34mâ°âââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\x1b[0m \x1b[2m \x1b[0m\n" > ) > rendered = render_log() > print(repr(rendered)) >> assert rendered == expected >E AssertionError: assert '\x1b[2m[TIME]\x1b[0m\x1b[2m \x1b[0m \x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m32\x1b[0m\x1b]8;;\x1b\\\n\x1b[2m \x1b[0m\x1b[2m \x1b[0mHello from \x1b[1m<\x1b[0m\x1b[1mconsole\x1b[0m width=\x1b[1m80\x1b[0m ColorSystem.TRUECOLOR\x1b[1m>\x1b[0m ! \x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m33\x1b[0m\x1b]8;;\x1b\\\n\x1b[2m \x1b[0m\x1b[2m \x1b[0m\x1b[1m[\x1b[0m\x1b[1m1\x1b[0m, \x1b[1m2\x1b[0m, \x1b[1m3\x1b[0m\x1b[1m]\x1b[0m \x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m34\x1b[0m\x1b]8;;\x1b\\\n\x1b[2m \x1b[0mâââââââââââââââââââââââ \x1b[3mlocals\x1b[0m âââââââââââââââââââââââ® \x1b[2m \x1b[0m\n\x1b[2m \x1b[0mâ \x1b[3mconsole\x1b[0m = \x1b[1m<\x1b[0m\x1b[1mconsole\x1b[0m width=\x1b[1m80\x1b[0m ColorSystem.TRUECOLOR\x1b[1m>\x1b[0m â \x1b[2m \x1b[0m\n\x1b[2m \x1b[0mâ°ââââââââââââââââââââââââââââââââââââââââââââââââââââ⯠\x1b[2m \x1b[0m\n' == '\x1b[2;36m[TIME]\x1b[0m\x1b[2;36m \x1b[0m \x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m32\x1b[0m\x1b]8;;\x1b\\\n\x1b[2;36m \x1b[0m\x1b[2;36m \x1b[0mHello from \x1b[1m<\x1b[0m\x1b[1;95mconsole\x1b[0m\x1b[39m \x1b[0m\x1b[33mwidth\x1b[0m\x1b[39m=\x1b[0m\x1b[1;36m80\x1b[0m\x1b[39m ColorSystem.TRUECOLOR\x1b[0m\x1b[1m>\x1b[0m ! \x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m33\x1b[0m\x1b]8;;\x1b\\\n\x1b[2;36m \x1b[0m\x1b[2;36m \x1b[0m\x1b[1m[\x1b[0m\x1b[1;36m1\x1b[0m, \x1b[1;36m2\x1b[0m, \x1b[1;36m3\x1b[0m\x1b[1m]\x1b[0m \x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m34\x1b[0m\x1b]8;;\x1b\\\n\x1b[2;36m \x1b[0m\x1b[34mââ\x1b[0m\x1b[34mâââââââââââââââââââââ\x1b[0m\x1b[34m \x1b[0m\x1b[3;34mlocals\x1b[0m\x1b[34m \x1b[0m\x1b[34mâââââââââââââââââââââ\x1b[0m\x1b[34mââ®\x1b[0m \x1b[2m \x1b[0m\n\x1b[2;36m \x1b[0m\x1b[34mâ\x1b[0m \x1b[3;33mconsole\x1b[0m\x1b[31m =\x1b[0m \x1b[1m<\x1b[0m\x1b[1;95mconsole\x1b[0m\x1b[39m \x1b[0m\x1b[33mwidth\x1b[0m\x1b[39m=\x1b[0m\x1b[1;36m80\x1b[0m\x1b[39m ColorSystem.TRUECOLOR\x1b[0m\x1b[1m>\x1b[0m \x1b[34mâ\x1b[0m \x1b[2m \x1b[0m\n\x1b[2;36m \x1b[0m\x1b[34mâ°âââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\x1b[0m \x1b[2m \x1b[0m\n' >E - [TIME] 8;id=0;foo\source.py8;;\:8;id=0;foo\328;;\ >E ? --- --- >E + [TIME] 8;id=0;foo\source.py8;;\:8;id=0;foo\328;;\ >E - Hello from <console width=80 ColorSystem.TRUECOLOR> ! 8;id=0;foo\source.py8;;\:8;id=0;foo\338;;\ >E ? --- --- --- ^^^^^^^^^^^^^^^ --------- ---- --- ----- ---- >E + Hello from <console width=80 ColorSystem.TRUECOLOR> ! 8;id=0;foo\source.py8;;\:8;id=0;foo\338;;\ >E ? ^ >E - [1, 2, 3] 8;id=0;foo\source.py8;;\:8;id=0;foo\348;;\ >E + [1, 2, 3] 8;id=0;foo\source.py8;;\:8;id=0;foo\348;;\ >E - âââââââââââââââââââââââ locals âââââââââââââââââââââââ® >E ? --- ----- ---------- ^^^^ ------------- ^^^^^^^^^^^^^^^ --------- ---- >E + âââââââââââââââââââââââ locals âââââââââââââââââââââââ® >E ? ^^ ^ >E - â console = <console width=80 ColorSystem.TRUECOLOR> â >E ? --- -------------- ----- ---- --- ^^^^^^^^^^^^^^^ --------- ---- --- ----- ---- ----- ---- >E + â console = <console width=80 ColorSystem.TRUECOLOR> â >E ? ++ ^ >E - â°ââââââââââââââââââââââââââââââââââââââââââââââââââââ⯠>E ? --- ----- ---- >E + â°ââââââââââââââââââââââââââââââââââââââââââââââââââââ⯠> >expected = ('\x1b[2;36m[TIME]\x1b[0m\x1b[2;36m ' > '\x1b[0m ' > '\x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m32\x1b[0m\x1b]8;;\x1b\\\n' > '\x1b[2;36m \x1b[0m\x1b[2;36m \x1b[0mHello from ' > '\x1b[1m<\x1b[0m\x1b[1;95mconsole\x1b[0m\x1b[39m ' > '\x1b[0m\x1b[33mwidth\x1b[0m\x1b[39m=\x1b[0m\x1b[1;36m80\x1b[0m\x1b[39m ' > 'ColorSystem.TRUECOLOR\x1b[0m\x1b[1m>\x1b[0m ! ' > '\x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m33\x1b[0m\x1b]8;;\x1b\\\n' > '\x1b[2;36m \x1b[0m\x1b[2;36m \x1b[0m\x1b[1m[\x1b[0m\x1b[1;36m1\x1b[0m, ' > '\x1b[1;36m2\x1b[0m, ' > '\x1b[1;36m3\x1b[0m\x1b[1m]\x1b[0m ' > '\x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m34\x1b[0m\x1b]8;;\x1b\\\n' > '\x1b[2;36m ' > '\x1b[0m\x1b[34mââ\x1b[0m\x1b[34mâââââââââââââââââââââ\x1b[0m\x1b[34m ' > '\x1b[0m\x1b[3;34mlocals\x1b[0m\x1b[34m ' > '\x1b[0m\x1b[34mâââââââââââââââââââââ\x1b[0m\x1b[34mââ®\x1b[0m ' > '\x1b[2m \x1b[0m\n' > '\x1b[2;36m \x1b[0m\x1b[34mâ\x1b[0m \x1b[3;33mconsole\x1b[0m\x1b[31m ' > '=\x1b[0m \x1b[1m<\x1b[0m\x1b[1;95mconsole\x1b[0m\x1b[39m ' > '\x1b[0m\x1b[33mwidth\x1b[0m\x1b[39m=\x1b[0m\x1b[1;36m80\x1b[0m\x1b[39m ' > 'ColorSystem.TRUECOLOR\x1b[0m\x1b[1m>\x1b[0m \x1b[34mâ\x1b[0m ' > '\x1b[2m \x1b[0m\n' > '\x1b[2;36m ' > '\x1b[0m\x1b[34mâ°âââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\x1b[0m ' > '\x1b[2m \x1b[0m\n') >rendered = ('\x1b[2m[TIME]\x1b[0m\x1b[2m ' > '\x1b[0m ' > '\x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m32\x1b[0m\x1b]8;;\x1b\\\n' > '\x1b[2m \x1b[0m\x1b[2m \x1b[0mHello from ' > '\x1b[1m<\x1b[0m\x1b[1mconsole\x1b[0m width=\x1b[1m80\x1b[0m ' > 'ColorSystem.TRUECOLOR\x1b[1m>\x1b[0m ! ' > '\x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m33\x1b[0m\x1b]8;;\x1b\\\n' > '\x1b[2m \x1b[0m\x1b[2m \x1b[0m\x1b[1m[\x1b[0m\x1b[1m1\x1b[0m, ' > '\x1b[1m2\x1b[0m, ' > '\x1b[1m3\x1b[0m\x1b[1m]\x1b[0m ' > '\x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m34\x1b[0m\x1b]8;;\x1b\\\n' > '\x1b[2m \x1b[0mâââââââââââââââââââââââ \x1b[3mlocals\x1b[0m ' > 'âââââââââââââââââââââââ® \x1b[2m \x1b[0m\n' > '\x1b[2m \x1b[0mâ \x1b[3mconsole\x1b[0m = ' > '\x1b[1m<\x1b[0m\x1b[1mconsole\x1b[0m width=\x1b[1m80\x1b[0m ' > 'ColorSystem.TRUECOLOR\x1b[1m>\x1b[0m â \x1b[2m \x1b[0m\n' > '\x1b[2m ' > '\x1b[0mâ°ââââââââââââââââââââââââââââââââââââââââââââââââââââ⯠' > '\x1b[2m \x1b[0m\n') > >tests/test_log.py:44: AssertionError >----------------------------- Captured stdout call ----------------------------- >'\x1b[2m[TIME]\x1b[0m\x1b[2m \x1b[0m \x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m32\x1b[0m\x1b]8;;\x1b\\\n\x1b[2m \x1b[0m\x1b[2m \x1b[0mHello from \x1b[1m<\x1b[0m\x1b[1mconsole\x1b[0m width=\x1b[1m80\x1b[0m ColorSystem.TRUECOLOR\x1b[1m>\x1b[0m ! \x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m33\x1b[0m\x1b]8;;\x1b\\\n\x1b[2m \x1b[0m\x1b[2m \x1b[0m\x1b[1m[\x1b[0m\x1b[1m1\x1b[0m, \x1b[1m2\x1b[0m, \x1b[1m3\x1b[0m\x1b[1m]\x1b[0m \x1b]8;id=0;foo\x1b\\\x1b[2msource.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:\x1b[0m\x1b]8;id=0;foo\x1b\\\x1b[2m34\x1b[0m\x1b]8;;\x1b\\\n\x1b[2m \x1b[0mâââââââââââââââââââââââ \x1b[3mlocals\x1b[0m âââââââââââââââââââââââ® \x1b[2m \x1b[0m\n\x1b[2m \x1b[0mâ \x1b[3mconsole\x1b[0m = \x1b[1m<\x1b[0m\x1b[1mconsole\x1b[0m width=\x1b[1m80\x1b[0m ColorSystem.TRUECOLOR\x1b[1m>\x1b[0m â \x1b[2m \x1b[0m\n\x1b[2m \x1b[0mâ°ââââââââââââââââââââââââââââââââââââââââââââââââââââ⯠\x1b[2m \x1b[0m\n' >_____________________________ test_markdown_render _____________________________ > > def test_markdown_render(): > markdown = Markdown(MARKDOWN) > rendered_markdown = render(markdown) > expected = "ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\nâ \x1b[1mHeading\x1b[0m â\nâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââân\n\n \x1b[1;4mSub-heading\x1b[0m \n\n \x1b[1mHeading\x1b[0m \n\n \x1b[1;2mH4 Heading\x1b[0m \n\n \x1b[4mH5 Heading\x1b[0m \n\n \x1b[3mH6 Heading\x1b[0m \n\nParagraphs are separated by a blank line. \n\nTwo spaces at the end of a line \nproduces a line break. \n\nText attributes \x1b[3mitalic\x1b[0m, \x1b[1mbold\x1b[0m, \x1b[1;36;40mmonospace\x1b[0m. \n\nHorizontal rule: \n\n\x1b[33mââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\x1b[0m\nBullet list: \n\n\x1b[1;33m ⢠\x1b[0mapples \n\x1b[1;33m ⢠\x1b[0moranges \n\x1b[1;33m ⢠\x1b[0mpears \n\nNumbered list: \n\n\x1b[1;33m 1 \x1b[0mlather \n\x1b[1;33m 2 \x1b[0mrinse \n\x1b[1;33m 3 \x1b[0mrepeat \n\nAn \x1b]8;id=0;foo\x1b\\\x1b[4;34mexample\x1b[0m\x1b]8;;\x1b\\. \n\n\x1b[35mâ \x1b[0m\x1b[35mMarkdown uses email-style > characters for blockquoting.\x1b[0m\x1b[35m \x1b[0m\n\x1b[35mâ \x1b[0m\x1b[35mLorem ipsum\x1b[0m\x1b[35m \x1b[0m\n\nð \x1b]8;id=0;foo\x1b\\progress\x1b]8;;\x1b\\ \n\n\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34ma=1 \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\n\n\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34mimport\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mthis\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\n\n\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34mfoobar \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\n\n\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34mimport this \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\n\n\x1b[1;33m 1 \x1b[0mList item \n\x1b[1;33m \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[1;33m \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34mCode block \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[1;33m \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n" >> assert rendered_markdown == expected >E AssertionError: assert 'ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\nâ \x1b[1mHeading\x1b[0m â\nâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââân\n\n \x1b[1;4mSub-heading\x1b[0m \n\n \x1b[1mHeading\x1b[0m \n\n \x1b[1;2mH4 Heading\x1b[0m \n\n \x1b[4mH5 Heading\x1b[0m \n\n \x1b[3mH6 Heading\x1b[0m \n\nParagraphs are separated by a blank line. \n\nTwo spaces at the end of a line \nproduces a line break. \n\nText attributes \x1b[3mitalic\x1b[0m, \x1b[1mbold\x1b[0m, \x1b[1mmonospace\x1b[0m. \n\nHorizontal rule: \n\nââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\nBullet list: \n\n\x1b[1m ⢠\x1b[0mapples \n\x1b[1m ⢠\x1b[0moranges \n\x1b[1m ⢠\x1b[0mpears \n\nNumbered list: \n\n\x1b[1m 1 \x1b[0mlather \n\x1b[1m 2 \x1b[0mrinse \n\x1b[1m 3 \x1b[0mrepeat \n\nAn \x1b]8;id=0;foo\x1b\\\x1b[4mexample\x1b[0m\x1b]8;;\x1b\\. \n\nâ Markdown uses email-style > characters for blockquoting. \nâ Lorem ipsum \n\nð \x1b]8;id=0;foo\x1b\\progress\x1b]8;;\x1b\\ \n\n \n a=1 \n \n\n \n import this \n \n\n \n foobar \n \n\n \n import this \n \n\n\x1b[1m 1 \x1b[0mList item \n\x1b[1m \x1b[0m \n\x1b[1m \x1b[0m Code block \n\x1b[1m \x1b[0m \n' == 'ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\nâ \x1b[1mHeading\x1b[0m â\nâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââân\n\n \x1b[1;4mSub-heading\x1b[0m \n\n \x1b[1mHeading\x1b[0m \n\n \x1b[1;2mH4 Heading\x1b[0m \n\n \x1b[4mH5 Heading\x1b[0m \n\n \x1b[3mH6 Heading\x1b[0m \n\nParagraphs are separated by a blank line. \n\nTwo spaces at the end of a line \nproduces a line break. \n\nText attributes \x1b[3mitalic\x1b[0m, \x1b[1mbold\x1b[0m, \x1b[1;36;40mmonospace\x1b[0m. \n\nHorizontal rule: \n\n\x1b[33mââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\x1b[0m\nBullet list: \n\n\x1b[1;33m ⢠\x1b[0mapples \n\x1b[1;33m ⢠\x1b[0moranges \n\x1b[1;33m ⢠\x1b[0mpears \n\nNumbered list: \n\n\x1b[1;33m 1 \x1b[0mlather \n\x1b[1;33m 2 \x1b[0mrinse \n\x1b[1;33m 3 \x1b[0mrepeat \n\nAn \x1b]8;id=0;foo\x1b\\\x1b[4;34mexample\x1b[0m\x1b]8;;\x1b\\. \n\n\x1b[35mâ \x1b[0m\x1b[35mMarkdown uses email-style > characters for blockquoting.\x1b[0m\x1b[35m \x1b[0m\n\x1b[35mâ \x1b[0m\x1b[35mLorem ipsum\x1b[0m\x1b[35m \x1b[0m\n\nð \x1b]8;id=0;foo\x1b\\progress\x1b]8;;\x1b\\ \n\n\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34ma=1 \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\n\n\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34mimport\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mthis\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\n\n\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34mfoobar \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\n\n\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34mimport this \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\n\n\x1b[1;33m 1 \x1b[0mList item \n\x1b[1;33m \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[1;33m \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34mCode block \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[1;33m \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n' >E ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E â Heading â >E ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E >E >E Sub-heading >E >E Heading >E >E H4 Heading >E >E H5 Heading >E >E H6 Heading >E >E Paragraphs are separated by a blank line. >E >E Two spaces at the end of a line >E produces a line break. >E >E - Text attributes italic, bold, monospace. >E ? ------ >E + Text attributes italic, bold, monospace. >E >E Horizontal rule: >E >E - ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E ? ----- ---- >E + ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E Bullet list: >E >E - ⢠apples >E ? --- >E + ⢠apples >E - ⢠oranges >E ? --- >E + ⢠oranges >E - ⢠pears >E ? --- >E + ⢠pears >E >E Numbered list: >E >E - 1 lather >E ? --- >E + 1 lather >E - 2 rinse >E ? --- >E + 2 rinse >E - 3 repeat >E ? ^ ---- >E + 3 repeat >E ? ^^ >E >E - An 8;id=0;foo\example8;;\. >E ? --- >E + An 8;id=0;foo\example8;;\. >E >E - â Markdown uses email-style > characters for blockquoting. >E - â Lorem ipsum >E + â Markdown uses email-style > characters for blockquoting. >E + â Lorem ipsum >E >E ð 8;id=0;foo\progress8;;\ >E >E - >E + >E - a=1 >E ? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >E + a=1 >E ? ^ ^ >E - >E + >E >E - >E - import this >E - >E + >E + import this >E + >E >E - >E + >E - foobar >E ? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >E + foobar >E ? ^ ^ >E - >E + >E >E - >E + >E - import this >E ? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >E + import this >E ? ^ ^ >E - >E + >E >E - 1 List item >E ? --- >E + 1 List item >E - >E + >E - Code block >E ? --- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >E + Code block >E ? ^ ^ >E - >E + > >expected = ('ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\n' > 'â ' > '\x1b[1mHeading\x1b[0m â\n' > 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââân' > '\n' > '\n' > ' ' > '\x1b[1;4mSub-heading\x1b[0m \n' > '\n' > ' ' > '\x1b[1mHeading\x1b[0m \n' > '\n' > ' \x1b[1;2mH4 ' > 'Heading\x1b[0m \n' > '\n' > ' \x1b[4mH5 ' > 'Heading\x1b[0m \n' > '\n' > ' \x1b[3mH6 ' > 'Heading\x1b[0m \n' > '\n' > 'Paragraphs are separated by a blank ' > 'line. \n' > '\n' > 'Two spaces at the end of a ' > 'line \n' > 'produces a line ' > 'break. \n' > '\n' > 'Text attributes \x1b[3mitalic\x1b[0m, \x1b[1mbold\x1b[0m, ' > '\x1b[1;36;40mmonospace\x1b[0m. \n' > '\n' > 'Horizontal ' > 'rule: \n' > '\n' > '\x1b[33mââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\x1b[0m\n' > 'Bullet ' > 'list: \n' > '\n' > '\x1b[1;33m ⢠' > '\x1b[0mapples \n' > '\x1b[1;33m ⢠' > '\x1b[0moranges \n' > '\x1b[1;33m ⢠' > '\x1b[0mpears \n' > '\n' > 'Numbered ' > 'list: \n' > '\n' > '\x1b[1;33m 1 ' > '\x1b[0mlather \n' > '\x1b[1;33m 2 ' > '\x1b[0mrinse \n' > '\x1b[1;33m 3 ' > '\x1b[0mrepeat \n' > '\n' > 'An ' > '\x1b]8;id=0;foo\x1b\\\x1b[4;34mexample\x1b[0m\x1b]8;;\x1b\\. \n' > '\n' > '\x1b[35mâ \x1b[0m\x1b[35mMarkdown uses email-style > characters for ' > 'blockquoting.\x1b[0m\x1b[35m \x1b[0m\n' > '\x1b[35mâ \x1b[0m\x1b[35mLorem ' > 'ipsum\x1b[0m\x1b[35m ' > '\x1b[0m\n' > '\n' > 'ð ' > '\x1b]8;id=0;foo\x1b\\progress\x1b]8;;\x1b\\ \n' > '\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\x1b[48;2;39;40;34ma=1 ' > '\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34mimport\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mthis\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\x1b[48;2;39;40;34mfoobar ' > '\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34mimport ' > 'this ' > '\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\n' > '\x1b[1;33m 1 \x1b[0mList ' > 'item \n' > '\x1b[1;33m ' > '\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[1;33m \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34mCode ' > 'block ' > '\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n' > '\x1b[1;33m ' > '\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n') >markdown = <rich.markdown.Markdown object at 0x00005638aa6e8c60> >rendered_markdown = ('ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\n' > 'â ' > '\x1b[1mHeading\x1b[0m â\n' > 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââân' > '\n' > '\n' > ' ' > '\x1b[1;4mSub-heading\x1b[0m \n' > '\n' > ' ' > '\x1b[1mHeading\x1b[0m \n' > '\n' > ' \x1b[1;2mH4 ' > 'Heading\x1b[0m \n' > '\n' > ' \x1b[4mH5 ' > 'Heading\x1b[0m \n' > '\n' > ' \x1b[3mH6 ' > 'Heading\x1b[0m \n' > '\n' > 'Paragraphs are separated by a blank ' > 'line. \n' > '\n' > 'Two spaces at the end of a ' > 'line \n' > 'produces a line ' > 'break. \n' > '\n' > 'Text attributes \x1b[3mitalic\x1b[0m, \x1b[1mbold\x1b[0m, ' > '\x1b[1mmonospace\x1b[0m. \n' > '\n' > 'Horizontal ' > 'rule: \n' > '\n' > 'ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\n' > 'Bullet ' > 'list: \n' > '\n' > '\x1b[1m ⢠' > '\x1b[0mapples \n' > '\x1b[1m ⢠' > '\x1b[0moranges \n' > '\x1b[1m ⢠' > '\x1b[0mpears \n' > '\n' > 'Numbered ' > 'list: \n' > '\n' > '\x1b[1m 1 ' > '\x1b[0mlather \n' > '\x1b[1m 2 ' > '\x1b[0mrinse \n' > '\x1b[1m 3 ' > '\x1b[0mrepeat \n' > '\n' > 'An ' > '\x1b]8;id=0;foo\x1b\\\x1b[4mexample\x1b[0m\x1b]8;;\x1b\\. \n' > '\n' > 'â Markdown uses email-style > characters for ' > 'blockquoting. \n' > 'â Lorem ' > 'ipsum \n' > '\n' > 'ð ' > '\x1b]8;id=0;foo\x1b\\progress\x1b]8;;\x1b\\ \n' > '\n' > ' \n' > ' ' > 'a=1 \n' > ' \n' > '\n' > ' \n' > ' import ' > 'this \n' > ' \n' > '\n' > ' \n' > ' ' > 'foobar \n' > ' \n' > '\n' > ' \n' > ' import ' > 'this \n' > ' \n' > '\n' > '\x1b[1m 1 \x1b[0mList ' > 'item \n' > '\x1b[1m ' > '\x1b[0m \n' > '\x1b[1m \x1b[0m Code ' > 'block \n' > '\x1b[1m ' > '\x1b[0m \n') > >tests/test_markdown.py:103: AssertionError >----------------------------- Captured stdout call ----------------------------- >'ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\nâ \x1b[1mHeading\x1b[0m â\nâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââân\n\n \x1b[1;4mSub-heading\x1b[0m \n\n \x1b[1mHeading\x1b[0m \n\n \x1b[1;2mH4 Heading\x1b[0m \n\n \x1b[4mH5 Heading\x1b[0m \n\n \x1b[3mH6 Heading\x1b[0m \n\nParagraphs are separated by a blank line. \n\nTwo spaces at the end of a line \nproduces a line break. \n\nText attributes \x1b[3mitalic\x1b[0m, \x1b[1mbold\x1b[0m, \x1b[1mmonospace\x1b[0m. \n\nHorizontal rule: \n\nââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\nBullet list: \n\n\x1b[1m ⢠\x1b[0mapples \n\x1b[1m ⢠\x1b[0moranges \n\x1b[1m ⢠\x1b[0mpears \n\nNumbered list: \n\n\x1b[1m 1 \x1b[0mlather \n\x1b[1m 2 \x1b[0mrinse \n\x1b[1m 3 \x1b[0mrepeat \n\nAn \x1b]8;id=0;foo\x1b\\\x1b[4mexample\x1b[0m\x1b]8;;\x1b\\. \n\nâ Markdown uses email-style > characters for blockquoting. \nâ Lorem ipsum \n\nð \x1b]8;id=0;foo\x1b\\progress\x1b]8;;\x1b\\ \n\n \n a=1 \n \n\n \n import this \n \n\n \n foobar \n \n\n \n import this \n \n\n\x1b[1m 1 \x1b[0mList item \n\x1b[1m \x1b[0m \n\x1b[1m \x1b[0m Code block \n\x1b[1m \x1b[0m \n' >_______________________________ test_inline_code _______________________________ > > def test_inline_code(): > markdown = Markdown( > "inline `import this` code", > inline_code_lexer="python", > inline_code_theme="emacs", > ) > result = render(markdown) > expected = "inline \x1b[1;38;2;170;34;255;48;2;248;248;248mimport\x1b[0m\x1b[38;2;0;0;0;48;2;248;248;248m \x1b[0m\x1b[1;38;2;0;0;255;48;2;248;248;248mthis\x1b[0m code \n" > print(result) > print(repr(result)) >> assert result == expected >E AssertionError: assert 'inline \x1b[1mimport\x1b[0m \x1b[1mthis\x1b[0m code \n' == 'inline \x1b[1;38;2;170;34;255;48;2;248;248;248mimport\x1b[0m\x1b[38;2;0;0;0;48;2;248;248;248m \x1b[0m\x1b[1;38;2;0;0;255;48;2;248;248;248mthis\x1b[0m code \n' >E - inline import this code >E + inline import this code > >expected = ('inline ' > '\x1b[1;38;2;170;34;255;48;2;248;248;248mimport\x1b[0m\x1b[38;2;0;0;0;48;2;248;248;248m ' > '\x1b[0m\x1b[1;38;2;0;0;255;48;2;248;248;248mthis\x1b[0m ' > 'code \n') >markdown = <rich.markdown.Markdown object at 0x00005638ab0be2c0> >result = ('inline \x1b[1mimport\x1b[0m \x1b[1mthis\x1b[0m ' > 'code \n') > >tests/test_markdown.py:116: AssertionError >----------------------------- Captured stdout call ----------------------------- >'inline \x1b[1mimport\x1b[0m \x1b[1mthis\x1b[0m code \n' >inline import this code > >'inline \x1b[1mimport\x1b[0m \x1b[1mthis\x1b[0m code \n' >_____________________________ test_markdown_render _____________________________ > > def test_markdown_render(): > markdown = Markdown(MARKDOWN, hyperlinks=False) > rendered_markdown = render(markdown) > print(repr(rendered_markdown)) > expected = "ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\nâ \x1b[1mHeading\x1b[0m â\nâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââân\n\n \x1b[1;4mSub-heading\x1b[0m \n\n \x1b[1mHeading\x1b[0m \n\n \x1b[1;2mH4 Heading\x1b[0m \n\n \x1b[4mH5 Heading\x1b[0m \n\n \x1b[3mH6 Heading\x1b[0m \n\nParagraphs are separated by a blank line. \n\nTwo spaces at the end of a line \nproduces a line break. \n\nText attributes \x1b[3mitalic\x1b[0m, \x1b[1mbold\x1b[0m, \x1b[1;36;40mmonospace\x1b[0m. \n\nHorizontal rule: \n\n\x1b[33mââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\x1b[0m\nBullet list: \n\n\x1b[1;33m ⢠\x1b[0mapples \n\x1b[1;33m ⢠\x1b[0moranges \n\x1b[1;33m ⢠\x1b[0mpears \n\nNumbered list: \n\n\x1b[1;33m 1 \x1b[0mlather \n\x1b[1;33m 2 \x1b[0mrinse \n\x1b[1;33m 3 \x1b[0mrepeat \n\nAn \x1b[94mexample\x1b[0m (\x1b[4;34mhttp://example.com\x1b[0m). \n\n\x1b[35mâ \x1b[0m\x1b[35mMarkdown uses email-style > characters for blockquoting.\x1b[0m\x1b[35m \x1b[0m\n\x1b[35mâ \x1b[0m\x1b[35mLorem ipsum\x1b[0m\x1b[35m \x1b[0m\n\nð progress \n\n\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34ma=1 \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\n\n\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34mimport\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mthis\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\n\n\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34mfoobar \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\n" >> assert rendered_markdown == expected >E AssertionError: assert 'ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\nâ \x1b[1mHeading\x1b[0m â\nâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââân\n\n \x1b[1;4mSub-heading\x1b[0m \n\n \x1b[1mHeading\x1b[0m \n\n \x1b[1;2mH4 Heading\x1b[0m \n\n \x1b[4mH5 Heading\x1b[0m \n\n \x1b[3mH6 Heading\x1b[0m \n\nParagraphs are separated by a blank line. \n\nTwo spaces at the end of a line \nproduces a line break. \n\nText attributes \x1b[3mitalic\x1b[0m, \x1b[1mbold\x1b[0m, \x1b[1mmonospace\x1b[0m. \n\nHorizontal rule: \n\nââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\nBullet list: \n\n\x1b[1m ⢠\x1b[0mapples \n\x1b[1m ⢠\x1b[0moranges \n\x1b[1m ⢠\x1b[0mpears \n\nNumbered list: \n\n\x1b[1m 1 \x1b[0mlather \n\x1b[1m 2 \x1b[0mrinse \n\x1b[1m 3 \x1b[0mrepeat \n\nAn example (\x1b[4mhttp://example.com\x1b[0m). \n\nâ Markdown uses email-style > characters for blockquoting. \nâ Lorem ipsum \n\nð progress \n\n \n a=1 \n \n\n \n import this \n \n\n \n foobar \n \n' == 'ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\nâ \x1b[1mHeading\x1b[0m â\nâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââân\n\n \x1b[1;4mSub-heading\x1b[0m \n\n \x1b[1mHeading\x1b[0m \n\n \x1b[1;2mH4 Heading\x1b[0m \n\n \x1b[4mH5 Heading\x1b[0m \n\n \x1b[3mH6 Heading\x1b[0m \n\nParagraphs are separated by a blank line. \n\nTwo spaces at the end of a line \nproduces a line break. \n\nText attributes \x1b[3mitalic\x1b[0m, \x1b[1mbold\x1b[0m, \x1b[1;36;40mmonospace\x1b[0m. \n\nHorizontal rule: \n\n\x1b[33mââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\x1b[0m\nBullet list: \n\n\x1b[1;33m ⢠\x1b[0mapples \n\x1b[1;33m ⢠\x1b[0moranges \n\x1b[1;33m ⢠\x1b[0mpears \n\nNumbered list: \n\n\x1b[1;33m 1 \x1b[0mlather \n\x1b[1;33m 2 \x1b[0mrinse \n\x1b[1;33m 3 \x1b[0mrepeat \n\nAn \x1b[94mexample\x1b[0m (\x1b[4;34mhttp://example.com\x1b[0m). \n\n\x1b[35mâ \x1b[0m\x1b[35mMarkdown uses email-style > characters for blockquoting.\x1b[0m\x1b[35m \x1b[0m\n\x1b[35mâ \x1b[0m\x1b[35mLorem ipsum\x1b[0m\x1b[35m \x1b[0m\n\nð progress \n\n\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34ma=1 \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\n\n\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34mimport\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mthis\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\n\n\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\x1b[48;2;39;40;34mfoobar \x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[48;2;39;40;34m \x1b[0m\n' >E ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E â Heading â >E ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E >E >E Sub-heading >E >E Heading >E >E H4 Heading >E >E H5 Heading >E >E H6 Heading >E >E Paragraphs are separated by a blank line. >E >E Two spaces at the end of a line >E produces a line break. >E >E - Text attributes italic, bold, monospace. >E ? ------ >E + Text attributes italic, bold, monospace. >E >E Horizontal rule: >E >E - ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E ? ----- ---- >E + ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ >E Bullet list: >E >E - ⢠apples >E ? --- >E + ⢠apples >E - ⢠oranges >E ? --- >E + ⢠oranges >E - ⢠pears >E ? --- >E + ⢠pears >E >E Numbered list: >E >E - 1 lather >E ? --- >E + 1 lather >E - 2 rinse >E ? --- >E + 2 rinse >E - 3 repeat >E ? ^ ---- >E + 3 repeat >E ? ^^ >E >E - An example (http://example.com). >E ? ----- ---- --- >E + An example (http://example.com). >E >E - â Markdown uses email-style > characters for blockquoting. >E - â Lorem ipsum >E + â Markdown uses email-style > characters for blockquoting. >E + â Lorem ipsum >E >E ð progress >E >E - >E + >E - a=1 >E ? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >E + a=1 >E ? ^ ^ >E - >E + >E >E - >E - import this >E - >E + >E + import this >E + >E >E - >E + >E - foobar >E ? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >E + foobar >E ? ^ ^ >E - >E + > >expected = ('ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\n' > 'â ' > '\x1b[1mHeading\x1b[0m â\n' > 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââân' > '\n' > '\n' > ' ' > '\x1b[1;4mSub-heading\x1b[0m \n' > '\n' > ' ' > '\x1b[1mHeading\x1b[0m \n' > '\n' > ' \x1b[1;2mH4 ' > 'Heading\x1b[0m \n' > '\n' > ' \x1b[4mH5 ' > 'Heading\x1b[0m \n' > '\n' > ' \x1b[3mH6 ' > 'Heading\x1b[0m \n' > '\n' > 'Paragraphs are separated by a blank ' > 'line. \n' > '\n' > 'Two spaces at the end of a ' > 'line \n' > 'produces a line ' > 'break. \n' > '\n' > 'Text attributes \x1b[3mitalic\x1b[0m, \x1b[1mbold\x1b[0m, ' > '\x1b[1;36;40mmonospace\x1b[0m. \n' > '\n' > 'Horizontal ' > 'rule: \n' > '\n' > '\x1b[33mââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\x1b[0m\n' > 'Bullet ' > 'list: \n' > '\n' > '\x1b[1;33m ⢠' > '\x1b[0mapples \n' > '\x1b[1;33m ⢠' > '\x1b[0moranges \n' > '\x1b[1;33m ⢠' > '\x1b[0mpears \n' > '\n' > 'Numbered ' > 'list: \n' > '\n' > '\x1b[1;33m 1 ' > '\x1b[0mlather \n' > '\x1b[1;33m 2 ' > '\x1b[0mrinse \n' > '\x1b[1;33m 3 ' > '\x1b[0mrepeat \n' > '\n' > 'An \x1b[94mexample\x1b[0m ' > '(\x1b[4;34mhttp://example.com\x1b[0m). \n' > '\n' > '\x1b[35mâ \x1b[0m\x1b[35mMarkdown uses email-style > characters for ' > 'blockquoting.\x1b[0m\x1b[35m \x1b[0m\n' > '\x1b[35mâ \x1b[0m\x1b[35mLorem ' > 'ipsum\x1b[0m\x1b[35m ' > '\x1b[0m\n' > '\n' > 'ð ' > 'progress \n' > '\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\x1b[48;2;39;40;34ma=1 ' > '\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34mimport\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mthis\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\x1b[48;2;39;40;34mfoobar ' > '\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n' > '\x1b[48;2;39;40;34m ' > '\x1b[0m\n') >markdown = <rich.markdown.Markdown object at 0x00005638aa4946e8> >rendered_markdown = ('ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\n' > 'â ' > '\x1b[1mHeading\x1b[0m â\n' > 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââân' > '\n' > '\n' > ' ' > '\x1b[1;4mSub-heading\x1b[0m \n' > '\n' > ' ' > '\x1b[1mHeading\x1b[0m \n' > '\n' > ' \x1b[1;2mH4 ' > 'Heading\x1b[0m \n' > '\n' > ' \x1b[4mH5 ' > 'Heading\x1b[0m \n' > '\n' > ' \x1b[3mH6 ' > 'Heading\x1b[0m \n' > '\n' > 'Paragraphs are separated by a blank ' > 'line. \n' > '\n' > 'Two spaces at the end of a ' > 'line \n' > 'produces a line ' > 'break. \n' > '\n' > 'Text attributes \x1b[3mitalic\x1b[0m, \x1b[1mbold\x1b[0m, ' > '\x1b[1mmonospace\x1b[0m. \n' > '\n' > 'Horizontal ' > 'rule: \n' > '\n' > 'ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\n' > 'Bullet ' > 'list: \n' > '\n' > '\x1b[1m ⢠' > '\x1b[0mapples \n' > '\x1b[1m ⢠' > '\x1b[0moranges \n' > '\x1b[1m ⢠' > '\x1b[0mpears \n' > '\n' > 'Numbered ' > 'list: \n' > '\n' > '\x1b[1m 1 ' > '\x1b[0mlather \n' > '\x1b[1m 2 ' > '\x1b[0mrinse \n' > '\x1b[1m 3 ' > '\x1b[0mrepeat \n' > '\n' > 'An example ' > '(\x1b[4mhttp://example.com\x1b[0m). \n' > '\n' > 'â Markdown uses email-style > characters for ' > 'blockquoting. \n' > 'â Lorem ' > 'ipsum \n' > '\n' > 'ð ' > 'progress \n' > '\n' > ' \n' > ' ' > 'a=1 \n' > ' \n' > '\n' > ' \n' > ' import ' > 'this \n' > ' \n' > '\n' > ' \n' > ' ' > 'foobar \n' > ' \n') > >tests/test_markdown_no_hyperlinks.py:97: AssertionError >----------------------------- Captured stdout call ----------------------------- >'ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\nâ \x1b[1mHeading\x1b[0m â\nâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââân\n\n \x1b[1;4mSub-heading\x1b[0m \n\n \x1b[1mHeading\x1b[0m \n\n \x1b[1;2mH4 Heading\x1b[0m \n\n \x1b[4mH5 Heading\x1b[0m \n\n \x1b[3mH6 Heading\x1b[0m \n\nParagraphs are separated by a blank line. \n\nTwo spaces at the end of a line \nproduces a line break. \n\nText attributes \x1b[3mitalic\x1b[0m, \x1b[1mbold\x1b[0m, \x1b[1mmonospace\x1b[0m. \n\nHorizontal rule: \n\nââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ\nBullet list: \n\n\x1b[1m ⢠\x1b[0mapples \n\x1b[1m ⢠\x1b[0moranges \n\x1b[1m ⢠\x1b[0mpears \n\nNumbered list: \n\n\x1b[1m 1 \x1b[0mlather \n\x1b[1m 2 \x1b[0mrinse \n\x1b[1m 3 \x1b[0mrepeat \n\nAn example (\x1b[4mhttp://example.com\x1b[0m). \n\nâ Markdown uses email-style > characters for blockquoting. \nâ Lorem ipsum \n\nð progress \n\n \n a=1 \n \n\n \n import this \n \n\n \n foobar \n \n' >_____________________________ test_divide_complex ______________________________ > > def test_divide_complex(): > MAP = ( > "[on orange4] [on green]XX[on orange4] \n" > " \n" > " \n" > " \n" > " [bright_red on black]Y[on orange4] \n" > "[on green]X[on orange4] [on green]X[on orange4] \n" > " [on green]X[on orange4] [on green]X\n" > "[on orange4] \n" > " [on green]XX[on orange4] \n" > ) > from rich.console import Console > from rich.text import Text > > text = Text.from_markup(MAP) > console = Console( > color_system="truecolor", width=30, force_terminal=True, file=StringIO() > ) > console.print(text) > result = console.file.getvalue() > > print(repr(result)) > expected = "\x1b[48;5;94m \x1b[0m\x1b[42mXX\x1b[0m\x1b[48;5;94m \x1b[0m\n\x1b[48;5;94m \x1b[0m\n\x1b[48;5;94m \x1b[0m\n\x1b[48;5;94m \x1b[0m\n\x1b[48;5;94m \x1b[0m\x1b[91;40mY\x1b[0m\x1b[91;48;5;94m \x1b[0m\n\x1b[91;42mX\x1b[0m\x1b[91;48;5;94m \x1b[0m\x1b[91;42mX\x1b[0m\x1b[91;48;5;94m \x1b[0m\n\x1b[91;48;5;94m \x1b[0m\x1b[91;42mX\x1b[0m\x1b[91;48;5;94m \x1b[0m\x1b[91;42mX\x1b[0m\n\x1b[91;48;5;94m \x1b[0m\n\x1b[91;48;5;94m \x1b[0m\x1b[91;42mXX\x1b[0m\x1b[91;48;5;94m \x1b[0m\n\n" >> assert result == expected >E AssertionError: assert ' XX \n \n \n \n Y \nX X \n X X\n \n XX \n\n' == '\x1b[48;5;94m \x1b[0m\x1b[42mXX\x1b[0m\x1b[48;5;94m \x1b[0m\n\x1b[48;5;94m \x1b[0m\n\x1b[48;5;94m \x1b[0m\n\x1b[48;5;94m \x1b[0m\n\x1b[48;5;94m \x1b[0m\x1b[91;40mY\x1b[0m\x1b[91;48;5;94m \x1b[0m\n\x1b[91;42mX\x1b[0m\x1b[91;48;5;94m \x1b[0m\x1b[91;42mX\x1b[0m\x1b[91;48;5;94m \x1b[0m\n\x1b[91;48;5;94m \x1b[0m\x1b[91;42mX\x1b[0m\x1b[91;48;5;94m \x1b[0m\x1b[91;42mX\x1b[0m\n\x1b[91;48;5;94m \x1b[0m\n\x1b[91;48;5;94m \x1b[0m\x1b[91;42mXX\x1b[0m\x1b[91;48;5;94m \x1b[0m\n\n' >E - XX >E - >E - >E - >E - Y >E - X X >E - X X >E - >E - XX >E + XX >E + >E + >E + >E + Y >E + X X >E + X X >E + >E + XX > >Console = <class 'rich.console.Console'> >MAP = ('[on orange4] [on green]XX[on orange4] \n' > ' \n' > ' \n' > ' \n' > ' [bright_red on black]Y[on orange4] \n' > '[on green]X[on orange4] [on green]X[on orange4] \n' > ' [on green]X[on orange4] [on green]X\n' > '[on orange4] \n' > ' [on green]XX[on orange4] \n') >Text = <class 'rich.text.Text'> >console = <console width=30 ColorSystem.TRUECOLOR> >expected = ('\x1b[48;5;94m \x1b[0m\x1b[42mXX\x1b[0m\x1b[48;5;94m ' > '\x1b[0m\n' > '\x1b[48;5;94m \x1b[0m\n' > '\x1b[48;5;94m \x1b[0m\n' > '\x1b[48;5;94m \x1b[0m\n' > '\x1b[48;5;94m \x1b[0m\x1b[91;40mY\x1b[0m\x1b[91;48;5;94m ' > '\x1b[0m\n' > '\x1b[91;42mX\x1b[0m\x1b[91;48;5;94m ' > '\x1b[0m\x1b[91;42mX\x1b[0m\x1b[91;48;5;94m \x1b[0m\n' > '\x1b[91;48;5;94m ' > '\x1b[0m\x1b[91;42mX\x1b[0m\x1b[91;48;5;94m ' > '\x1b[0m\x1b[91;42mX\x1b[0m\n' > '\x1b[91;48;5;94m \x1b[0m\n' > '\x1b[91;48;5;94m ' > '\x1b[0m\x1b[91;42mXX\x1b[0m\x1b[91;48;5;94m \x1b[0m\n' > '\n') >result = (' XX \n' > ' \n' > ' \n' > ' \n' > ' Y \n' > 'X X \n' > ' X X\n' > ' \n' > ' XX \n' > '\n') >text = <text ' XX \n \n \n \n Y \nX X \n X X\n \n XX \n' [Span(0, 216, 'on orange4'), Span(10, 216, 'on green'), Span(12, 216, 'on orange4'), Span(112, 216, 'bright_red on black'), Span(113, 216, 'on orange4'), Span(122, 216, 'on green'), Span(123, 216, 'on orange4'), Span(141, 216, 'on green'), Span(142, 216, 'on orange4'), Span(146, 216, 'on green'), Span(147, 216, 'on orange4'), Span(166, 216, 'on green'), Span(168, 216, 'on orange4'), Span(203, 216, 'on green'), Span(205, 216, 'on orange4')]> > >tests/test_segment.py:193: AssertionError >----------------------------- Captured stdout call ----------------------------- >' XX \n \n \n \n Y \nX X \n X X\n \n XX \n\n' >_______________________________ test_blank_lines _______________________________ > > def test_blank_lines(): > code = "\n\nimport this\n\n" > syntax = Syntax( > code, lexer="python", theme="ascii_light", code_width=30, line_numbers=True > ) > result = render(syntax) > print(repr(result)) >> assert ( > result > == "\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m1 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m2 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m3 \x1b[0m\x1b[1;38;2;0;128;0;48;2;248;248;248mimport\x1b[0m\x1b[38;2;0;0;0;48;2;248;248;248m \x1b[0m\x1b[1;38;2;0;0;255;48;2;248;248;248mthis\x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m4 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m5 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n" > ) >E AssertionError: assert '\x1b[1m \x1b[0m1 \n\x1b[1m \x1b[0m2 \n\x1b[1m \x1b[0m3 \x1b[1mimport\x1b[0m \x1b[1mthis\x1b[0m \n\x1b[1m \x1b[0m4 \n\x1b[1m \x1b[0m5 \n' == '\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m1 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m2 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m3 \x1b[0m\x1b[1;38;2;0;128;0;48;2;248;248;248mimport\x1b[0m\x1b[38;2;0;0;0;48;2;248;248;248m \x1b[0m\x1b[1;38;2;0;0;255;48;2;248;248;248mthis\x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m4 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m5 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n' >E - 1 >E - 2 >E - 3 import this >E - 4 >E - 5 >E + 1 >E + 2 >E + 3 import this >E + 4 >E + 5 > >code = '\n\nimport this\n\n' >result = ('\x1b[1m \x1b[0m1 \n' > '\x1b[1m \x1b[0m2 \n' > '\x1b[1m \x1b[0m3 \x1b[1mimport\x1b[0m ' > '\x1b[1mthis\x1b[0m \n' > '\x1b[1m \x1b[0m4 \n' > '\x1b[1m \x1b[0m5 \n') >syntax = <rich.syntax.Syntax object at 0x00005638aab2e640> > >tests/test_syntax.py:50: AssertionError >----------------------------- Captured stdout call ----------------------------- >'\x1b[1m \x1b[0m1 \n\x1b[1m \x1b[0m2 \n\x1b[1m \x1b[0m3 \x1b[1mimport\x1b[0m \x1b[1mthis\x1b[0m \n\x1b[1m \x1b[0m4 \n\x1b[1m \x1b[0m5 \n' >______________________________ test_python_render ______________________________ > > def test_python_render(): > syntax = Panel.fit( > Syntax( > CODE, > lexer="python", > line_numbers=True, > line_range=(2, 10), > theme="monokai", > code_width=60, > word_wrap=True, > ), > padding=0, > ) > rendered_syntax = render(syntax) > print(repr(rendered_syntax)) > expected = 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ®\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 2 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple with a flag for first \x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[48;2;39;40;34m \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34mand last value."""\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 3 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 4 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 5 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 6 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 7 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 8 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 9 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m10 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ°ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\n' >> assert rendered_syntax == expected >E assert 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ®\nâ\x1b[1m \x1b[0m 2 """Iterate and generate a tuple with a flag for first â\nâ and last value.""" â\nâ\x1b[1m \x1b[0m 3 iter_values = iter(values) â\nâ\x1b[1m \x1b[0m 4 try: â\nâ\x1b[1m \x1b[0m 5 previous_value = next(iter_values) â\nâ\x1b[1m \x1b[0m 6 except StopIteration: â\nâ\x1b[1m \x1b[0m 7 return â\nâ\x1b[1m \x1b[0m 8 first = True â\nâ\x1b[1m \x1b[0m 9 for value in iter_values: â\nâ\x1b[1m \x1b[0m10 yield first, False, previous_value â\nâ°ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\n' == 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ®\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 2 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple with a flag for first \x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[48;2;39;40;34m \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34mand last value."""\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 3 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 4 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 5 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 6 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 7 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 8 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 9 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m10 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ°ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\n' >E âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ® >E - â 2 """Iterate and generate a tuple with a flag for first â >E - â and last value.""" â >E - â 3 iter_values = iter(values) â >E - â 4 try: â >E - â 5 previous_value = next(iter_values) â >E - â 6 except StopIteration: â >E - â 7 return â >E - â 8 first = True â >E - â 9 for value in iter_values: â >E - â 10 yield first, False, previous_value â >E + â 2 """Iterate and generate a tuple with a flag for first â >E + â and last value.""" â >E + â 3 iter_values = iter(values) â >E + â 4 try: â >E + â 5 previous_value = next(iter_values) â >E + â 6 except StopIteration: â >E + â 7 return â >E + â 8 first = True â >E + â 9 for value in iter_values: â >E + â 10 yield first, False, previous_value â >E â°âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⯠> >expected = ('âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ®\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 2 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple ' > 'with a flag for first \x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\n' > 'â\x1b[48;2;39;40;34m \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34mand last ' > 'value."""\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 3 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 4 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 5 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 6 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 7 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 8 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 9 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m10 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â°ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\n') >rendered_syntax = ('âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ®\n' > 'â\x1b[1m \x1b[0m 2 """Iterate and generate a tuple with a flag for ' > 'first â\n' > 'â and last value.""" â\n' > 'â\x1b[1m \x1b[0m 3 iter_values = ' > 'iter(values) â\n' > 'â\x1b[1m \x1b[0m 4 ' > 'try: â\n' > 'â\x1b[1m \x1b[0m 5 previous_value = ' > 'next(iter_values) â\n' > 'â\x1b[1m \x1b[0m 6 except ' > 'StopIteration: â\n' > 'â\x1b[1m \x1b[0m 7 ' > 'return â\n' > 'â\x1b[1m \x1b[0m 8 first = ' > 'True â\n' > 'â\x1b[1m \x1b[0m 9 for value in ' > 'iter_values: â\n' > 'â\x1b[1m \x1b[0m10 yield first, False, ' > 'previous_value â\n' > 'â°ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\n') >syntax = <rich.panel.Panel object at 0x00005638aaf58b80> > >tests/test_syntax.py:72: AssertionError >----------------------------- Captured stdout call ----------------------------- >'âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ®\nâ\x1b[1m \x1b[0m 2 """Iterate and generate a tuple with a flag for first â\nâ and last value.""" â\nâ\x1b[1m \x1b[0m 3 iter_values = iter(values) â\nâ\x1b[1m \x1b[0m 4 try: â\nâ\x1b[1m \x1b[0m 5 previous_value = next(iter_values) â\nâ\x1b[1m \x1b[0m 6 except StopIteration: â\nâ\x1b[1m \x1b[0m 7 return â\nâ\x1b[1m \x1b[0m 8 first = True â\nâ\x1b[1m \x1b[0m 9 for value in iter_values: â\nâ\x1b[1m \x1b[0m10 yield first, False, previous_value â\nâ°ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\n' >__________________________ test_python_render_simple ___________________________ > > def test_python_render_simple(): > syntax = Syntax( > CODE, > lexer="python", > line_numbers=False, > theme="monokai", > code_width=60, > word_wrap=False, > ) > rendered_syntax = render(syntax) > print(repr(rendered_syntax)) > expected = '\x1b[38;2;102;217;239;48;2;39;40;34mdef\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mloop_first_last\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m-\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m>\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mTuple\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mb\x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple with a flag for first an\x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n' >> assert rendered_syntax == expected >E assert 'def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[b\n """Iterate and generate a tuple with a flag for first an\n iter_values = iter(values) \n try: \n previous_value = next(iter_values) \n except StopIteration: \n return \n first = True \n for value in iter_values: \n yield first, False, previous_value \n first = False \n previous_value = value \n yield first, True, previous_value \n' == '\x1b[38;2;102;217;239;48;2;39;40;34mdef\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mloop_first_last\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m-\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m>\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mTuple\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mb\x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple with a flag for first an\x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n' >E - def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[b >E - """Iterate and generate a tuple with a flag for first an >E - iter_values = iter(values) >E - try: >E - previous_value = next(iter_values) >E - except StopIteration: >E - return >E - first = True >E - for value in iter_values: >E - yield first, False, previous_value >E - first = False >E - previous_value = value >E - yield first, True, previous_value >E + def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[b >E + """Iterate and generate a tuple with a flag for first an >E + iter_values = iter(values) >E + try: >E + previous_value = next(iter_values) >E + except StopIteration: >E + return >E + first = True >E + for value in iter_values: >E + yield first, False, previous_value >E + first = False >E + previous_value = value >E + yield first, True, previous_value > >expected = ('\x1b[38;2;102;217;239;48;2;39;40;34mdef\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mloop_first_last\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m-\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m>\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mTuple\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mb\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple ' > 'with a flag for first an\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n') >rendered_syntax = ('def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[b\n' > ' """Iterate and generate a tuple with a flag for first an\n' > ' iter_values = iter(values) \n' > ' try: \n' > ' previous_value = next(iter_values) \n' > ' except StopIteration: \n' > ' return \n' > ' first = True \n' > ' for value in iter_values: \n' > ' yield first, False, previous_value \n' > ' first = False \n' > ' previous_value = value \n' > ' yield first, True, previous_value \n') >syntax = <rich.syntax.Syntax object at 0x00005638aaebd670> > >tests/test_syntax.py:87: AssertionError >----------------------------- Captured stdout call ----------------------------- >'def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[b\n """Iterate and generate a tuple with a flag for first an\n iter_values = iter(values) \n try: \n previous_value = next(iter_values) \n except StopIteration: \n return \n first = True \n for value in iter_values: \n yield first, False, previous_value \n first = False \n previous_value = value \n yield first, True, previous_value \n' >_______________ test_python_render_simple_passing_lexer_instance _______________ > > def test_python_render_simple_passing_lexer_instance(): > syntax = Syntax( > CODE, > lexer=PythonLexer(), > line_numbers=False, > theme="monokai", > code_width=60, > word_wrap=False, > ) > rendered_syntax = render(syntax) > print(repr(rendered_syntax)) > expected = '\x1b[38;2;102;217;239;48;2;39;40;34mdef\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mloop_first_last\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m-\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m>\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mTuple\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mb\x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple with a flag for first an\x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n' >> assert rendered_syntax == expected >E assert 'def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[b\n """Iterate and generate a tuple with a flag for first an\n iter_values = iter(values) \n try: \n previous_value = next(iter_values) \n except StopIteration: \n return \n first = True \n for value in iter_values: \n yield first, False, previous_value \n first = False \n previous_value = value \n yield first, True, previous_value \n' == '\x1b[38;2;102;217;239;48;2;39;40;34mdef\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mloop_first_last\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m-\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m>\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mTuple\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mb\x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple with a flag for first an\x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0m\n' >E - def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[b >E - """Iterate and generate a tuple with a flag for first an >E - iter_values = iter(values) >E - try: >E - previous_value = next(iter_values) >E - except StopIteration: >E - return >E - first = True >E - for value in iter_values: >E - yield first, False, previous_value >E - first = False >E - previous_value = value >E - yield first, True, previous_value >E + def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[b >E + """Iterate and generate a tuple with a flag for first an >E + iter_values = iter(values) >E + try: >E + previous_value = next(iter_values) >E + except StopIteration: >E + return >E + first = True >E + for value in iter_values: >E + yield first, False, previous_value >E + first = False >E + previous_value = value >E + yield first, True, previous_value > >expected = ('\x1b[38;2;102;217;239;48;2;39;40;34mdef\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mloop_first_last\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m-\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m>\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mTuple\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mb\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple ' > 'with a flag for first an\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n' > '\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0m\n') >rendered_syntax = ('def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[b\n' > ' """Iterate and generate a tuple with a flag for first an\n' > ' iter_values = iter(values) \n' > ' try: \n' > ' previous_value = next(iter_values) \n' > ' except StopIteration: \n' > ' return \n' > ' first = True \n' > ' for value in iter_values: \n' > ' yield first, False, previous_value \n' > ' first = False \n' > ' previous_value = value \n' > ' yield first, True, previous_value \n') >syntax = <rich.syntax.Syntax object at 0x00005638aac310c0> > >tests/test_syntax.py:102: AssertionError >----------------------------- Captured stdout call ----------------------------- >'def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[b\n """Iterate and generate a tuple with a flag for first an\n iter_values = iter(values) \n try: \n previous_value = next(iter_values) \n except StopIteration: \n return \n first = True \n for value in iter_values: \n yield first, False, previous_value \n first = False \n previous_value = value \n yield first, True, previous_value \n' >_______________________ test_python_render_indent_guides _______________________ > > def test_python_render_indent_guides(): > syntax = Panel.fit( > Syntax( > CODE, > lexer="python", > line_numbers=True, > line_range=(2, 10), > theme="monokai", > code_width=60, > word_wrap=True, > indent_guides=True, > ), > padding=0, > ) > rendered_syntax = render(syntax) > print(repr(rendered_syntax)) > expected = 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ®\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 2 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple with a flag for first \x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[48;2;39;40;34m \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34mand last value."""\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 3 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 4 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 5 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ â \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 6 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 7 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ â \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 8 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 9 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m10 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ â \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ°ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\n' >> assert rendered_syntax == expected >E assert 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ®\nâ\x1b[1m \x1b[0m 2 \x1b[2mâ \x1b[0m"""Iterate and generate a tuple with a flag for first â\nâ and last value.""" â\nâ\x1b[1m \x1b[0m 3 \x1b[2mâ \x1b[0miter_values = iter(values) â\nâ\x1b[1m \x1b[0m 4 \x1b[2mâ \x1b[0mtry: â\nâ\x1b[1m \x1b[0m 5 \x1b[2mâ â \x1b[0mprevious_value = next(iter_values) â\nâ\x1b[1m \x1b[0m 6 \x1b[2mâ \x1b[0mexcept StopIteration: â\nâ\x1b[1m \x1b[0m 7 \x1b[2mâ â \x1b[0mreturn â\nâ\x1b[1m \x1b[0m 8 \x1b[2mâ \x1b[0mfirst = True â\nâ\x1b[1m \x1b[0m 9 \x1b[2mâ \x1b[0mfor value in iter_values: â\nâ\x1b[1m \x1b[0m10 \x1b[2mâ â \x1b[0myield first, False, previous_value â\nâ°ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\n' == 'âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ®\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 2 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple with a flag for first \x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[48;2;39;40;34m \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34mand last value."""\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 3 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 4 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 5 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ â \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 6 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 7 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ â \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 8 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 9 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m10 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ â \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\nâ°ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\n' >E âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ® >E - â 2 â """Iterate and generate a tuple with a flag for first â >E - â and last value.""" â >E - â 3 â iter_values = iter(values) â >E - â 4 â try: â >E - â 5 â â previous_value = next(iter_values) â >E - â 6 â except StopIteration: â >E - â 7 â â return â >E - â 8 â first = True â >E - â 9 â for value in iter_values: â >E - â 10 â â yield first, False, previous_value â >E + â 2 â """Iterate and generate a tuple with a flag for first â >E + â and last value.""" â >E + â 3 â iter_values = iter(values) â >E + â 4 â try: â >E + â 5 â â previous_value = next(iter_values) â >E + â 6 â except StopIteration: â >E + â 7 â â return â >E + â 8 â first = True â >E + â 9 â for value in iter_values: â >E + â 10 â â yield first, False, previous_value â >E â°âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⯠> >expected = ('âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ®\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 2 ' > '\x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ ' > '\x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple ' > 'with a flag for first \x1b[0m\x1b[48;2;39;40;34m \x1b[0mâ\n' > 'â\x1b[48;2;39;40;34m \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34mand last ' > 'value."""\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 3 ' > '\x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 4 ' > '\x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 5 ' > '\x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ â ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 6 ' > '\x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 7 ' > '\x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ â ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 8 ' > '\x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 9 ' > '\x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m10 ' > '\x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34mâ â ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m ' > '\x1b[0mâ\n' > 'â°ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\n') >rendered_syntax = ('âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ®\n' > 'â\x1b[1m \x1b[0m 2 \x1b[2mâ \x1b[0m"""Iterate and generate a tuple with a ' > 'flag for first â\n' > 'â and last value.""" â\n' > 'â\x1b[1m \x1b[0m 3 \x1b[2mâ \x1b[0miter_values = ' > 'iter(values) â\n' > 'â\x1b[1m \x1b[0m 4 \x1b[2mâ ' > '\x1b[0mtry: â\n' > 'â\x1b[1m \x1b[0m 5 \x1b[2mâ â \x1b[0mprevious_value = ' > 'next(iter_values) â\n' > 'â\x1b[1m \x1b[0m 6 \x1b[2mâ \x1b[0mexcept ' > 'StopIteration: â\n' > 'â\x1b[1m \x1b[0m 7 \x1b[2mâ â ' > '\x1b[0mreturn â\n' > 'â\x1b[1m \x1b[0m 8 \x1b[2mâ \x1b[0mfirst = ' > 'True â\n' > 'â\x1b[1m \x1b[0m 9 \x1b[2mâ \x1b[0mfor value in ' > 'iter_values: â\n' > 'â\x1b[1m \x1b[0m10 \x1b[2mâ â \x1b[0myield first, False, ' > 'previous_value â\n' > 'â°ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\n') >syntax = <rich.panel.Panel object at 0x00005638aa3b5a60> > >tests/test_syntax.py:157: AssertionError >----------------------------- Captured stdout call ----------------------------- >'âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ®\nâ\x1b[1m \x1b[0m 2 \x1b[2mâ \x1b[0m"""Iterate and generate a tuple with a flag for first â\nâ and last value.""" â\nâ\x1b[1m \x1b[0m 3 \x1b[2mâ \x1b[0miter_values = iter(values) â\nâ\x1b[1m \x1b[0m 4 \x1b[2mâ \x1b[0mtry: â\nâ\x1b[1m \x1b[0m 5 \x1b[2mâ â \x1b[0mprevious_value = next(iter_values) â\nâ\x1b[1m \x1b[0m 6 \x1b[2mâ \x1b[0mexcept StopIteration: â\nâ\x1b[1m \x1b[0m 7 \x1b[2mâ â \x1b[0mreturn â\nâ\x1b[1m \x1b[0m 8 \x1b[2mâ \x1b[0mfirst = True â\nâ\x1b[1m \x1b[0m 9 \x1b[2mâ \x1b[0mfor value in iter_values: â\nâ\x1b[1m \x1b[0m10 \x1b[2mâ â \x1b[0myield first, False, previous_value â\nâ°ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯\n' >_____________________________ test_option_no_wrap ______________________________ > > def test_option_no_wrap(): > syntax = Syntax( > CODE, > lexer="python", > line_numbers=True, > line_range=(2, 10), > code_width=60, > word_wrap=False, > background_color="red", > ) > > rendered_syntax = render(syntax, True) > print(repr(rendered_syntax)) > expected = '\x1b[1;39;41m \x1b[0m\x1b[39;41m 2 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;230;219;116;41m"""Iterate and generate a tuple with a flag for first and last value."""\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m 3 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41miter_values\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;249;38;114;41m=\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41miter\x1b[0m\x1b[38;2;248;248;242;41m(\x1b[0m\x1b[38;2;248;248;242;41mvalues\x1b[0m\x1b[38;2;248;248;242;41m)\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m 4 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;102;217;239;41mtry\x1b[0m\x1b[38;2;248;248;242;41m:\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m 5 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41mprevious_value\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;249;38;114;41m=\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41mnext\x1b[0m\x1b[38;2;248;248;242;41m(\x1b[0m\x1b[38;2;248;248;242;41miter_values\x1b[0m\x1b[38;2;248;248;242;41m)\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m 6 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;102;217;239;41mexcept\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;166;226;46;41mStopIteration\x1b[0m\x1b[38;2;248;248;242;41m:\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m 7 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;102;217;239;41mreturn\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m 8 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41mfirst\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;249;38;114;41m=\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;102;217;239;41mTrue\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m 9 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;102;217;239;41mfor\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41mvalue\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;249;38;114;41min\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41miter_values\x1b[0m\x1b[38;2;248;248;242;41m:\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m10 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;102;217;239;41myield\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41mfirst\x1b[0m\x1b[38;2;248;248;242;41m,\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;102;217;239;41mFalse\x1b[0m\x1b[38;2;248;248;242;41m,\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41mprevious_value\x1b[0m\n' >> assert rendered_syntax == expected >E assert '\x1b[1m \x1b[0m 2 """Iterate and generate a tuple with a flag for first and last value."""\n\x1b[1m \x1b[0m 3 iter_values = iter(values)\n\x1b[1m \x1b[0m 4 try:\n\x1b[1m \x1b[0m 5 previous_value = next(iter_values)\n\x1b[1m \x1b[0m 6 except StopIteration:\n\x1b[1m \x1b[0m 7 return\n\x1b[1m \x1b[0m 8 first = True\n\x1b[1m \x1b[0m 9 for value in iter_values:\n\x1b[1m \x1b[0m10 yield first, False, previous_value\n' == '\x1b[1;39;41m \x1b[0m\x1b[39;41m 2 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;230;219;116;41m"""Iterate and generate a tuple with a flag for first and last value."""\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m 3 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41miter_values\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;249;38;114;41m=\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41miter\x1b[0m\x1b[38;2;248;248;242;41m(\x1b[0m\x1b[38;2;248;248;242;41mvalues\x1b[0m\x1b[38;2;248;248;242;41m)\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m 4 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;102;217;239;41mtry\x1b[0m\x1b[38;2;248;248;242;41m:\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m 5 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41mprevious_value\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;249;38;114;41m=\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41mnext\x1b[0m\x1b[38;2;248;248;242;41m(\x1b[0m\x1b[38;2;248;248;242;41miter_values\x1b[0m\x1b[38;2;248;248;242;41m)\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m 6 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;102;217;239;41mexcept\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;166;226;46;41mStopIteration\x1b[0m\x1b[38;2;248;248;242;41m:\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m 7 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;102;217;239;41mreturn\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m 8 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41mfirst\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;249;38;114;41m=\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;102;217;239;41mTrue\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m 9 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;102;217;239;41mfor\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41mvalue\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;249;38;114;41min\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41miter_values\x1b[0m\x1b[38;2;248;248;242;41m:\x1b[0m\n\x1b[1;39;41m \x1b[0m\x1b[39;41m10 \x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;102;217;239;41myield\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41mfirst\x1b[0m\x1b[38;2;248;248;242;41m,\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;102;217;239;41mFalse\x1b[0m\x1b[38;2;248;248;242;41m,\x1b[0m\x1b[38;2;248;248;242;41m \x1b[0m\x1b[38;2;248;248;242;41mprevious_value\x1b[0m\n' >E - 2 """Iterate and generate a tuple with a flag for first and last value.""" >E - 3 iter_values = iter(values) >E - 4 try: >E - 5 previous_value = next(iter_values) >E - 6 except StopIteration: >E - 7 return >E - 8 first = True >E - 9 for value in iter_values: >E - 10 yield first, False, previous_value >E + 2 """Iterate and generate a tuple with a flag for first and last value.""" >E + 3 iter_values = iter(values) >E + 4 try: >E + 5 previous_value = next(iter_values) >E + 6 except StopIteration: >E + 7 return >E + 8 first = True >E + 9 for value in iter_values: >E + 10 yield first, False, previous_value > >expected = ('\x1b[1;39;41m \x1b[0m\x1b[39;41m 2 \x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;230;219;116;41m"""Iterate and generate a tuple with a flag ' > 'for first and last value."""\x1b[0m\n' > '\x1b[1;39;41m \x1b[0m\x1b[39;41m 3 \x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;248;248;242;41miter_values\x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;249;38;114;41m=\x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;248;248;242;41miter\x1b[0m\x1b[38;2;248;248;242;41m(\x1b[0m\x1b[38;2;248;248;242;41mvalues\x1b[0m\x1b[38;2;248;248;242;41m)\x1b[0m\n' > '\x1b[1;39;41m \x1b[0m\x1b[39;41m 4 \x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;102;217;239;41mtry\x1b[0m\x1b[38;2;248;248;242;41m:\x1b[0m\n' > '\x1b[1;39;41m \x1b[0m\x1b[39;41m 5 \x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;248;248;242;41mprevious_value\x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;249;38;114;41m=\x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;248;248;242;41mnext\x1b[0m\x1b[38;2;248;248;242;41m(\x1b[0m\x1b[38;2;248;248;242;41miter_values\x1b[0m\x1b[38;2;248;248;242;41m)\x1b[0m\n' > '\x1b[1;39;41m \x1b[0m\x1b[39;41m 6 \x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;102;217;239;41mexcept\x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;166;226;46;41mStopIteration\x1b[0m\x1b[38;2;248;248;242;41m:\x1b[0m\n' > '\x1b[1;39;41m \x1b[0m\x1b[39;41m 7 \x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;102;217;239;41mreturn\x1b[0m\n' > '\x1b[1;39;41m \x1b[0m\x1b[39;41m 8 \x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;248;248;242;41mfirst\x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;249;38;114;41m=\x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;102;217;239;41mTrue\x1b[0m\n' > '\x1b[1;39;41m \x1b[0m\x1b[39;41m 9 \x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;102;217;239;41mfor\x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;248;248;242;41mvalue\x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;249;38;114;41min\x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;248;248;242;41miter_values\x1b[0m\x1b[38;2;248;248;242;41m:\x1b[0m\n' > '\x1b[1;39;41m \x1b[0m\x1b[39;41m10 \x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;102;217;239;41myield\x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;248;248;242;41mfirst\x1b[0m\x1b[38;2;248;248;242;41m,\x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;102;217;239;41mFalse\x1b[0m\x1b[38;2;248;248;242;41m,\x1b[0m\x1b[38;2;248;248;242;41m ' > '\x1b[0m\x1b[38;2;248;248;242;41mprevious_value\x1b[0m\n') >rendered_syntax = ('\x1b[1m \x1b[0m 2 """Iterate and generate a tuple with a flag for first ' > 'and last value."""\n' > '\x1b[1m \x1b[0m 3 iter_values = iter(values)\n' > '\x1b[1m \x1b[0m 4 try:\n' > '\x1b[1m \x1b[0m 5 previous_value = next(iter_values)\n' > '\x1b[1m \x1b[0m 6 except StopIteration:\n' > '\x1b[1m \x1b[0m 7 return\n' > '\x1b[1m \x1b[0m 8 first = True\n' > '\x1b[1m \x1b[0m 9 for value in iter_values:\n' > '\x1b[1m \x1b[0m10 yield first, False, previous_value\n') >syntax = <rich.syntax.Syntax object at 0x00007fba4aff9830> > >tests/test_syntax.py:247: AssertionError >----------------------------- Captured stdout call ----------------------------- >'\x1b[1m \x1b[0m 2 """Iterate and generate a tuple with a flag for first and last value."""\n\x1b[1m \x1b[0m 3 iter_values = iter(values)\n\x1b[1m \x1b[0m 4 try:\n\x1b[1m \x1b[0m 5 previous_value = next(iter_values)\n\x1b[1m \x1b[0m 6 except StopIteration:\n\x1b[1m \x1b[0m 7 return\n\x1b[1m \x1b[0m 8 first = True\n\x1b[1m \x1b[0m 9 for value in iter_values:\n\x1b[1m \x1b[0m10 yield first, False, previous_value\n' >_________________________ test_syntax_highlight_ranges _________________________ > > def test_syntax_highlight_ranges(): > syntax = Syntax( > CODE, > lexer="python", > line_numbers=True, > word_wrap=False, > ) > stylized_ranges = [ > _SyntaxHighlightRange( > # overline the 2nd char of the 1st line: > start=(1, 1), > end=(1, 2), > style=Style(overline=True), > ), > _SyntaxHighlightRange( > start=(1, len("def loop_")), > end=(1, len("def loop_first_last")), > style=Style(underline=True), > ), > _SyntaxHighlightRange( > start=(1, len("def loop_first")), > end=(3, len(" iter_values = iter")), > style=Style(bold=True), > ), > _SyntaxHighlightRange( > start=(9, len(" for ")), > end=(9, len(" for value in")), > style=Style(strike=True), > ), > _SyntaxHighlightRange( > start=(6, len(" except ")), > end=(6, len(" except StopIteration")), > style=Style(reverse=True), > ), > _SyntaxHighlightRange( > start=(10, len(" yield first,")), > # `column_index` is out of range: should be clamped to the line length: > end=(10, 300), > style=Style(bold=True), > ), > # For this one the end `line_number` is out of range, so it should have no impact: > _SyntaxHighlightRange( > start=(1, 1), > end=(30, 2), > style=Style(bold=True), > ), > ] > for range_ in stylized_ranges: > syntax.stylize_range(range_.style, range_.start, range_.end) > rendered_syntax = render(syntax, True) > print(repr(rendered_syntax)) > expected = '\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 1 \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34md\x1b[0m\x1b[53;38;2;102;217;239;48;2;39;40;34me\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mf\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mloop_\x1b[0m\x1b[4;38;2;166;226;46;48;2;39;40;34mfirst\x1b[0m\x1b[1;4;38;2;166;226;46;48;2;39;40;34m_last\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;249;38;114;48;2;39;40;34m-\x1b[0m\x1b[1;38;2;249;38;114;48;2;39;40;34m>\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mTuple\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mbool\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mbool\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m:\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 2 \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple with a flag for first and last value."""\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 3 \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 4 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 5 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 6 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[7;38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 7 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 8 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 9 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[9;38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[9;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[9;38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m10 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m11 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m12 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m13 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\n' >> assert rendered_syntax == expected >E assert '\x1b[1m \x1b[0m 1 d\x1b[53me\x1b[0mf loop_\x1b[4mfirst\x1b[0m\x1b[1;4m_last\x1b[0m\x1b[1m(\x1b[0m\x1b[1mvalues\x1b[0m\x1b[1m:\x1b[0m\x1b[1m \x1b[0m\x1b[1mIterable\x1b[0m\x1b[1m[\x1b[0m\x1b[1mT\x1b[0m\x1b[1m]\x1b[0m\x1b[1m)\x1b[0m\x1b[1m \x1b[0m\x1b[1m-\x1b[0m\x1b[1m>\x1b[0m\x1b[1m \x1b[0m\x1b[1mIterable\x1b[0m\x1b[1m[\x1b[0m\x1b[1mTuple\x1b[0m\x1b[1m[\x1b[0m\x1b[1mbool\x1b[0m\x1b[1m,\x1b[0m\x1b[1m \x1b[0m\x1b[1mbool\x1b[0m\x1b[1m,\x1b[0m\x1b[1m \x1b[0m\x1b[1mT\x1b[0m\x1b[1m]\x1b[0m\x1b[1m]\x1b[0m\x1b[1m:\x1b[0m\n\x1b[1m \x1b[0m 2 \x1b[1m \x1b[0m\x1b[1m"""Iterate and generate a tuple with a flag for first and last value."""\x1b[0m\n\x1b[1m \x1b[0m 3 \x1b[1m \x1b[0m\x1b[1miter_values\x1b[0m\x1b[1m \x1b[0m\x1b[1m=\x1b[0m\x1b[1m \x1b[0m\x1b[1miter\x1b[0m(values)\n\x1b[1m \x1b[0m 4 try:\n\x1b[1m \x1b[0m 5 previous_value = next(iter_values)\n\x1b[1m \x1b[0m 6 except \x1b[7mStopIteration\x1b[0m:\n\x1b[1m \x1b[0m 7 return\n\x1b[1m \x1b[0m 8 first = True\n\x1b[1m \x1b[0m 9 for \x1b[9mvalue\x1b[0m\x1b[9m \x1b[0m\x1b[9min\x1b[0m iter_values:\n\x1b[1m \x1b[0m10 yield first\x1b[1m,\x1b[0m\x1b[1m \x1b[0m\x1b[1mFalse\x1b[0m\x1b[1m,\x1b[0m\x1b[1m \x1b[0m\x1b[1mprevious_value\x1b[0m\n\x1b[1m \x1b[0m11 first = False\n\x1b[1m \x1b[0m12 previous_value = value\n\x1b[1m \x1b[0m13 yield first, True, previous_value\n' == '\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 1 \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34md\x1b[0m\x1b[53;38;2;102;217;239;48;2;39;40;34me\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mf\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mloop_\x1b[0m\x1b[4;38;2;166;226;46;48;2;39;40;34mfirst\x1b[0m\x1b[1;4;38;2;166;226;46;48;2;39;40;34m_last\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;249;38;114;48;2;39;40;34m-\x1b[0m\x1b[1;38;2;249;38;114;48;2;39;40;34m>\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mTuple\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mbool\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mbool\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m:\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 2 \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple with a flag for first and last value."""\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 3 \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 4 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 5 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 6 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[7;38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 7 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 8 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 9 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[9;38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[9;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[9;38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m10 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m11 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m12 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\n\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m13 \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\n' >E - 1 def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]: >E - 2 """Iterate and generate a tuple with a flag for first and last value.""" >E - 3 iter_values = iter(values) >E - 4 try: >E - 5 previous_value = next(iter_values) >E - 6 except StopIteration: >E - 7 return >E - 8 first = True >E - 9 for value in iter_values: >E - 10 yield first, False, previous_value >E - 11 first = False >E - 12 previous_value = value >E - 13 yield first, True, previous_value >E + 1 def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]: >E + 2 """Iterate and generate a tuple with a flag for first and last value.""" >E + 3 iter_values = iter(values) >E + 4 try: >E + 5 previous_value = next(iter_values) >E + 6 except StopIteration: >E + 7 return >E + 8 first = True >E + 9 for value in iter_values: >E + 10 yield first, False, previous_value >E + 11 first = False >E + 12 previous_value = value >E + 13 yield first, True, previous_value > >expected = ('\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 1 ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34md\x1b[0m\x1b[53;38;2;102;217;239;48;2;39;40;34me\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mf\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mloop_\x1b[0m\x1b[4;38;2;166;226;46;48;2;39;40;34mfirst\x1b[0m\x1b[1;4;38;2;166;226;46;48;2;39;40;34m_last\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[1;38;2;249;38;114;48;2;39;40;34m-\x1b[0m\x1b[1;38;2;249;38;114;48;2;39;40;34m>\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mTuple\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mbool\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mbool\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m:\x1b[0m\n' > '\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 2 ' > '\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[1;38;2;230;219;116;48;2;39;40;34m"""Iterate and generate a tuple ' > 'with a flag for first and last value."""\x1b[0m\n' > '\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 3 ' > '\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[1;38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\n' > '\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 4 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\n' > '\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 5 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\n' > '\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 6 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[7;38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\n' > '\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 7 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\n' > '\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 8 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\n' > '\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 9 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[9;38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[9;38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[9;38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\n' > '\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m10 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[1;38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[1;38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\n' > '\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m11 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\n' > '\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m12 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\n' > '\x1b[1;38;2;227;227;221;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m13 ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mfirst\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m ' > '\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\n') >range_ = _SyntaxHighlightRange(style=Style(bold=True), start=(1, 1), end=(30, 2)) >rendered_syntax = ('\x1b[1m \x1b[0m 1 d\x1b[53me\x1b[0mf ' > 'loop_\x1b[4mfirst\x1b[0m\x1b[1;4m_last\x1b[0m\x1b[1m(\x1b[0m\x1b[1mvalues\x1b[0m\x1b[1m:\x1b[0m\x1b[1m ' > '\x1b[0m\x1b[1mIterable\x1b[0m\x1b[1m[\x1b[0m\x1b[1mT\x1b[0m\x1b[1m]\x1b[0m\x1b[1m)\x1b[0m\x1b[1m ' > '\x1b[0m\x1b[1m-\x1b[0m\x1b[1m>\x1b[0m\x1b[1m ' > '\x1b[0m\x1b[1mIterable\x1b[0m\x1b[1m[\x1b[0m\x1b[1mTuple\x1b[0m\x1b[1m[\x1b[0m\x1b[1mbool\x1b[0m\x1b[1m,\x1b[0m\x1b[1m ' > '\x1b[0m\x1b[1mbool\x1b[0m\x1b[1m,\x1b[0m\x1b[1m ' > '\x1b[0m\x1b[1mT\x1b[0m\x1b[1m]\x1b[0m\x1b[1m]\x1b[0m\x1b[1m:\x1b[0m\n' > '\x1b[1m \x1b[0m 2 \x1b[1m \x1b[0m\x1b[1m"""Iterate and generate a tuple ' > 'with a flag for first and last value."""\x1b[0m\n' > '\x1b[1m \x1b[0m 3 \x1b[1m \x1b[0m\x1b[1miter_values\x1b[0m\x1b[1m ' > '\x1b[0m\x1b[1m=\x1b[0m\x1b[1m \x1b[0m\x1b[1miter\x1b[0m(values)\n' > '\x1b[1m \x1b[0m 4 try:\n' > '\x1b[1m \x1b[0m 5 previous_value = next(iter_values)\n' > '\x1b[1m \x1b[0m 6 except \x1b[7mStopIteration\x1b[0m:\n' > '\x1b[1m \x1b[0m 7 return\n' > '\x1b[1m \x1b[0m 8 first = True\n' > '\x1b[1m \x1b[0m 9 for \x1b[9mvalue\x1b[0m\x1b[9m ' > '\x1b[0m\x1b[9min\x1b[0m iter_values:\n' > '\x1b[1m \x1b[0m10 yield first\x1b[1m,\x1b[0m\x1b[1m ' > '\x1b[0m\x1b[1mFalse\x1b[0m\x1b[1m,\x1b[0m\x1b[1m ' > '\x1b[0m\x1b[1mprevious_value\x1b[0m\n' > '\x1b[1m \x1b[0m11 first = False\n' > '\x1b[1m \x1b[0m12 previous_value = value\n' > '\x1b[1m \x1b[0m13 yield first, True, previous_value\n') >stylized_ranges = [_SyntaxHighlightRange(style=Style(), start=(1, 1), end=(1, 2)), > _SyntaxHighlightRange(style=Style(underline=True), start=(1, 9), end=(1, 19)), > _SyntaxHighlightRange(style=Style(bold=True), start=(1, 14), end=(3, 22)), > _SyntaxHighlightRange(style=Style(strike=True), start=(9, 8), end=(9, 16)), > _SyntaxHighlightRange(style=Style(reverse=True), start=(6, 11), end=(6, 24)), > _SyntaxHighlightRange(style=Style(bold=True), start=(10, 19), end=(10, 300)), > _SyntaxHighlightRange(style=Style(bold=True), start=(1, 1), end=(30, 2))] >syntax = <rich.syntax.Syntax object at 0x00007fba4b069638> > >tests/test_syntax.py:302: AssertionError >----------------------------- Captured stdout call ----------------------------- >'\x1b[1m \x1b[0m 1 d\x1b[53me\x1b[0mf loop_\x1b[4mfirst\x1b[0m\x1b[1;4m_last\x1b[0m\x1b[1m(\x1b[0m\x1b[1mvalues\x1b[0m\x1b[1m:\x1b[0m\x1b[1m \x1b[0m\x1b[1mIterable\x1b[0m\x1b[1m[\x1b[0m\x1b[1mT\x1b[0m\x1b[1m]\x1b[0m\x1b[1m)\x1b[0m\x1b[1m \x1b[0m\x1b[1m-\x1b[0m\x1b[1m>\x1b[0m\x1b[1m \x1b[0m\x1b[1mIterable\x1b[0m\x1b[1m[\x1b[0m\x1b[1mTuple\x1b[0m\x1b[1m[\x1b[0m\x1b[1mbool\x1b[0m\x1b[1m,\x1b[0m\x1b[1m \x1b[0m\x1b[1mbool\x1b[0m\x1b[1m,\x1b[0m\x1b[1m \x1b[0m\x1b[1mT\x1b[0m\x1b[1m]\x1b[0m\x1b[1m]\x1b[0m\x1b[1m:\x1b[0m\n\x1b[1m \x1b[0m 2 \x1b[1m \x1b[0m\x1b[1m"""Iterate and generate a tuple with a flag for first and last value."""\x1b[0m\n\x1b[1m \x1b[0m 3 \x1b[1m \x1b[0m\x1b[1miter_values\x1b[0m\x1b[1m \x1b[0m\x1b[1m=\x1b[0m\x1b[1m \x1b[0m\x1b[1miter\x1b[0m(values)\n\x1b[1m \x1b[0m 4 try:\n\x1b[1m \x1b[0m 5 previous_value = next(iter_values)\n\x1b[1m \x1b[0m 6 except \x1b[7mStopIteration\x1b[0m:\n\x1b[1m \x1b[0m 7 return\n\x1b[1m \x1b[0m 8 first = True\n\x1b[1m \x1b[0m 9 for \x1b[9mvalue\x1b[0m\x1b[9m \x1b[0m\x1b[9min\x1b[0m iter_values:\n\x1b[1m \x1b[0m10 yield first\x1b[1m,\x1b[0m\x1b[1m \x1b[0m\x1b[1mFalse\x1b[0m\x1b[1m,\x1b[0m\x1b[1m \x1b[0m\x1b[1mprevious_value\x1b[0m\n\x1b[1m \x1b[0m11 first = False\n\x1b[1m \x1b[0m12 previous_value = value\n\x1b[1m \x1b[0m13 yield first, True, previous_value\n' >=============================== warnings summary =============================== >../../../../../../../usr/lib/pypy3.9/site-packages/pkg_resources/__init__.py:121 > /usr/lib/pypy3.9/site-packages/pkg_resources/__init__.py:121: DeprecationWarning: pkg_resources is deprecated as an API > warnings.warn("pkg_resources is deprecated as an API", DeprecationWarning) > >-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html >=========================== short test summary info ============================ >SKIPPED [1] tests/test_inspect.py:98: rendered differently on pypy3 >SKIPPED [1] tests/test_inspect.py:115: rendered differently on pypy3 >SKIPPED [1] tests/test_inspect.py:138: rendered differently on pypy3 >SKIPPED [1] tests/test_inspect.py:156: rendered differently on pypy3 >SKIPPED [1] tests/test_inspect.py:177: rendered differently on pypy3 >SKIPPED [1] tests/test_inspect.py:248: rendered differently on py3.9 >SKIPPED [1] tests/test_inspect.py:289: rendered differently on py3.9 >SKIPPED [1] tests/test_inspect.py:332: rendered differently on pypy3 >SKIPPED [1] tests/test_pretty.py:622: rendered differently on py3.9 >SKIPPED [1] tests/test_tree.py:81: Windows specific >SKIPPED [1] tests/test_tree.py:121: Windows specific >SKIPPED [1] tests/test_windows_renderer.py:23: windows only >SKIPPED [1] tests/test_windows_renderer.py:31: windows only >SKIPPED [1] tests/test_windows_renderer.py:41: windows only >SKIPPED [1] tests/test_windows_renderer.py:51: windows only >SKIPPED [1] tests/test_windows_renderer.py:61: windows only >SKIPPED [1] tests/test_windows_renderer.py:69: windows only >SKIPPED [4] tests/test_windows_renderer.py:77: windows only >SKIPPED [3] tests/test_windows_renderer.py:96: windows only >SKIPPED [1] tests/test_windows_renderer.py:112: windows only >SKIPPED [1] tests/test_windows_renderer.py:120: windows only >SKIPPED [1] tests/test_windows_renderer.py:128: windows only >SKIPPED [1] tests/test_windows_renderer.py:136: windows only >FAILED tests/test_ansi.py::test_decode - AssertionError: assert [<text 'Hello... >FAILED tests/test_ansi.py::test_decode_example - assert "\x1b[1mC:\\Users\\st... >FAILED tests/test_bar.py::test_render - AssertionError: assert 'ââââââ¸' == '\... >FAILED tests/test_bar.py::test_pulse - AssertionError: assert ' ââââ... >FAILED tests/test_block_bar.py::test_render - AssertionError: assert ' ââ... >FAILED tests/test_card.py::test_card_render - assert '\x1b[3m ... >FAILED tests/test_console.py::test_print_json - assert '\x1b[1m[\x1b[0m\n ... >FAILED tests/test_console.py::test_print_json_data - assert '\x1b[1m[\x1b[0m\... >FAILED tests/test_console.py::test_print_json_ensure_ascii - assert '\x1b[1m{... >FAILED tests/test_console.py::test_print_json_with_default_ensure_ascii - ass... >FAILED tests/test_console.py::test_print_json_indent_none - assert '\x1b[1m{\... >FAILED tests/test_console.py::test_markup_highlight - assert "'\x1b[1mfoo\x1b... >FAILED tests/test_console.py::test_console_style - AssertionError: assert 'fo... >FAILED tests/test_log.py::test_log - AssertionError: assert '\x1b[2m[TIME]\x1... >FAILED tests/test_markdown.py::test_markdown_render - AssertionError: assert ... >FAILED tests/test_markdown.py::test_inline_code - AssertionError: assert 'inl... >FAILED tests/test_markdown_no_hyperlinks.py::test_markdown_render - Assertion... >FAILED tests/test_segment.py::test_divide_complex - AssertionError: assert ' ... >FAILED tests/test_syntax.py::test_blank_lines - AssertionError: assert '\x1b[... >FAILED tests/test_syntax.py::test_python_render - assert 'âââââââââââââââââââ... >FAILED tests/test_syntax.py::test_python_render_simple - assert 'def loop_fir... >FAILED tests/test_syntax.py::test_python_render_simple_passing_lexer_instance >FAILED tests/test_syntax.py::test_python_render_indent_guides - assert 'âââââ... >FAILED tests/test_syntax.py::test_option_no_wrap - assert '\x1b[1m \x1b[0m 2... >FAILED tests/test_syntax.py::test_syntax_highlight_ranges - assert '\x1b[1m ... >===== 25 failed, 735 passed, 28 skipped, 9 deselected, 1 warning in 13.20s ===== > * ERROR: dev-python/rich-13.3.4::gentoo failed (test phase): > * pytest failed with pypy3 > * > * Call stack: > * ebuild.sh, line 136: Called src_test > * environment, line 3515: Called distutils-r1_src_test > * environment, line 1628: Called _distutils-r1_run_foreach_impl 'python_test' > * environment, line 729: Called python_foreach_impl 'distutils-r1_run_phase' 'python_test' > * environment, line 3198: Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test' > * environment, line 2626: Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test' > * environment, line 2624: Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'python_test' > * environment, line 1062: Called distutils-r1_run_phase 'python_test' > * environment, line 1551: Called python_test > * environment, line 3482: Called epytest '-p' 'no:pytest-qt' > * environment, line 2131: Called die > * The specific snippet of code: > * "${@}" || die -n "pytest failed with ${EPYTHON}"; > * > * If you need support, post the output of `emerge --info '=dev-python/rich-13.3.4::gentoo'`, > * the complete build log and the output of `emerge -pqv '=dev-python/rich-13.3.4::gentoo'`. > * The complete build log is located at '/var/log/emerge-log/build/dev-python/rich-13.3.4:20230413-061027.log'. > * For convenience, a symlink to the build log is located at '/var/tmp/portage/dev-python/rich-13.3.4/temp/build.log'. > * The ebuild environment file is located at '/var/tmp/portage/dev-python/rich-13.3.4/temp/environment'. > * Working directory: '/var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4' > * S: '/var/tmp/portage/dev-python/rich-13.3.4/work/rich-13.3.4' >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 904274
: 860017