Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 717570 Details for
Bug 797451
dev-python/leather-0.3.3-r1 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), 406.02 KB, created by
Agostino Sarubbo
on 2021-06-22 06:31:39 UTC
(
hide
)
Description:
build.log
Filename:
MIME Type:
Creator:
Agostino Sarubbo
Created:
2021-06-22 06:31:39 UTC
Size:
406.02 KB
patch
obsolete
> * Package: dev-python/leather-0.3.3-r1 > * Repository: gentoo > * Maintainer: zmedico@gentoo.org > * Upstream: https://github.com/wireservice/leather/issues > * USE: abi_x86_64 amd64 elibc_glibc kernel_linux python_targets_python3_8 python_targets_python3_9 test userland_GNU xml > * 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/becb775fe9b788197b46beabea8ecf90a006a76d (Tue Jun 22 02:56:20 UTC 2021) >@@@@@ 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/becb775fe9b788197b46beabea8ecf90a006a76d >@@@@@ END @@@@@ > > > >################## ># emerge --info: # >################## >Portage 3.0.20 (python 3.9.5-final-0, default/linux/amd64/17.1, gcc-11.1.0, glibc-2.33-r1, 5.8.0-1035-aws x86_64) >================================================================= >System uname: Linux-5.8.0-1035-aws-x86_64-Intel-R-_Xeon-R-_Platinum_8259CL_CPU_@_2.50GHz-with-glibc2.33 >KiB Mem: 65047144 total, 47903740 free >KiB Swap: 0 total, 0 free >sh bash 5.1_p8 >ld GNU ld (Gentoo 2.36.1 p3) 2.36.1 >app-shells/bash: 5.1_p8::gentoo >dev-lang/perl: 5.34.0::gentoo >dev-lang/python: 2.7.18_p11::gentoo, 3.8.10_p2::gentoo, 3.9.5_p2::gentoo, 3.10.0_beta3::gentoo >dev-lang/rust: 1.53.0::gentoo >dev-util/cmake: 3.20.5::gentoo >dev-util/pkgconfig: 0.29.2::gentoo >sys-apps/baselayout: 2.7-r3::gentoo >sys-apps/openrc: 0.43.3::gentoo >sys-apps/sandbox: 2.24::gentoo >sys-devel/autoconf: 2.13-r1::gentoo, 2.69-r5::gentoo >sys-devel/automake: 1.16.3-r1::gentoo >sys-devel/binutils: 2.36.1-r1::gentoo >sys-devel/gcc: 11.1.0-r1::gentoo >sys-devel/gcc-config: 2.4::gentoo >sys-devel/libtool: 2.4.6-r6::gentoo >sys-devel/make: 4.3::gentoo >sys-kernel/linux-headers: 5.12::gentoo (virtual/os-headers) >sys-libs/glibc: 2.33-r1::gentoo >Repositories: > >gentoo > location: /usr/portage > sync-type: rsync > sync-uri: rsync://rsync.gentoo.org/gentoo-portage > priority: -1000 > sync-rsync-extra-opts: > sync-rsync-verify-metamanifest: yes > sync-rsync-verify-max-age: 24 > sync-rsync-verify-jobs: 1 > >ACCEPT_KEYWORDS="amd64 ~amd64" >ACCEPT_LICENSE="* MIT" >CBUILD="x86_64-pc-linux-gnu" >CFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches" >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/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo" >CXXFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches" >DISTDIR="/var/tmp/portage/dev-python/leather-0.3.3-r1/distdir" >EMERGE_DEFAULT_OPTS="--with-bdeps=y -1 -k -b" >ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY 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" >FCFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches" >FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg 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 -pipe -march=x86-64 -frecord-gcc-switches" >GENTOO_MIRRORS="http://distfiles.gentoo.org" >LANG="en_US.utf8" >LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0" >MAKEOPTS="-j16" >PKGDIR="/root/.packages" >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" >USE="acl amd64 berkdb bzip2 cli crypt dri elogind fortran gdbm iconv ipv6 jumbo-build libglvnd libtirpc multilib native-symlinks ncurses nls nptl openmp pam pcre readline seccomp split-usr ssl tcpd test unicode xattr xml zlib" ABI_X86="64" ELIBC="glibc" KERNEL="linux" PYTHON_TARGETS="python3_8 python3_9" USERLAND="GNU" >Unset: CC, CPPFLAGS, CTARGET, CXX, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RUSTFLAGS > > > > > >############################## ># emerge history (qlop -mv): # >############################## >2021-06-22T05:00:33 >>> dev-python/lxml-4.6.3-r1 >2021-06-22T05:00:34 >>> dev-python/six-1.16.0 >2021-06-22T05:00:34 >>> dev-python/cython-0.29.23 >2021-06-22T05:00:44 >>> dev-python/leather-0.3.3-r1 >2021-06-22T05:01:01 >>> dev-python/iniconfig-1.1.1 >2021-06-22T05:01:03 >>> dev-python/py-1.10.0 >2021-06-22T05:01:02 >>> dev-python/more-itertools-8.8.0 >2021-06-22T05:01:03 >>> dev-python/pyparsing-2.4.7-r1 >2021-06-22T05:01:04 >>> dev-python/typing-extensions-3.10.0.0 >2021-06-22T05:01:05 >>> dev-python/zipp-3.4.1 >2021-06-22T05:01:05 >>> dev-python/namespace-zope-1-r1 >2021-06-22T05:01:19 >>> dev-python/packaging-20.9 >2021-06-22T05:01:23 >>> dev-python/importlib_metadata-4.5.0 >2021-06-22T05:01:24 >>> dev-python/zope-interface-5.4.0 >2021-06-22T05:01:31 >>> dev-python/pluggy-0.13.1-r1 >2021-06-22T05:01:33 >>> dev-python/attrs-21.2.0 >2021-06-22T05:01:39 >>> dev-python/pytest-6.2.4-r1 > > > > >####################################### ># 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/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/sshd-0-r1:0 >acct-group/tape-0-r1:0 >acct-group/tty-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.17:0 -doc -emacs -vim-syntax >app-admin/perl-cleaner-2.30:0 >app-arch/bzip2-1.0.8-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 split-usr -static -static-libs >app-arch/gzip-1.10:0 -pic -static >app-arch/libarchive-3.5.1: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 threads xattr zlib -zstd >app-arch/tar-1.34:0 acl -minimal nls -selinux xattr >app-arch/unzip-6.0_p26:0 bzip2 -natspec unicode >app-arch/xz-utils-5.2.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 extra-filters nls split-usr -static-libs threads >app-arch/zstd-1.5.0: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 -static-libs threads >app-crypt/gnupg-2.2.28:0 bzip2 -doc -ldap nls readline -selinux smartcard ssl -tofu -tools -usb -user-socket -wks-server >app-crypt/gpgme-1.15.1:1/11 -common-lisp cxx -python python_targets_python3_8 python_targets_python3_9 -qt5 -static-libs >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/openpgp-keys-gentoo-release-20200704:0 -test >app-crypt/pinentry-1.1.1-r1:0 -caps -efl -emacs -gnome-keyring -gtk ncurses -qt5 >app-crypt/rhash-1.4.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 -debug nls ssl -static-libs >app-editors/nano-5.8:0 -debug -justify -magic -minimal ncurses nls spell split-usr -static unicode >app-eselect/eselect-iptables-20200508:0 >app-eselect/eselect-lib-bin-symlink-0.1.1-r1:0 >app-eselect/eselect-pinentry-0.7.2:0 >app-eselect/eselect-python-20200719:0 >app-eselect/eselect-rust-20200419:0 >app-i18n/man-pages-it-5.06:0 >app-i18n/man-pages-ja-20180315:0 >app-i18n/man-pages-l10n-4.2.0-r1:0 l10n_de l10n_fr l10n_nl l10n_pl l10n_pt-BR l10n_ro >app-i18n/man-pages-ru-5.03.2390.2390.20191017:0 >app-i18n/man-pages-zh_CN-1.6.3.2:0 >app-misc/c_rehash-1.7-r1:0 >app-misc/ca-certificates-20210119.3.66:0 -cacert >app-misc/editor-wrapper-4-r1:0 >app-misc/mime-types-9:0 >app-misc/pax-utils-1.3.2:0 -caps -debug -python -python_single_target_python3_10 -python_single_target_python3_8 python_single_target_python3_9 seccomp >app-misc/tmux-3.2a:0 -debug -selinux -utempter -vim-syntax >app-portage/eix-0.35.2:0 -debug -doc nls -sqlite >app-portage/elt-patches-20201205:0 >app-portage/gemato-16.2:0 gpg python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test -tools >app-portage/gentoolkit-0.5.1:0 python_targets_pypy3 python_targets_python3_8 python_targets_python3_9 -test >app-portage/portage-utils-0.91:0 nls openmp qmanifest qtegrity -static >app-shells/bash-5.1_p8:0 -afs -bashlogger -examples -mem-scramble net nls -plugins readline >app-shells/push-3.4:0 >app-shells/quoter-4.2:0 >app-text/ansifilter-2.18:0 -qt5 >app-text/build-docbook-catalog-1.21: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-stylesheets-1.79.1-r2:0 -ruby >app-text/manpager-1:0 >app-text/opensp-1.5.2-r6:0 -doc nls -static-libs -test >app-text/po4a-0.63:0 -test >app-text/sgml-common-0.6.3-r7:0 >app-text/xmlto-0.0.28-r6:0 -latex -text >dev-db/sqlite-3.35.5: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/perl-5.34.0:0/5.34 berkdb -debug -doc gdbm -ithreads -minimal >dev-lang/python-3.10.0_beta3:3.10 -bluetooth -build -examples gdbm -hardened ipv6 ncurses readline sqlite ssl -test -tk -verify-sig -wininst xml >dev-lang/python-3.9.5_p2:3.9 -bluetooth -build -examples gdbm -hardened ipv6 ncurses readline sqlite ssl -test -tk -verify-sig -wininst xml >dev-lang/python-3.8.10_p2:3.8 -bluetooth -build -examples gdbm -hardened ipv6 ncurses readline sqlite ssl -test -tk -verify-sig -wininst xml >dev-lang/python-2.7.18_p11:2.7 -berkdb -bluetooth -build -examples gdbm -hardened ipv6 ncurses readline sqlite ssl threads -tk -verify-sig wide-unicode -wininst xml >dev-lang/python-exec-2.4.8:2 native-symlinks python_targets_pypy3 python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-lang/python-exec-conf-2.4.6:2 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-lang/rust-1.53.0:stable/1.53 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -clippy cpu_flags_x86_sse2 -debug -doc -llvm_targets_AArch64 -llvm_targets_AMDGPU -llvm_targets_ARM -llvm_targets_AVR -llvm_targets_BPF -llvm_targets_Hexagon -llvm_targets_Lanai -llvm_targets_Mips -llvm_targets_MSP430 -llvm_targets_NVPTX -llvm_targets_PowerPC -llvm_targets_RISCV -llvm_targets_Sparc -llvm_targets_SystemZ -llvm_targets_WebAssembly llvm_targets_X86 -llvm_targets_XCore -miri -nightly -parallel-compiler -rls -rustfmt -system-bootstrap -system-llvm -test -verify-sig -wasm >dev-lang/spidermonkey-78.11.0:78 -clang -cpu_flags_arm_neon -debug jit -lto -test >dev-lang/tcl-8.6.11: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/elfutils-0.185: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 -threads utils -valgrind -zstd >dev-libs/expat-2.4.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 -examples split-usr -static-libs unicode >dev-libs/glib-2.68.3-r1: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 -fam -gtk-doc mime -selinux -static-libs -sysprof -systemtap -test -utils xattr >dev-libs/gmp-6.2.1-r1: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 cxx -doc -pic -static-libs >dev-libs/gobject-introspection-1.68.0:0 -doctool -gtk-doc -python_single_target_python3_8 python_single_target_python3_9 -test >dev-libs/gobject-introspection-common-1.68.0:0 >dev-libs/icu-69.1:0/69.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 -debug -doc -examples -static-libs >dev-libs/isl-0.24: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.4:0/24 -doc -test >dev-libs/libassuan-2.5.5:0 >dev-libs/libevent-2.1.12: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 threads -verbose-debug >dev-libs/libffi-3.3-r2:0/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 -debug -pax_kernel -static-libs -test >dev-libs/libgcrypt-1.9.3: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_neon -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 -o-flag-munging -static-libs >dev-libs/libgpg-error-1.42: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 >dev-libs/libksba-1.6.0:0 -static-libs >dev-libs/libltdl-2.4.6: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/libpcre-8.45: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 cxx jit -libedit pcre16 pcre32 readline recursion-limit split-usr -static-libs unicode zlib >dev-libs/libpcre2-10.37-r2: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 recursion-limit split-usr -static-libs unicode zlib >dev-libs/libpipeline-1.5.3:0 -static-libs -test >dev-libs/libtasn1-4.17.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 -doc -static-libs -test -valgrind >dev-libs/libunistring-0.9.10-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 -doc -static-libs >dev-libs/libuv-1.41.0: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 >dev-libs/libxml2-2.9.12-r3: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 -icu ipv6 -lzma python python_targets_python3_8 python_targets_python3_9 readline -static-libs -test -verify-sig >dev-libs/libxslt-1.1.34-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 -static-libs -verify-sig >dev-libs/mpc-1.2.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.1.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 >dev-libs/nettle-3.7.3: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_neon -cpu_flags_x86_aes -cpu_flags_x86_sha -doc gmp -static-libs -test >dev-libs/npth-1.6-r1:0 >dev-libs/nspr-4.31: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 >dev-libs/openssl-1.1.1k:0/1.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 asm -bindist cpu_flags_x86_sse2 -rfc3779 -sctp -sslv3 -static-libs -test -tls-heartbeat -vanilla zlib >dev-libs/popt-1.18: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-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:0 -test >dev-perl/File-Listing-6.140.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.320.0:0 -test >dev-perl/HTTP-Negotiate-6.10.0-r1:0 >dev-perl/IO-HTML-1.4.0:0 -test >dev-perl/IO-Socket-INET6-2.720.0-r1:0 >dev-perl/IO-Socket-SSL-2.71.0:0 -examples -idn -test >dev-perl/libwww-perl-6.530.0:0 ssl -test >dev-perl/Locale-gettext-1.70.0:0 >dev-perl/LWP-MediaTypes-6.20.0-r1:0 >dev-perl/LWP-Protocol-https-6.70.0:0 -test >dev-perl/MIME-Charset-1.12.2:0 l10n_ja l10n_zh >dev-perl/Module-Build-0.422.400:0 -test >dev-perl/Mozilla-CA-20999999:0 >dev-perl/Net-HTTP-6.210.0:0 -minimal -test >dev-perl/Net-SSLeay-1.880.0-r1:0 -examples -examples -minimal -test >dev-perl/Pod-Parser-1.630.0-r1:0 -test >dev-perl/SGMLSpm-1.1-r1:0 >dev-perl/Socket6-0.280.0:0 >dev-perl/Sub-Name-0.210.0:0 -suggested -test >dev-perl/TermReadKey-2.370.0:0 -examples >dev-perl/Text-CharWidth-0.40.0-r1:0 >dev-perl/Text-WrapI18N-0.60.0-r1:0 >dev-perl/TimeDate-2.330.0:0 >dev-perl/Try-Tiny-0.300.0:0 -minimal -test >dev-perl/Unicode-LineBreak-2019.1.0:0 >dev-perl/URI-1.730.0:0 -test >dev-perl/WWW-RobotRules-6.20.0-r1:0 >dev-perl/XML-Parser-2.460.0:0 >dev-perl/YAML-Tiny-1.730.0:0 -minimal -test >dev-python/attrs-21.2.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/certifi-10001-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/chardet-4.0.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/cython-0.29.23:0 -doc -emacs python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/idna-3.2:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-python/importlib_metadata-4.5.0:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/iniconfig-1.1.1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/jinja-3.0.1:0 -doc -examples python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/leather-0.3.3-r1:0 python_targets_python3_8 python_targets_python3_9 -test -test xml >dev-python/lxml-4.6.3-r1:0 -doc -examples python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test threads >dev-python/markupsafe-2.0.1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/more-itertools-8.8.0:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/namespace-zope-1-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-python/packaging-20.9:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/pluggy-0.13.1-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/py-1.10.0:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/pyparsing-2.4.7-r1:0 -examples python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-python/pypy3-7.3.4_p2:0/pypy37-pp73 bzip2 gdbm jit ncurses -sqlite -test -tk >dev-python/pypy3-exe-7.3.4:7.3.4 bzip2 -cpu_flags_x86_sse2 jit -low-memory ncurses >dev-python/PySocks-1.7.1-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-python/pytest-6.2.4-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/requests-2.25.1-r2:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -socks5 -test >dev-python/setuptools-57.0.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/setuptools_scm-6.0.1-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/six-1.16.0:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/toml-0.10.2:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test -test >dev-python/typing-extensions-3.10.0.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-python/urllib3-1.26.5:0 -brotli python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/zipp-3.4.1:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/zope-interface-5.4.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-util/cmake-3.20.5:0 -doc -emacs ncurses -qt5 -test -test >dev-util/desktop-file-utils-0.26-r1:0 -emacs >dev-util/glib-utils-2.68.3:0 -python_single_target_python3_8 python_single_target_python3_9 >dev-util/gperf-3.1:0 >dev-util/gtk-doc-am-1.33.2:0 >dev-util/intltool-0.51.0-r2:0 >dev-util/itstool-2.0.6-r1:0 -python_single_target_python3_8 python_single_target_python3_9 >dev-util/meson-0.58.1:0 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-util/meson-format-array-0:0 python_targets_python3_8 python_targets_python3_9 >dev-util/ninja-1.10.2-r1:0 -doc -emacs -test -vim-syntax >dev-util/pkgconfig-0.29.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 -hardened -internal-glib >dev-util/re2c-2.1.1-r1:0 -debug >dev-vcs/git-2.32.0:0 blksha1 -cgi curl -cvs -doc -emacs -gnome-keyring gpg -highlight iconv -mediawiki -mediawiki-experimental nls pcre -perforce -perl -ppcsha1 -python_single_target_python3_10 -python_single_target_python3_8 python_single_target_python3_9 -subversion -test threads -tk webdav -xinetd >net-dns/libidn2-2.3.1: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 -verify-sig >net-firewall/iptables-1.8.7:0/1.8.3 -conntrack ipv6 -netlink -nftables -pcap split-usr -static-libs >net-libs/gnutls-3.7.2:0/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 cxx -dane -doc -examples -guile idn nls openssl -pkcs11 seccomp -sslv2 -sslv3 -static-libs -test -test-full tls-heartbeat -tools -valgrind >net-libs/libmnl-1.0.4:0/0.2.0 -examples split-usr -static-libs >net-libs/libnsl-1.3.0-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 >net-libs/libtirpc-1.3.2: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 ipv6 -kerberos split-usr -static-libs >net-libs/nghttp2-1.43.0-r2: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 -cxx -debug -hpack-tools -jemalloc -static-libs -test threads -utils -xml >net-misc/curl-7.77.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 -adns -alt-svc -brotli -curl_ssl_gnutls -curl_ssl_mbedtls -curl_ssl_nss curl_ssl_openssl -curl_ssl_winssl ftp -gnutls -gopher -hsts http2 -idn imap ipv6 -kerberos -ldap -mbedtls -metalink -nghttp3 -nss openssl pop3 progress-meter -quiche -rtmp -samba smtp -ssh ssl -sslv3 -static-libs -telnet -test tftp -threads -winssl -zstd >net-misc/iputils-20210202:0 arping -caps -clockdiff -doc filecaps -gcrypt -idn ipv6 -nettle nls -rarpd -rdisc ssl -static -tftpd -tracepath -traceroute6 >net-misc/netifrc-0.7.3:0 >net-misc/openssh-8.6_p1-r2:0 -abi_mips_n32 -audit -bindist -debug -hpn -kerberos -ldns -libedit -livecd pam pie scp -sctp -security-key -selinux ssl -static -test -X -X509 -xmss >net-misc/rsync-3.2.3-r4:0 acl -examples iconv ipv6 -lz4 ssl -stunnel -system-zlib xattr -xxhash -zstd >net-misc/wget-1.21.1:0 -cookie_check -debug -gnutls -idn ipv6 -metalink nls -ntlm pcre ssl -static -test -uuid zlib >perl-core/File-Temp-0.231.100:0 >sys-apps/acl-2.3.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 nls split-usr -static-libs >sys-apps/attr-2.5.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 -debug nls split-usr -static-libs >sys-apps/baselayout-2.7-r3:0 -build split-usr >sys-apps/busybox-1.33.1:0 -debug ipv6 -livecd -make-symlinks -math -mdev -pam -savedconfig -selinux -sep-usr static -syslog -systemd >sys-apps/coreutils-8.32-r1:0 acl -caps -gmp -hostname -kill -multicall nls -selinux split-usr -static -test -vanilla xattr >sys-apps/dbus-1.12.20-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 -debug -doc elogind -selinux -static-libs -systemd -test -test -user-session -X >sys-apps/debianutils-4.11.2:0 installkernel -static >sys-apps/diffutils-3.7-r1:0 nls -static >sys-apps/file-5.40-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 bzip2 -lzma -python -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -seccomp -static-libs zlib >sys-apps/findutils-4.8.0:0 nls -selinux -static -test >sys-apps/gawk-5.1.0:0 -mpfr nls readline >sys-apps/gentoo-functions-0.14:0 >sys-apps/grep-3.6:0 nls pcre -static >sys-apps/groff-1.22.4:0 -examples -uchardet -X >sys-apps/help2man-1.48.3:0 nls >sys-apps/hwids-20210613-r1:0 net pci -systemd udev usb >sys-apps/install-xattr-0.8:0 >sys-apps/iproute2-5.10.0-r1:0 -atm berkdb -caps -elf iptables ipv6 -libbsd -minimal -selinux >sys-apps/kbd-2.4.0:0 nls pam -test >sys-apps/kmod-29:0 -debug -doc lzma -pkcs7 -python python_targets_python3_8 python_targets_python3_9 -static-libs tools zlib -zstd >sys-apps/less-590:0 pcre unicode >sys-apps/man-db-2.9.4:0 berkdb gdbm manpager nls seccomp -selinux -static-libs zlib >sys-apps/man-pages-5.11:0 l10n_de l10n_fr l10n_it l10n_ja l10n_nl l10n_pl l10n_pt-BR l10n_ro l10n_ru l10n_zh-CN >sys-apps/man-pages-posix-2017a:0 >sys-apps/net-tools-2.10:0 arp hostname ipv6 -nis nls -plipconfig -selinux -slattach -static >sys-apps/openrc-0.43.3:0 -audit -bash -debug ncurses netifrc -newnet pam -prefix -selinux -sysv-utils unicode >sys-apps/portage-3.0.20-r6:0 -apidoc -build -doc -gentoo-dev ipc native-extensions python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 rsync-verify -selinux -test xattr >sys-apps/sandbox-2.24: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 >sys-apps/sed-4.8:0 acl nls -selinux -static >sys-apps/shadow-4.8.1-r3:0 acl -audit -bcrypt -cracklib nls pam -selinux -skey split-usr su xattr >sys-apps/systemd-tmpfiles-248.3:0 -selinux -test >sys-apps/sysvinit-2.99:0 -ibm -selinux -static >sys-apps/texinfo-6.7:0 nls standalone -static >sys-apps/util-linux-2.37: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_8 python_targets_python3_9 readline -selinux -slang split-usr -static-libs -su suid -systemd -test -tty-helpers -udev unicode >sys-apps/which-2.21:0 >sys-auth/elogind-246.10-r1:0 acl -audit -debug -doc pam policykit -selinux >sys-auth/pambase-20210201.1:0 -caps -debug elogind -gnome-keyring -homed -minimal -mktemp nullok -pam_krb5 -pam_ssh passwdqc -pwhistory -pwquality -securetty -selinux sha512 -systemd >sys-auth/passwdqc-2.0.2:0 >sys-auth/polkit-0.119:0 elogind -examples -gtk introspection -kde nls pam -selinux -systemd -test >sys-devel/autoconf-2.69-r5:2.69 -emacs >sys-devel/autoconf-2.13-r1:2.1 >sys-devel/autoconf-archive-2021.02.19:0 >sys-devel/autoconf-wrapper-15:0 >sys-devel/automake-1.16.3-r1:1.16 -test >sys-devel/automake-wrapper-11:0 >sys-devel/binutils-2.36.1-r1:2.36 -cet -default-gold -doc gold -multitarget nls plugins -static-libs -test -vanilla >sys-devel/binutils-config-5.4:0 native-symlinks >sys-devel/bison-3.7.6:0 -examples nls -static -test >sys-devel/flex-2.6.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 nls -static -test >sys-devel/gcc-11.1.0-r1:11 -ada -custom-cflags cxx -d -debug -doc -fixed-point fortran -go graphite -hardened -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.4:0 cc-wrappers native-symlinks >sys-devel/gettext-0.21-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 acl -cvs cxx -doc -emacs -git -java -java ncurses nls openmp -static-libs >sys-devel/gnuconfig-20210107:0 >sys-devel/libtool-2.4.6-r6:2 -vanilla >sys-devel/llvm-12.0.0: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 -debug -doc -doc -exegesis -gold -libedit libffi -llvm_targets_AArch64 llvm_targets_AMDGPU -llvm_targets_ARC -llvm_targets_ARM -llvm_targets_AVR llvm_targets_BPF -llvm_targets_CSKY -llvm_targets_Hexagon -llvm_targets_Lanai -llvm_targets_Mips -llvm_targets_MSP430 llvm_targets_NVPTX -llvm_targets_PowerPC -llvm_targets_RISCV -llvm_targets_Sparc -llvm_targets_SystemZ -llvm_targets_VE -llvm_targets_WebAssembly llvm_targets_X86 -llvm_targets_XCore ncurses -test -xar -xml -z3 >sys-devel/llvm-common-12.0.0:0 >sys-devel/m4-1.4.19:0 -examples nls >sys-devel/make-4.3:0 -guile nls -static >sys-devel/patch-2.7.6-r4:0 -static -test xattr >sys-fs/e2fsprogs-1.46.2:0 -cron -fuse -lto nls split-usr -static-libs threads >sys-fs/udev-248: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 kmod -selinux split-usr -static-libs >sys-fs/udev-init-scripts-34:0 >sys-kernel/installkernel-gentoo-3:0 >sys-kernel/linux-headers-5.12:0 -headers-only >sys-libs/db-6.0.35-r4:6.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 -doc -doc -examples -java -java -tcl -test -test >sys-libs/e2fsprogs-libs-1.46.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 split-usr -static-libs >sys-libs/gdbm-1.20: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 >sys-libs/glibc-2.33-r1:2.2 -audit -caps -cet -compile-locales crypt -custom-cflags -doc -gd -headers-only multiarch multilib -multilib-bootstrap -nscd -profile -selinux ssp static-libs -static-pie -suid -systemtap -test -vanilla >sys-libs/libcap-2.51: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 >sys-libs/libseccomp-2.5.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 -python python_targets_python3_8 python_targets_python3_9 -static-libs >sys-libs/ncurses-6.2_p20210123: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 -static-libs -test -threads tinfo -trace unicode >sys-libs/pam-1.5.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 -audit berkdb -debug filecaps -nis -selinux split-usr >sys-libs/readline-8.1_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 >sys-libs/timezone-data-2021a:0 -leaps-timezone nls -zic-slim >sys-libs/zlib-1.2.11-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 minizip split-usr -static-libs >sys-process/procps-3.3.17: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.4-r1:0 ipv6 nls -selinux -X >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/awk-1:0 >virtual/dev-manager-0-r2:0 >virtual/editor-0-r3:0 >virtual/libc-1-r1:0 >virtual/libcrypt-1-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 static-libs >virtual/libelf-3: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-r3: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 -static-libs -systemd >virtual/man-0-r4:0 >virtual/os-headers-0-r2:0 >virtual/package-manager-1:0 >virtual/pager-0:0 >virtual/perl-Carp-1.520.0-r1:0 >virtual/perl-Compress-Raw-Bzip2-2.101.0:0 >virtual/perl-Compress-Raw-Zlib-2.101.0:0 >virtual/perl-CPAN-Meta-2.150.10-r5:0 >virtual/perl-CPAN-Meta-Requirements-2.140.0-r7:0 >virtual/perl-CPAN-Meta-YAML-0.18.0-r7:0 >virtual/perl-Data-Dumper-2.179.0:0 >virtual/perl-Digest-MD5-2.580.0:0 >virtual/perl-Encode-3.80.0:0 >virtual/perl-Exporter-5.760.0:0 >virtual/perl-ExtUtils-CBuilder-0.280.236:0 >virtual/perl-ExtUtils-Install-2.200.0:0 >virtual/perl-ExtUtils-MakeMaker-7.620.0:0 >virtual/perl-ExtUtils-Manifest-1.730.0:0 >virtual/perl-ExtUtils-ParseXS-3.430.0:0 >virtual/perl-File-Spec-3.800.0:0 >virtual/perl-File-Temp-0.231.100:0 >virtual/perl-Getopt-Long-2.520.0:0 >virtual/perl-IO-1.460.0:0 >virtual/perl-IO-Compress-2.102.0:0 >virtual/perl-IO-Socket-IP-0.410.0:0 >virtual/perl-JSON-PP-4.60.0:0 >virtual/perl-libnet-3.130.0:0 ssl >virtual/perl-MIME-Base64-3.160.0:0 >virtual/perl-Module-Metadata-1.0.37-r1:0 >virtual/perl-parent-0.238.0-r1:0 >virtual/perl-Parse-CPAN-Meta-2.150.10-r5:0 >virtual/perl-Perl-OSType-1.10.0-r5:0 >virtual/perl-Pod-Parser-1.630.0-r8:0 >virtual/perl-podlators-4.140.0-r2:0 >virtual/perl-Scalar-List-Utils-1.550.0-r1:0 >virtual/perl-Test-Harness-3.430.0:0 >virtual/perl-Text-ParseWords-3.300.0-r8:0 >virtual/perl-Time-Local-1.300.0:0 >virtual/perl-version-0.992.800:0 >virtual/perl-XSLoader-0.300.0-r4:0 >virtual/pkgconfig-2:0 >virtual/rust-1.53.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 >virtual/service-manager-1:0 >virtual/ssh-0:0 -minimal >virtual/tmpfiles-0-r1:0 >virtual/udev-217-r2:0 >virtual/yacc-0:0 >www-client/pybugz-0.13:0 python_targets_python3_8 python_targets_python3_9 -zsh-completion >x11-misc/shared-mime-info-2.1:0 > > >####################### ># build.log # >####################### >>>> Unpacking source... >>>> Unpacking leather-0.3.3.tar.gz to /var/tmp/portage/dev-python/leather-0.3.3-r1/work >>>> Unpacking leather-0.3.3-src.tar.gz to /var/tmp/portage/dev-python/leather-0.3.3-r1/work >>>> Source unpacked in /var/tmp/portage/dev-python/leather-0.3.3-r1/work >>>> Preparing source in /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3 ... >>>> Source prepared. >>>> Configuring source in /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3 ... >>>> Source configured. >>>> Compiling source in /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3 ... > * python3_8: running distutils-r1_run_phase distutils-r1_python_compile >python3.8 setup.py build -j 16 >running build >running build_py >creating /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather >copying leather/grid.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather >copying leather/data_types.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather >copying leather/utils.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather >copying leather/axis.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather >copying leather/__init__.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather >copying leather/chart.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather >copying leather/theme.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather >copying leather/lattice.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather >copying leather/svg.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather >copying leather/testcase.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather >creating /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/scales >copying leather/scales/ordinal.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/scales >copying leather/scales/__init__.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/scales >copying leather/scales/temporal.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/scales >copying leather/scales/base.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/scales >copying leather/scales/linear.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/scales >creating /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/series >copying leather/series/__init__.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/series >copying leather/series/category.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/series >copying leather/series/base.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/series >creating /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/shapes >copying leather/shapes/dots.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/shapes >copying leather/shapes/__init__.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/shapes >copying leather/shapes/base.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/shapes >copying leather/shapes/columns.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/shapes >copying leather/shapes/line.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/shapes >copying leather/shapes/bars.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/shapes >creating /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/ticks >copying leather/ticks/__init__.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/ticks >copying leather/ticks/score_time.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/ticks >copying leather/ticks/base.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/ticks >copying leather/ticks/score.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_8/lib/leather/ticks >warning: build_py: byte-compiling is disabled, skipping. > > * python3_9: running distutils-r1_run_phase distutils-r1_python_compile >python3.9 setup.py build -j 16 >running build >running build_py >creating /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather >copying leather/grid.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather >copying leather/data_types.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather >copying leather/utils.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather >copying leather/axis.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather >copying leather/__init__.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather >copying leather/chart.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather >copying leather/theme.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather >copying leather/lattice.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather >copying leather/svg.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather >copying leather/testcase.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather >creating /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/scales >copying leather/scales/ordinal.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/scales >copying leather/scales/__init__.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/scales >copying leather/scales/temporal.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/scales >copying leather/scales/base.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/scales >copying leather/scales/linear.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/scales >creating /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/series >copying leather/series/__init__.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/series >copying leather/series/category.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/series >copying leather/series/base.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/series >creating /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/shapes >copying leather/shapes/dots.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/shapes >copying leather/shapes/__init__.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/shapes >copying leather/shapes/base.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/shapes >copying leather/shapes/columns.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/shapes >copying leather/shapes/line.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/shapes >copying leather/shapes/bars.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/shapes >creating /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/ticks >copying leather/ticks/__init__.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/ticks >copying leather/ticks/score_time.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/ticks >copying leather/ticks/base.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/ticks >copying leather/ticks/score.py -> /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3-python3_9/lib/leather/ticks >warning: build_py: byte-compiling is disabled, skipping. > >>>> Source compiled. >>>> Test phase: dev-python/leather-0.3.3-r1 > * python3_8: running distutils-r1_run_phase python_test >python3.8 -m pytest -vv -ra -l >============================= test session starts ============================== >platform linux -- Python 3.8.10, pytest-6.2.4, py-1.10.0, pluggy-0.13.1 -- /usr/bin/python3.8 >cachedir: .pytest_cache >rootdir: /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3 >collecting ... collected 70 items > >tests/test_axis.py::TestChart::test_tick_formatter FAILED [ 1%] >tests/test_axis.py::TestChart::test_ticks FAILED [ 2%] >tests/test_chart.py::TestChart::test_add_axes FAILED [ 4%] >tests/test_chart.py::TestChart::test_add_scales FAILED [ 5%] >tests/test_chart.py::TestChart::test_multiple_series FAILED [ 7%] >tests/test_chart.py::TestChart::test_scale_domain_warning PASSED [ 8%] >tests/test_chart.py::TestChart::test_set_axes FAILED [ 10%] >tests/test_chart.py::TestChart::test_set_scales FAILED [ 11%] >tests/test_chart.py::TestChart::test_single_series FAILED [ 12%] >tests/test_chart.py::TestChart::test_to_svg_file_handle PASSED [ 14%] >tests/test_chart.py::TestChart::test_to_svg_file_name PASSED [ 15%] >tests/test_chart.py::TestChart::test_unicode FAILED [ 17%] >tests/test_grid.py::TestGrid::test_add_many FAILED [ 18%] >tests/test_grid.py::TestGrid::test_add_one FAILED [ 20%] >tests/test_grid.py::TestGrid::test_to_svg_file_handle PASSED [ 21%] >tests/test_grid.py::TestGrid::test_to_svg_file_name PASSED [ 22%] >tests/test_lattice.py::TestLattice::test_add_many FAILED [ 24%] >tests/test_lattice.py::TestLattice::test_add_one FAILED [ 25%] >tests/test_lattice.py::TestLattice::test_bars FAILED [ 27%] >tests/test_lattice.py::TestLattice::test_bars_different FAILED [ 28%] >tests/test_scales.py::TestLinear::test_contains PASSED [ 30%] >tests/test_scales.py::TestLinear::test_decimal PASSED [ 31%] >tests/test_scales.py::TestLinear::test_no_spread PASSED [ 32%] >tests/test_scales.py::TestLinear::test_project PASSED [ 34%] >tests/test_scales.py::TestLinear::test_ticks PASSED [ 35%] >tests/test_scales.py::TestOrdinal::test_contains PASSED [ 37%] >tests/test_scales.py::TestOrdinal::test_project PASSED [ 38%] >tests/test_scales.py::TestOrdinal::test_project_interval PASSED [ 40%] >tests/test_scales.py::TestOrdinal::test_ticks PASSED [ 41%] >tests/test_scales.py::TestTemporal::test_contains PASSED [ 42%] >tests/test_scales.py::TestTemporal::test_project PASSED [ 44%] >tests/test_scales.py::TestTemporal::test_project_interval PASSED [ 45%] >tests/test_scales.py::TestTemporal::test_ticks PASSED [ 47%] >tests/test_series.py::TestSeries::test_custom PASSED [ 48%] >tests/test_series.py::TestSeries::test_dicts PASSED [ 50%] >tests/test_series.py::TestSeries::test_lists PASSED [ 51%] >tests/test_series.py::TestSeries::test_pairs PASSED [ 52%] >tests/test_series.py::TestCategorySeries::test_triples PASSED [ 54%] >tests/test_shapes.py::TestBars::test_nulls PASSED [ 55%] >tests/test_shapes.py::TestBars::test_to_svg PASSED [ 57%] >tests/test_shapes.py::TestBars::test_validate PASSED [ 58%] >tests/test_shapes.py::TestBars::test_zeros PASSED [ 60%] >tests/test_shapes.py::TestColumns::test_nulls PASSED [ 61%] >tests/test_shapes.py::TestColumns::test_to_svg PASSED [ 62%] >tests/test_shapes.py::TestColumns::test_validate PASSED [ 64%] >tests/test_shapes.py::TestDots::test_linear PASSED [ 65%] >tests/test_shapes.py::TestDots::test_nulls PASSED [ 67%] >tests/test_shapes.py::TestDots::test_ordinal PASSED [ 68%] >tests/test_shapes.py::TestDots::test_validate PASSED [ 70%] >tests/test_shapes.py::TestLine::test_linear PASSED [ 71%] >tests/test_shapes.py::TestLine::test_nulls PASSED [ 72%] >tests/test_shapes.py::TestLine::test_ordinal PASSED [ 74%] >tests/test_shapes.py::TestLine::test_validate PASSED [ 75%] >tests/test_ticks.py::TestScoreTicker::test_years PASSED [ 77%] >tests/test_ticks.py::TestScoreTimeTicker::test_days PASSED [ 78%] >tests/test_ticks.py::TestScoreTimeTicker::test_days_datetime PASSED [ 80%] >tests/test_ticks.py::TestScoreTimeTicker::test_days_for_months PASSED [ 81%] >tests/test_ticks.py::TestScoreTimeTicker::test_hours PASSED [ 82%] >tests/test_ticks.py::TestScoreTimeTicker::test_hours_for_days PASSED [ 84%] >tests/test_ticks.py::TestScoreTimeTicker::test_microseconds PASSED [ 85%] >tests/test_ticks.py::TestScoreTimeTicker::test_microseconds_for_seconds PASSED [ 87%] >tests/test_ticks.py::TestScoreTimeTicker::test_minutes PASSED [ 88%] >tests/test_ticks.py::TestScoreTimeTicker::test_minutes_for_hours PASSED [ 90%] >tests/test_ticks.py::TestScoreTimeTicker::test_months PASSED [ 91%] >tests/test_ticks.py::TestScoreTimeTicker::test_months_datetime PASSED [ 92%] >tests/test_ticks.py::TestScoreTimeTicker::test_months_for_years PASSED [ 94%] >tests/test_ticks.py::TestScoreTimeTicker::test_seconds PASSED [ 95%] >tests/test_ticks.py::TestScoreTimeTicker::test_seconds_for_minutes PASSED [ 97%] >tests/test_ticks.py::TestScoreTimeTicker::test_years PASSED [ 98%] >tests/test_ticks.py::TestScoreTimeTicker::test_years_datetime PASSED [100%] > >=================================== FAILURES =================================== >________________________ TestChart.test_tick_formatter _________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdff8bb0> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdff8bb0>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_axis.TestChart testMethod=test_tick_formatter> > > def test_tick_formatter(self): > chart = leather.Chart() > chart.add_dots(self.data) > > def test_formatter(value, i, count): > return '%i+' % (value * 10) > > axis = leather.Axis(tick_formatter=test_formatter) > chart.set_x_axis(axis) > > svg = self.render_chart(chart) > >> self.assertTickLabels(svg, 'bottom', ['25+', '50+', '75+', '100+', '0+']) > >axis = <leather.axis.Axis object at 0x7f98ce573880> >chart = <leather.chart.Chart object at 0x7f98ce5734f0> >self = <tests.test_axis.TestChart testMethod=test_tick_formatter> >svg = <Element svg at 0x7f98ce5f1f80> >test_formatter = <function TestChart.test_tick_formatter.<locals>.test_formatter at 0x7f98ce5ef8b0> > >tests/test_axis.py:38: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:38: in assertTickLabels > ticks = [t.text for t in svg.cssselect('.%s .tick text' % orient)] > compare = ['25+', '50+', '75+', '100+', '0+'] > orient = 'bottom' > self = <tests.test_axis.TestChart testMethod=test_tick_formatter> > svg = <Element svg at 0x7f98ce5f1f80> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdff8bb0> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdff8bb0>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >_____________________________ TestChart.test_ticks _____________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdfb6940> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdfb6940>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_axis.TestChart testMethod=test_ticks> > > def test_ticks(self): > chart = leather.Chart() > chart.add_dots(self.data) > > axis = leather.Axis(ticks=[-12, 0, 17, 44, 87, 99]) > chart.set_x_axis(axis) > > svg = self.render_chart(chart) > >> self.assertTickLabels(svg, 'bottom', ['-12', '17', '44', '87', '99', '0']) > >axis = <leather.axis.Axis object at 0x7f98cdfb6310> >chart = <leather.chart.Chart object at 0x7f98cdfb64f0> >self = <tests.test_axis.TestChart testMethod=test_ticks> >svg = <Element svg at 0x7f98ce6003c0> > >tests/test_axis.py:24: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:38: in assertTickLabels > ticks = [t.text for t in svg.cssselect('.%s .tick text' % orient)] > compare = ['-12', '17', '44', '87', '99', '0'] > orient = 'bottom' > self = <tests.test_axis.TestChart testMethod=test_ticks> > svg = <Element svg at 0x7f98ce6003c0> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdfb6940> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdfb6940>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >___________________________ TestChart.test_add_axes ____________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdfa2ca0> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdfa2ca0>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_chart.TestChart testMethod=test_add_axes> > > def test_add_axes(self): > chart = leather.Chart() > chart.add_x_axis(ticks=[0, 4, 8]) > chart.add_y_axis(ticks=[3, 6, 9]) > chart.add_dots(self.data1) > > svg = self.render_chart(chart) > >> self.assertTickLabels(svg, 'left', ['3', '6', '9']) > >chart = <leather.chart.Chart object at 0x7f98cdfa2f70> >self = <tests.test_chart.TestChart testMethod=test_add_axes> >svg = <Element svg at 0x7f98cdfc7580> > >tests/test_chart.py:119: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:38: in assertTickLabels > ticks = [t.text for t in svg.cssselect('.%s .tick text' % orient)] > compare = ['3', '6', '9'] > orient = 'left' > self = <tests.test_chart.TestChart testMethod=test_add_axes> > svg = <Element svg at 0x7f98cdfc7580> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdfa2ca0> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdfa2ca0>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >__________________________ TestChart.test_add_scales ___________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf79a30> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf79a30>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_chart.TestChart testMethod=test_add_scales> > > def test_add_scales(self): > chart = leather.Chart() > chart.add_x_scale(0, 20) > chart.add_y_scale(0, 20) > chart.add_dots(self.data1) > > svg = self.render_chart(chart) > >> self.assertTickLabels(svg, 'left', ['5', '10', '15', '20', '0']) > >chart = <leather.chart.Chart object at 0x7f98cdf79280> >self = <tests.test_chart.TestChart testMethod=test_add_scales> >svg = <Element svg at 0x7f98cdfca500> > >tests/test_chart.py:85: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:38: in assertTickLabels > ticks = [t.text for t in svg.cssselect('.%s .tick text' % orient)] > compare = ['5', '10', '15', '20', '0'] > orient = 'left' > self = <tests.test_chart.TestChart testMethod=test_add_scales> > svg = <Element svg at 0x7f98cdfca500> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf79a30> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf79a30>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >________________________ TestChart.test_multiple_series ________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf63700> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf63700>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_chart.TestChart testMethod=test_multiple_series> > > def test_multiple_series(self): > chart = leather.Chart() > chart.add_dots(self.data1) > chart.add_dots(self.data2) > > svg = self.render_chart(chart) > >> self.assertElementCount(svg, '.axis', 2) > >chart = <leather.chart.Chart object at 0x7f98cdf63160> >self = <tests.test_chart.TestChart testMethod=test_multiple_series> >svg = <Element svg at 0x7f98cdfcd400> > >tests/test_chart.py:52: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:34: in assertElementCount > series = svg.cssselect(selector) > count = 2 > selector = '.axis' > self = <tests.test_chart.TestChart testMethod=test_multiple_series> > svg = <Element svg at 0x7f98cdfcd400> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf63700> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf63700>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >___________________________ TestChart.test_set_axes ____________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf70190> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf70190>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_chart.TestChart testMethod=test_set_axes> > > def test_set_axes(self): > chart = leather.Chart() > chart.set_x_axis(leather.Axis(ticks=[0, 4, 8])) > chart.set_y_axis(leather.Axis(ticks=[3, 6, 9])) > chart.add_dots(self.data1) > > svg = self.render_chart(chart) > >> self.assertTickLabels(svg, 'left', ['3', '6', '9']) > >chart = <leather.chart.Chart object at 0x7f98cdf70df0> >self = <tests.test_chart.TestChart testMethod=test_set_axes> >svg = <Element svg at 0x7f98ce002740> > >tests/test_chart.py:108: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:38: in assertTickLabels > ticks = [t.text for t in svg.cssselect('.%s .tick text' % orient)] > compare = ['3', '6', '9'] > orient = 'left' > self = <tests.test_chart.TestChart testMethod=test_set_axes> > svg = <Element svg at 0x7f98ce002740> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf70190> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf70190>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >__________________________ TestChart.test_set_scales ___________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf79910> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf79910>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_chart.TestChart testMethod=test_set_scales> > > def test_set_scales(self): > chart = leather.Chart() > chart.set_x_scale(leather.Linear(0, 20)) > chart.set_y_scale(leather.Linear(0, 20)) > chart.add_dots(self.data1) > > svg = self.render_chart(chart) > >> self.assertTickLabels(svg, 'left', ['5', '10', '15', '20', '0']) > >chart = <leather.chart.Chart object at 0x7f98cdfb6f10> >self = <tests.test_chart.TestChart testMethod=test_set_scales> >svg = <Element svg at 0x7f98cec72240> > >tests/test_chart.py:74: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:38: in assertTickLabels > ticks = [t.text for t in svg.cssselect('.%s .tick text' % orient)] > compare = ['5', '10', '15', '20', '0'] > orient = 'left' > self = <tests.test_chart.TestChart testMethod=test_set_scales> > svg = <Element svg at 0x7f98cec72240> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf79910> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf79910>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >_________________________ TestChart.test_single_series _________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf25eb0> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf25eb0>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_chart.TestChart testMethod=test_single_series> > > def test_single_series(self): > chart = leather.Chart() > chart.add_dots(self.data1) > > svg = self.render_chart(chart) > >> self.assertElementCount(svg, '.axis', 2) > >chart = <leather.chart.Chart object at 0x7f98cdf70100> >self = <tests.test_chart.TestChart testMethod=test_single_series> >svg = <Element svg at 0x7f98cdfcfec0> > >tests/test_chart.py:40: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:34: in assertElementCount > series = svg.cssselect(selector) > count = 2 > selector = '.axis' > self = <tests.test_chart.TestChart testMethod=test_single_series> > svg = <Element svg at 0x7f98cdfcfec0> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf25eb0> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf25eb0>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >____________________________ TestChart.test_unicode ____________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf2ee50> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf2ee50>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_chart.TestChart testMethod=test_unicode> > > def test_unicode(self): > chart = leather.Chart() > chart.add_bars([(1, u'ð')]) > > svg = self.render_chart(chart) > >> self.assertElementCount(svg, '.axis', 2) > >chart = <leather.chart.Chart object at 0x7f98cdf79310> >self = <tests.test_chart.TestChart testMethod=test_unicode> >svg = <Element svg at 0x7f98ce578180> > >tests/test_chart.py:63: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:34: in assertElementCount > series = svg.cssselect(selector) > count = 2 > selector = '.axis' > self = <tests.test_chart.TestChart testMethod=test_unicode> > svg = <Element svg at 0x7f98ce578180> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf2ee50> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf2ee50>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >____________________________ TestGrid.test_add_many ____________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdfb6940> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdfb6940>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_grid.TestGrid testMethod=test_add_many> > > def test_add_many(self): > chart1 = leather.Chart() > chart1.add_dots(self.data1) > > chart2 = leather.Chart() > chart2.add_dots(self.data2) > > grid = leather.Grid() > grid.add_many([chart1, chart2, chart1]) > > svg = self.render_chart(grid) > >> self.assertElementCount(svg, '.axis', 6) > >chart1 = <leather.chart.Chart object at 0x7f98cdf79df0> >chart2 = <leather.chart.Chart object at 0x7f98cdfb6310> >grid = <leather.grid.Grid object at 0x7f98cdfb6b50> >self = <tests.test_grid.TestGrid testMethod=test_add_many> >svg = <Element svg at 0x7f98cdffa940> > >tests/test_grid.py:62: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:34: in assertElementCount > series = svg.cssselect(selector) > count = 6 > selector = '.axis' > self = <tests.test_grid.TestGrid testMethod=test_add_many> > svg = <Element svg at 0x7f98cdffa940> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdfb6940> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdfb6940>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >____________________________ TestGrid.test_add_one _____________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf80040> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf80040>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_grid.TestGrid testMethod=test_add_one> > > def test_add_one(self): > chart1 = leather.Chart() > chart1.add_dots(self.data1) > > chart2 = leather.Chart() > chart2.add_dots(self.data2) > > grid = leather.Grid() > grid.add_one(chart1) > grid.add_one(chart2) > > svg = self.render_chart(grid) > >> self.assertElementCount(svg, '.axis', 4) > >chart1 = <leather.chart.Chart object at 0x7f98cdf80c10> >chart2 = <leather.chart.Chart object at 0x7f98cdf802e0> >grid = <leather.grid.Grid object at 0x7f98cdf807c0> >self = <tests.test_grid.TestGrid testMethod=test_add_one> >svg = <Element svg at 0x7f98ce5e29c0> > >tests/test_grid.py:45: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:34: in assertElementCount > series = svg.cssselect(selector) > count = 4 > selector = '.axis' > self = <tests.test_grid.TestGrid testMethod=test_add_one> > svg = <Element svg at 0x7f98ce5e29c0> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf80040> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf80040>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >__________________________ TestLattice.test_add_many ___________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf251f0> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf251f0>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_lattice.TestLattice testMethod=test_add_many> > > def test_add_many(self): > lattice = leather.Lattice() > lattice.add_many([self.data1, self.data2, self.data1]) > > svg = self.render_chart(lattice) > >> self.assertElementCount(svg, '.axis', 6) > >lattice = <leather.lattice.Lattice object at 0x7f98cdfb60a0> >self = <tests.test_lattice.TestLattice testMethod=test_add_many> >svg = <Element svg at 0x7f98cdfc9200> > >tests/test_lattice.py:40: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:34: in assertElementCount > series = svg.cssselect(selector) > count = 6 > selector = '.axis' > self = <tests.test_lattice.TestLattice testMethod=test_add_many> > svg = <Element svg at 0x7f98cdfc9200> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf251f0> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf251f0>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >___________________________ TestLattice.test_add_one ___________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cec5ad90> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cec5ad90>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_lattice.TestLattice testMethod=test_add_one> > > def test_add_one(self): > lattice = leather.Lattice() > lattice.add_one(self.data1) > lattice.add_one(self.data2) > > svg = self.render_chart(lattice) > >> self.assertElementCount(svg, '.axis', 4) > >lattice = <leather.lattice.Lattice object at 0x7f98cdf79580> >self = <tests.test_lattice.TestLattice testMethod=test_add_one> >svg = <Element svg at 0x7f98ceca4380> > >tests/test_lattice.py:30: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:34: in assertElementCount > series = svg.cssselect(selector) > count = 4 > selector = '.axis' > self = <tests.test_lattice.TestLattice testMethod=test_add_one> > svg = <Element svg at 0x7f98ceca4380> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cec5ad90> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cec5ad90>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >____________________________ TestLattice.test_bars _____________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf41d30> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf41d30>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_lattice.TestLattice testMethod=test_bars> > > def test_bars(self): > data1 = [ > (2, 'foo'), > (6, 'bar'), > (9, 'bing') > ] > > data2 = [ > (3, 'foo'), > (5, 'bar'), > (7, 'bing') > ] > > lattice = leather.Lattice(shape=leather.Bars()) > lattice.add_many([data1, data2]) > > svg = self.render_chart(lattice) > >> self.assertElementCount(svg, '.axis', 4) > >data1 = [(2, 'foo'), (6, 'bar'), (9, 'bing')] >data2 = [(3, 'foo'), (5, 'bar'), (7, 'bing')] >lattice = <leather.lattice.Lattice object at 0x7f98cdf414f0> >self = <tests.test_lattice.TestLattice testMethod=test_bars> >svg = <Element svg at 0x7f98cdfce540> > >tests/test_lattice.py:62: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:34: in assertElementCount > series = svg.cssselect(selector) > count = 4 > selector = '.axis' > self = <tests.test_lattice.TestLattice testMethod=test_bars> > svg = <Element svg at 0x7f98cdfce540> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf41d30> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf41d30>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >_______________________ TestLattice.test_bars_different ________________________ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: >> import cssselect as external_cssselect >E ModuleNotFoundError: No module named 'cssselect' > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf2e5e0> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf2e5e0>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:13: ModuleNotFoundError > >During handling of the above exception, another exception occurred: > >self = <tests.test_lattice.TestLattice testMethod=test_bars_different> > > def test_bars_different(self): > data1 = [ > (3, 'foo'), > (5, 'bar'), > (9, 'bing') > ] > > data2 = [ > (3, 'foo'), > (5, 'bar'), > (9, 'baz') > ] > > lattice = leather.Lattice(shape=leather.Bars()) > lattice.add_many([data1, data2]) > > svg = self.render_chart(lattice) > >> self.assertElementCount(svg, '.axis', 4) > >data1 = [(3, 'foo'), (5, 'bar'), (9, 'bing')] >data2 = [(3, 'foo'), (5, 'bar'), (9, 'baz')] >lattice = <leather.lattice.Lattice object at 0x7f98cdf2ef70> >self = <tests.test_lattice.TestLattice testMethod=test_bars_different> >svg = <Element svg at 0x7f98cdf5dd80> > >tests/test_lattice.py:84: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >leather/testcase.py:34: in assertElementCount > series = svg.cssselect(selector) > count = 4 > selector = '.axis' > self = <tests.test_lattice.TestLattice testMethod=test_bars_different> > svg = <Element svg at 0x7f98cdf5dd80> >src/lxml/etree.pyx:1594: in lxml.etree._Element.cssselect > ??? > AncestorsIterator = <class 'lxml.etree.AncestorsIterator'> > AttributeBasedElementClassLookup = <class 'lxml.etree.AttributeBasedElementClassLookup'> > C14NError = <class 'lxml.etree.C14NError'> > C14NWriterTarget = <class 'lxml.etree.C14NWriterTarget'> > CDATA = <class 'lxml.etree.CDATA'> > Comment = <cyfunction Comment at 0x7f98ce0865f0> > CommentBase = <class 'lxml.etree.CommentBase'> > CustomElementClassLookup = <class 'lxml.etree.CustomElementClassLookup'> > DEBUG = 1 > DTD = <class 'lxml.etree.DTD'> > DTDError = <class 'lxml.etree.DTDError'> > DTDParseError = <class 'lxml.etree.DTDParseError'> > DTDValidateError = <class 'lxml.etree.DTDValidateError'> > DocInfo = <class 'lxml.etree.DocInfo'> > DocumentInvalid = <class 'lxml.etree.DocumentInvalid'> > ETCompatXMLParser = <class 'lxml.etree.ETCompatXMLParser'> > ETXPath = <class 'lxml.etree.ETXPath'> > Element = <cyfunction Element at 0x7f98ce086520> > ElementBase = <class 'lxml.etree.ElementBase'> > ElementChildIterator = <class 'lxml.etree.ElementChildIterator'> > ElementClassLookup = <class 'lxml.etree.ElementClassLookup'> > ElementDefaultClassLookup = <class 'lxml.etree.ElementDefaultClassLookup'> > ElementDepthFirstIterator = <class 'lxml.etree.ElementDepthFirstIterator'> > ElementNamespaceClassLookup = <class 'lxml.etree.ElementNamespaceClassLookup'> > ElementTextIterator = <class 'lxml.etree.ElementTextIterator'> > ElementTree = <cyfunction ElementTree at 0x7f98ce086930> > Entity = <cyfunction Entity at 0x7f98ce086790> > EntityBase = <class 'lxml.etree.EntityBase'> > Error = <class 'lxml.etree.Error'> > ErrorDomains = <class 'lxml.etree.ErrorDomains'> > ErrorLevels = <class 'lxml.etree.ErrorLevels'> > ErrorTypes = <class 'lxml.etree.ErrorTypes'> > Extension = <cyfunction Extension at 0x7f98cdffe5f0> > FallbackElementClassLookup = <class 'lxml.etree.FallbackElementClassLookup'> > FunctionNamespace = <cyfunction FunctionNamespace at 0x7f98ce088930> > HTML = <cyfunction HTML at 0x7f98ce086a00> > HTMLParser = <class 'lxml.etree.HTMLParser'> > HTMLPullParser = <class 'lxml.etree.HTMLPullParser'> > LIBXML_COMPILED_VERSION = (2, 9, 12) > LIBXML_VERSION = (2, 9, 12) > LIBXSLT_COMPILED_VERSION = (1, 1, 34) > LIBXSLT_VERSION = (1, 1, 34) > LXML_VERSION = (4, 6, 3, 0) > LxmlError = <class 'lxml.etree.LxmlError'> > LxmlRegistryError = <class 'lxml.etree.LxmlRegistryError'> > LxmlSyntaxError = <class 'lxml.etree.LxmlSyntaxError'> > NamespaceRegistryError = <class 'lxml.etree.NamespaceRegistryError'> > PI = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PIBase = <class 'lxml.etree.PIBase'> > ParseError = <class 'lxml.etree.ParseError'> > ParserBasedElementClassLookup = <class 'lxml.etree.ParserBasedElementClassLookup'> > ParserError = <class 'lxml.etree.ParserError'> > ProcessingInstruction = <cyfunction ProcessingInstruction at 0x7f98ce0866c0> > PyErrorLog = <class 'lxml.etree.PyErrorLog'> > PythonElementClassLookup = <class 'lxml.etree.PythonElementClassLookup'> > QName = <class 'lxml.etree.QName'> > RelaxNG = <class 'lxml.etree.RelaxNG'> > RelaxNGError = <class 'lxml.etree.RelaxNGError'> > RelaxNGErrorTypes = <class 'lxml.etree.RelaxNGErrorTypes'> > RelaxNGParseError = <class 'lxml.etree.RelaxNGParseError'> > RelaxNGValidateError = <class 'lxml.etree.RelaxNGValidateError'> > Resolver = <class 'lxml.etree.Resolver'> > Schematron = <class 'lxml.etree.Schematron'> > SchematronError = <class 'lxml.etree.SchematronError'> > SchematronParseError = <class 'lxml.etree.SchematronParseError'> > SchematronValidateError = <class 'lxml.etree.SchematronValidateError'> > SerialisationError = <class 'lxml.etree.SerialisationError'> > SiblingsIterator = <class 'lxml.etree.SiblingsIterator'> > SubElement = <cyfunction SubElement at 0x7f98ce086860> > TreeBuilder = <class 'lxml.etree.TreeBuilder'> > XInclude = <class 'lxml.etree.XInclude'> > XIncludeError = <class 'lxml.etree.XIncludeError'> > XML = <cyfunction XML at 0x7f98ce086ad0> > XMLDTDID = <cyfunction XMLDTDID at 0x7f98cdffd930> > XMLID = <cyfunction XMLID at 0x7f98cdffd860> > XMLParser = <class 'lxml.etree.XMLParser'> > XMLPullParser = <class 'lxml.etree.XMLPullParser'> > XMLSchema = <class 'lxml.etree.XMLSchema'> > XMLSchemaError = <class 'lxml.etree.XMLSchemaError'> > XMLSchemaParseError = <class 'lxml.etree.XMLSchemaParseError'> > XMLSchemaValidateError = <class 'lxml.etree.XMLSchemaValidateError'> > XMLSyntaxAssertionError = <class 'lxml.etree.XMLSyntaxAssertionError'> > XMLSyntaxError = <class 'lxml.etree.XMLSyntaxError'> > XMLTreeBuilder = <class 'lxml.etree.ETCompatXMLParser'> > XPath = <class 'lxml.etree.XPath'> > XPathDocumentEvaluator = <class 'lxml.etree.XPathDocumentEvaluator'> > XPathElementEvaluator = <class 'lxml.etree.XPathElementEvaluator'> > XPathError = <class 'lxml.etree.XPathError'> > XPathEvalError = <class 'lxml.etree.XPathEvalError'> > XPathEvaluator = <cyfunction XPathEvaluator at 0x7f98cdffed40> > XPathFunctionError = <class 'lxml.etree.XPathFunctionError'> > XPathResultError = <class 'lxml.etree.XPathResultError'> > XPathSyntaxError = <class 'lxml.etree.XPathSyntaxError'> > XSLT = <class 'lxml.etree.XSLT'> > XSLTAccessControl = <class 'lxml.etree.XSLTAccessControl'> > XSLTApplyError = <class 'lxml.etree.XSLTApplyError'> > XSLTError = <class 'lxml.etree.XSLTError'> > XSLTExtension = <class 'lxml.etree.XSLTExtension'> > XSLTExtensionError = <class 'lxml.etree.XSLTExtensionError'> > XSLTParseError = <class 'lxml.etree.XSLTParseError'> > XSLTSaveError = <class 'lxml.etree.XSLTSaveError'> > _Attrib = <class 'lxml.etree._Attrib'> > _BaseErrorLog = <class 'lxml.etree._BaseErrorLog'> > _Comment = <class 'lxml.etree._Comment'> > _Document = <class 'lxml.etree._Document'> > _DomainErrorLog = <class 'lxml.etree._DomainErrorLog'> > _Element = <class 'lxml.etree._Element'> > _ElementIterator = <class 'lxml.etree._ElementIterator'> > _ElementMatchIterator = <class 'lxml.etree._ElementMatchIterator'> > _ElementStringResult = <class 'lxml.etree._ElementStringResult'> > _ElementTagMatcher = <class 'lxml.etree._ElementTagMatcher'> > _ElementTree = <class 'lxml.etree._ElementTree'> > _ElementUnicodeResult = <class 'lxml.etree._ElementUnicodeResult'> > _Entity = <class 'lxml.etree._Entity'> > _ErrorLog = <class 'lxml.etree._ErrorLog'> > _FeedParser = <class 'lxml.etree._FeedParser'> > _IDDict = <class 'lxml.etree._IDDict'> > _ListErrorLog = <class 'lxml.etree._ListErrorLog'> > _LogEntry = <class 'lxml.etree._LogEntry'> > _ProcessingInstruction = <class 'lxml.etree._ProcessingInstruction'> > _RotatingErrorLog = <class 'lxml.etree._RotatingErrorLog'> > _SaxParserTarget = <class 'lxml.etree._SaxParserTarget'> > _TargetParserResult = <class 'lxml.etree._TargetParserResult'> > _Validator = <class 'lxml.etree._Validator'> > _XPathEvaluatorBase = <class 'lxml.etree._XPathEvaluatorBase'> > _XSLTProcessingInstruction = <class 'lxml.etree._XSLTProcessingInstruction'> > _XSLTResultTree = <class 'lxml.etree._XSLTResultTree'> > __all__ = ['AttributeBasedElementClassLookup', > 'C14NError', > 'C14NWriterTarget', > 'CDATA', > 'Comment', > 'CommentBase', > 'CustomElementClassLookup', > 'DEBUG', > 'DTD', > 'DTDError', > 'DTDParseError', > 'DTDValidateError', > 'DocumentInvalid', > 'ETCompatXMLParser', > 'ETXPath', > 'Element', > 'ElementBase', > 'ElementClassLookup', > 'ElementDefaultClassLookup', > 'ElementNamespaceClassLookup', > 'ElementTree', > 'Entity', > 'EntityBase', > 'Error', > 'ErrorDomains', > 'ErrorLevels', > 'ErrorTypes', > 'Extension', > 'FallbackElementClassLookup', > 'FunctionNamespace', > 'HTML', > 'HTMLParser', > 'LIBXML_COMPILED_VERSION', > 'LIBXML_VERSION', > 'LIBXSLT_COMPILED_VERSION', > 'LIBXSLT_VERSION', > 'LXML_VERSION', > 'LxmlError', > 'LxmlRegistryError', > 'LxmlSyntaxError', > 'NamespaceRegistryError', > 'PI', > 'PIBase', > 'ParseError', > 'ParserBasedElementClassLookup', > 'ParserError', > 'ProcessingInstruction', > 'PyErrorLog', > 'PythonElementClassLookup', > 'QName', > 'RelaxNG', > 'RelaxNGError', > 'RelaxNGErrorTypes', > 'RelaxNGParseError', > 'RelaxNGValidateError', > 'Resolver', > 'Schematron', > 'SchematronError', > 'SchematronParseError', > 'SchematronValidateError', > 'SerialisationError', > 'SubElement', > 'TreeBuilder', > 'XInclude', > 'XIncludeError', > 'XML', > 'XMLDTDID', > 'XMLID', > 'XMLParser', > 'XMLSchema', > 'XMLSchemaError', > 'XMLSchemaParseError', > 'XMLSchemaValidateError', > 'XMLSyntaxError', > 'XMLTreeBuilder', > 'XPath', > 'XPathDocumentEvaluator', > 'XPathError', > 'XPathEvalError', > 'XPathEvaluator', > 'XPathFunctionError', > 'XPathResultError', > 'XPathSyntaxError', > 'XSLT', > 'XSLTAccessControl', > 'XSLTApplyError', > 'XSLTError', > 'XSLTExtension', > 'XSLTExtensionError', > 'XSLTParseError', > 'XSLTSaveError', > 'canonicalize', > 'cleanup_namespaces', > 'clear_error_log', > 'dump', > 'fromstring', > 'fromstringlist', > 'get_default_parser', > 'iselement', > 'iterparse', > 'iterwalk', > 'parse', > 'parseid', > 'register_namespace', > 'set_default_parser', > 'set_element_class_lookup', > 'strip_attributes', > 'strip_elements', > 'strip_tags', > 'tostring', > 'tostringlist', > 'tounicode', > 'use_global_python_log'] > __builtins__ = <builtins> > __doc__ = '\nThe ``lxml.etree`` module implements the extended ElementTree API for XML.\n' > __docformat__ = 'restructuredtext en' > __file__ = '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so' > __loader__ = <_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00> > __name__ = 'lxml.etree' > __package__ = 'lxml' > __pyx_capi__ = {'adoptExternalDocument': <capsule object "struct LxmlElementTree *(xmlDoc *, PyObject *, int)" at 0x7f98ce59ad50>, > 'appendChild': <capsule object "void (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e840>, > 'appendChildToElement': <capsule object "int (struct LxmlElement *, struct LxmlElement *)" at 0x7f98ce55e870>, > 'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" at 0x7f98ce55e210>, > 'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e240>, > 'callLookupFallback': <capsule object "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a6c0>, > 'collectAttributes': <capsule object "PyObject *(xmlNode *, int)" at 0x7f98ce55e060>, > 'deepcopyNodeToDocument': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59afc0>, > 'delAttribute': <capsule object "int (struct LxmlElement *, PyObject *)" at 0x7f98ce55e150>, > 'delAttributeFromNsName': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55e3c0>, > 'documentOrRaise': <capsule object "struct LxmlDocument *(PyObject *)" at 0x7f98ce55e360>, > 'elementFactory': <capsule object "struct LxmlElement *(struct LxmlDocument *, xmlNode *)" at 0x7f98ce59a7e0>, > 'elementTreeFactory': <capsule object "struct LxmlElementTree *(struct LxmlElement *)" at 0x7f98ce59af90>, > 'findChild': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e780>, > 'findChildBackwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7e0>, > 'findChildForwards': <capsule object "xmlNode *(xmlNode *, Py_ssize_t)" at 0x7f98ce55e7b0>, > 'findOrBuildNodeNsPrefix': <capsule object "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce55ea20>, > 'getAttributeValue': <capsule object "PyObject *(struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e090>, > 'getNsTag': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e900>, > 'getNsTagWithEmptyNs': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e930>, > 'hasChild': <capsule object "int (xmlNode *)" at 0x7f98ce55e420>, > 'hasTail': <capsule object "int (xmlNode *)" at 0x7f98ce55e2d0>, > 'hasText': <capsule object "int (xmlNode *)" at 0x7f98ce55e2a0>, > 'initTagMatch': <capsule object "void (struct LxmlElementTagMatcher *, PyObject *)" at 0x7f98ce55e9f0>, > 'iteratorStoreNext': <capsule object "void (struct LxmlElementIterator *, struct LxmlElement *)" at 0x7f98ce55e9c0>, > 'iterattributes': <capsule object "PyObject *(struct LxmlElement *, int)" at 0x7f98ce55e030>, > 'lookupDefaultElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac60>, > 'lookupNamespaceElementClass': <capsule object "PyObject *(PyObject *, PyObject *, xmlNode *)" at 0x7f98ce59ac90>, > 'makeElement': <capsule object "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59a300>, > 'makeSubElement': <capsule object "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)" at 0x7f98ce59af60>, > 'namespacedName': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e960>, > 'namespacedNameFromNsName': <capsule object "PyObject *(const xmlChar *, const xmlChar *)" at 0x7f98ce55e990>, > 'newElementTree': <capsule object "struct LxmlElementTree *(struct LxmlElement *, PyObject *)" at 0x7f98ce59a330>, > 'nextElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e810>, > 'previousElement': <capsule object "xmlNode *(xmlNode *)" at 0x7f98ce55e4e0>, > 'pyunicode': <capsule object "PyObject *(const xmlChar *)" at 0x7f98ce55e8a0>, > 'rootNodeOrRaise': <capsule object "struct LxmlElement *(PyObject *)" at 0x7f98ce55e0c0>, > 'setAttributeValue': <capsule object "int (struct LxmlElement *, PyObject *, PyObject *)" at 0x7f98ce55e0f0>, > 'setElementClassLookupFunction': <capsule object "void (_element_class_lookup_function, PyObject *)" at 0x7f98ce59af30>, > 'setNodeText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e300>, > 'setTailText': <capsule object "int (xmlNode *, PyObject *)" at 0x7f98ce55e330>, > 'tagMatches': <capsule object "int (xmlNode *, const xmlChar *, const xmlChar *)" at 0x7f98ce59a780>, > 'tailOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e1b0>, > 'textOf': <capsule object "PyObject *(xmlNode *)" at 0x7f98ce55e180>, > 'utf8': <capsule object "PyObject *(PyObject *)" at 0x7f98ce55e8d0>} > __spec__ = ModuleSpec(name='lxml.etree', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f98ce573d00>, origin='/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so') > __test__ = {'FunctionNamespace (line 207)': 'FunctionNamespace(ns_uri)\n' > '\n' > ' Retrieve the function namespace object ' > 'associated with the given\n' > ' URI.\n' > '\n' > ' Creates a new one if it does not yet ' > 'exist. A function namespace\n' > ' can only be used to register extension ' > 'functions.\n' > '\n' > ' Usage:\n' > '\n' > ' >>> ns_functions = ' > 'FunctionNamespace("http://schema.org/Movie")\n' > '\n' > ' >>> @ns_functions # uses function name\n' > ' ... def add2(x):\n' > ' ... return x + 2\n' > '\n' > ' >>> @ns_functions("add3") # uses ' > 'explicit name\n' > ' ... def add_three(x):\n' > ' ... return x + 3\n' > ' ', > 'XML (line 3191)': 'XML(text, parser=None, base_url=None)\n' > '\n' > ' Parses an XML document or fragment from a string ' > 'constant.\n' > ' Returns the root node (or the result returned by a ' > 'parser target).\n' > ' This function can be used to embed "XML literals" in ' > 'Python code,\n' > ' like in\n' > '\n' > ' >>> root = XML("<root><test/></root>")\n' > ' >>> print(root.tag)\n' > ' root\n' > '\n' > ' To override the parser with a different ``XMLParser`` ' > 'you can pass it to\n' > ' the ``parser`` keyword argument.\n' > '\n' > ' The ``base_url`` keyword argument allows to set the ' > 'original base URL of\n' > ' the document to support relative Paths when looking ' > 'up external entities\n' > ' (DTD, XInclude, ...).\n' > ' '} > __version__ = '4.6.3' > adopt_external_document = <cyfunction adopt_external_document at 0x7f98ce087380> > canonicalize = <cyfunction canonicalize at 0x7f98cdfdc790> > cleanup_namespaces = <cyfunction cleanup_namespaces at 0x7f98cdffe2b0> > clear_error_log = <cyfunction clear_error_log at 0x7f98ce07a110> > dump = <cyfunction dump at 0x7f98ce086ee0> > fromstring = <cyfunction fromstring at 0x7f98ce086ba0> > fromstringlist = <cyfunction fromstringlist at 0x7f98ce086c70> > get_default_parser = <cyfunction get_default_parser at 0x7f98cdfdaad0> > htmlfile = <class 'lxml.etree.htmlfile'> > indent = <cyfunction indent at 0x7f98ce086e10> > iselement = <cyfunction iselement at 0x7f98ce086d40> > iterparse = <class 'lxml.etree.iterparse'> > iterwalk = <class 'lxml.etree.iterwalk'> > memory_debugger = <lxml.etree._MemDebug object at 0x7f98cf645ee0> > open = <built-in function open> > parse = <cyfunction parse at 0x7f98ce0872b0> > parseid = <cyfunction parseid at 0x7f98cdffda00> > register_namespace = <cyfunction register_namespace at 0x7f98ce07a040> > set_default_parser = <cyfunction set_default_parser at 0x7f98cdfdaa00> > set_element_class_lookup = <cyfunction set_element_class_lookup at 0x7f98ce088380> > strip_attributes = <cyfunction strip_attributes at 0x7f98cdffe380> > strip_elements = <cyfunction strip_elements at 0x7f98cdffe450> > strip_tags = <cyfunction strip_tags at 0x7f98cdffe520> > tostring = <cyfunction tostring at 0x7f98ce087040> > tostringlist = <cyfunction tostringlist at 0x7f98ce087110> > tounicode = <cyfunction tounicode at 0x7f98ce0871e0> > use_global_python_log = <cyfunction use_global_python_log at 0x7f98ce07f1e0> > xmlfile = <class 'lxml.etree.xmlfile'> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > """CSS Selectors based on XPath. > > This module supports selecting XML/HTML tags based on CSS selectors. > See the `CSSSelector` class for details. > > This is a thin wrapper around cssselect 0.7 or later. > """ > > from __future__ import absolute_import > > from . import etree > try: > import cssselect as external_cssselect > except ImportError: >> raise ImportError( > 'cssselect does not seem to be installed. ' > 'See http://packages.python.org/cssselect/') >E ImportError: cssselect does not seem to be installed. See http://packages.python.org/cssselect/ > >__builtins__ = <builtins> >__cached__ = '/usr/lib/python3.8/site-packages/lxml/__pycache__/cssselect.cpython-38.pyc' >__doc__ = ('CSS Selectors based on XPath.\n' > '\n' > 'This module supports selecting XML/HTML tags based on CSS selectors.\n' > 'See the `CSSSelector` class for details.\n' > '\n' > 'This is a thin wrapper around cssselect 0.7 or later.\n') >__file__ = '/usr/lib/python3.8/site-packages/lxml/cssselect.py' >__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf2e5e0> >__name__ = 'lxml.cssselect' >__package__ = 'lxml' >__spec__ = ModuleSpec(name='lxml.cssselect', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f98cdf2e5e0>, origin='/usr/lib/python3.8/site-packages/lxml/cssselect.py') >absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144) >etree = <module 'lxml.etree' from '/usr/lib/python3.8/site-packages/lxml/etree.cpython-38-x86_64-linux-gnu.so'> > >/usr/lib/python3.8/site-packages/lxml/cssselect.py:15: ImportError >=============================== warnings summary =============================== >leather/series/base.py:3 >leather/series/base.py:3 >leather/series/base.py:3 > /var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3/leather/series/base.py:3: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working > >-- Docs: https://docs.pytest.org/en/stable/warnings.html >=========================== short test summary info ============================ >FAILED tests/test_axis.py::TestChart::test_tick_formatter - ImportError: csss... >FAILED tests/test_axis.py::TestChart::test_ticks - ImportError: cssselect doe... >FAILED tests/test_chart.py::TestChart::test_add_axes - ImportError: cssselect... >FAILED tests/test_chart.py::TestChart::test_add_scales - ImportError: csssele... >FAILED tests/test_chart.py::TestChart::test_multiple_series - ImportError: cs... >FAILED tests/test_chart.py::TestChart::test_set_axes - ImportError: cssselect... >FAILED tests/test_chart.py::TestChart::test_set_scales - ImportError: csssele... >FAILED tests/test_chart.py::TestChart::test_single_series - ImportError: csss... >FAILED tests/test_chart.py::TestChart::test_unicode - ImportError: cssselect ... >FAILED tests/test_grid.py::TestGrid::test_add_many - ImportError: cssselect d... >FAILED tests/test_grid.py::TestGrid::test_add_one - ImportError: cssselect do... >FAILED tests/test_lattice.py::TestLattice::test_add_many - ImportError: cssse... >FAILED tests/test_lattice.py::TestLattice::test_add_one - ImportError: csssel... >FAILED tests/test_lattice.py::TestLattice::test_bars - ImportError: cssselect... >FAILED tests/test_lattice.py::TestLattice::test_bars_different - ImportError:... >================== 15 failed, 55 passed, 3 warnings in 0.48s =================== > * ERROR: dev-python/leather-0.3.3-r1::gentoo failed (test phase): > * pytest failed with python3.8 > * > * Call stack: > * ebuild.sh, line 127: Called src_test > * environment, line 2896: Called distutils-r1_src_test > * environment, line 1244: Called _distutils-r1_run_foreach_impl 'python_test' > * environment, line 499: Called python_foreach_impl 'distutils-r1_run_phase' 'python_test' > * environment, line 2572: Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test' > * environment, line 2046: Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test' > * environment, line 2044: Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'python_test' > * environment, line 801: Called distutils-r1_run_phase 'python_test' > * environment, line 1183: Called python_test > * environment, line 2856: Called distutils-r1_python_test > * environment, line 1140: Called epytest > * environment, line 1567: 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/leather-0.3.3-r1::gentoo'`, > * the complete build log and the output of `emerge -pqv '=dev-python/leather-0.3.3-r1::gentoo'`. > * The complete build log is located at '/var/log/emerge-log/build/dev-python/leather-0.3.3-r1:20210622-030143.log'. > * For convenience, a symlink to the build log is located at '/var/tmp/portage/dev-python/leather-0.3.3-r1/temp/build.log'. > * The ebuild environment file is located at '/var/tmp/portage/dev-python/leather-0.3.3-r1/temp/environment'. > * Working directory: '/var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3' > * S: '/var/tmp/portage/dev-python/leather-0.3.3-r1/work/leather-0.3.3' >
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 797451
: 717570