Sat Apr 27 01:27:34 UTC 2024 I: starting to build python-django-ca/unstable/armhf on jenkins on '2024-04-27 01:27' Sat Apr 27 01:27:34 UTC 2024 I: The jenkins build log is/was available at https://jenkins.debian.net/userContent/reproducible/debian/build_service/armhf_15/3097/console.log Sat Apr 27 01:27:34 UTC 2024 I: Downloading source for unstable/python-django-ca=1.25.0-2 --2024-04-27 01:27:35-- http://deb.debian.org/debian/pool/main/p/python-django-ca/python-django-ca_1.25.0-2.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2828 (2.8K) [text/prs.lines.tag] Saving to: ‘python-django-ca_1.25.0-2.dsc’ 0K .. 100% 331M=0s 2024-04-27 01:27:35 (331 MB/s) - ‘python-django-ca_1.25.0-2.dsc’ saved [2828/2828] Sat Apr 27 01:27:35 UTC 2024 I: python-django-ca_1.25.0-2.dsc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 3.0 (quilt) Source: python-django-ca Binary: python-django-ca-doc, python3-django-ca Architecture: all Version: 1.25.0-2 Maintainer: Debian Python Team Uploaders: Michael Fladischer , Homepage: https://github.com/mathiasertl/django-ca Standards-Version: 4.6.2 Vcs-Browser: https://salsa.debian.org/python-team/packages/python-django-ca Vcs-Git: https://salsa.debian.org/python-team/packages/python-django-ca.git Testsuite: autopkgtest Testsuite-Triggers: @builddeps@, python3-all Build-Depends: debhelper-compat (= 13), dh-python, pybuild-plugin-pyproject, python-acme-doc, python-cryptography-doc, python-django-doc, python3-acme, python3-all, python3-asn1crypto, python3-celery, python3-cryptography, python3-django, python3-django-object-actions, python3-dnspython, python3-doc, python3-freezegun, python3-idna, python3-josepy, python3-numpydoc, python3-ocspbuilder, python3-packaging, python3-pytest, python3-pytest-django, python3-pyvirtualdisplay, python3-requests, python3-requests-mock, python3-selenium, python3-semantic-version, python3-setuptools, python3-sphinx, python3-sphinx-jinja, python3-sphinx-rtd-theme, python3-tabulate, python3-yaml Package-List: python-django-ca-doc deb doc optional arch=all python3-django-ca deb python optional arch=all Checksums-Sha1: 875bc72de7c5e9d625148d51a65d8d88ad9f0659 1022722 python-django-ca_1.25.0.orig.tar.gz 34783e565389c4ca2a8e07a1d8e627523b0c5c5f 6036 python-django-ca_1.25.0-2.debian.tar.xz Checksums-Sha256: f9115d0f287af64cd55cd53e03ccc8b49d910a9dfe3cfdb71a796aad7be5c88a 1022722 python-django-ca_1.25.0.orig.tar.gz f46ede64b2e3e4674ad09556526a4cf98c9d54c1161455aa332171e77ba09e02 6036 python-django-ca_1.25.0-2.debian.tar.xz Files: ae4d4dac858b9282af4fd419bfbe6ce6 1022722 python-django-ca_1.25.0.orig.tar.gz eb64048f02d09f7732d84793ae3ad4e3 6036 python-django-ca_1.25.0-2.debian.tar.xz -----BEGIN PGP SIGNATURE----- iQJHBAEBCgAxFiEEq2sdvrA0LydXHe1qsmYUtFL0RrYFAmVHj6QTHG1pdHlhNTdA ZGViaWFuLm9yZwAKCRCyZhS0UvRGtjYCD/9PDaaIvCNurw0u6hRqccjGvu/TBW+u L/6NHlosFpR1vk9/AnnUKNlW7n0O8WGqmDy5t762mGQkky7rnClFQB3dkqBxuUsv CidcCIX2elpTRkE8hCq3K6arPtS3bT1IK2uc1ePDW6mVQxiWtQ4qe9UptvY5Oljr Zbuq/wAYjDQ0grYeFWzCvcP7mqxTGkdAjFX9hecj7g7qhknPCTeYbSrvgbfCW5lD naXs8miEcL594pm5cdWGmzOTtJW4hIsd2CD0F4ZkSGiOf65j8E2ka5IT57UnNAgP pI2b/R2yrHnsiDhoUks6zkak5IXtPMYNYGfx6Lj6asoB4IjWd3SJNPOUzsLGJ9ni cdHxer68R3dD8bsxDyQJpss06BCfy2FsPc6iA4zhml6fv+doTvepWcRw3T8TcQL7 DrnvkQvAqa6cC5H8F7w8tputsux0KTahwsYlVFarzcybGpBQgiUXAtMsy4WT2Wk3 rmPN3+nnhdfMxAy3dqI3xl5OY7ZCfzZGXJz6xyl64lVv901VY2KocXp8zdR8asIS SLPwcXM152tWP9BgWwbMqtTXoHcfcU78z/i80V8/xbIG3+8TEv5an1beGWbvrobO 9IRuHVpA08nhl+umsxBR1JjQrjH9s6SAsLAcXAkZHzbx2eybRzAYtElasJNyM9vO flz8dFrlAg2QOA== =NZXs -----END PGP SIGNATURE----- Sat Apr 27 01:27:35 UTC 2024 I: Checking whether the package is not for us Sat Apr 27 01:27:35 UTC 2024 I: Starting 1st build on remote node virt64b-armhf-rb.debian.net. Sat Apr 27 01:27:35 UTC 2024 I: Preparing to do remote build '1' on virt64b-armhf-rb.debian.net. Sat Apr 27 01:54:44 UTC 2024 I: Deleting $TMPDIR on virt64b-armhf-rb.debian.net. I: pbuilder: network access will be disabled during build I: Current time: Fri Apr 26 13:27:41 -12 2024 I: pbuilder-time-stamp: 1714181261 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [python-django-ca_1.25.0-2.dsc] I: copying [./python-django-ca_1.25.0.orig.tar.gz] I: copying [./python-django-ca_1.25.0-2.debian.tar.xz] I: Extracting source gpgv: Signature made Sun Nov 5 12:50:44 2023 gpgv: using RSA key AB6B1DBEB0342F27571DED6AB26614B452F446B6 gpgv: issuer "mitya57@debian.org" gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./python-django-ca_1.25.0-2.dsc: no acceptable signature found dpkg-source: info: extracting python-django-ca in python-django-ca-1.25.0 dpkg-source: info: unpacking python-django-ca_1.25.0.orig.tar.gz dpkg-source: info: unpacking python-django-ca_1.25.0-2.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying 0001-Install-all-tests.patch dpkg-source: info: applying 0002-Adjust-BASE_DIR-for-flat-structure-during-tests.patch dpkg-source: info: applying 0003-Adjust-DOC_DIR-for-flat-structure-during-tests.patch dpkg-source: info: applying 0004-Install-test-fixtures.patch dpkg-source: info: applying 0005-Derive-fixtures-path-from-actual-django_ca-package-l.patch dpkg-source: info: applying 0006-Use-local-objects.inv-in-intersphinx-mapping.patch dpkg-source: info: applying 0007-Stop-using-ObjectMembers-which-was-removed-in-Sphinx.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/32068/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='armhf' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=3 ' DISTRIBUTION='unstable' HOME='/root' HOST_ARCH='armhf' IFS=' ' INVOCATION_ID='3e8af6994f684a5d8fdd203572ddd189' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='32068' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.WP56RM4s/pbuilderrc_ivtC --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.WP56RM4s/b1 --logfile b1/build.log python-django-ca_1.25.0-2.dsc' SUDO_GID='113' SUDO_UID='107' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://10.0.0.15:3142/' I: uname -a Linux virt64b 6.1.0-20-arm64 #1 SMP Debian 6.1.85-1 (2024-04-11) aarch64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Apr 25 07:43 /bin -> usr/bin I: user script /srv/workspace/pbuilder/32068/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: armhf Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), dh-python, pybuild-plugin-pyproject, python-acme-doc, python-cryptography-doc, python-django-doc, python3-acme, python3-all, python3-asn1crypto, python3-celery, python3-cryptography, python3-django, python3-django-object-actions, python3-dnspython, python3-doc, python3-freezegun, python3-idna, python3-josepy, python3-numpydoc, python3-ocspbuilder, python3-packaging, python3-pytest, python3-pytest-django, python3-pyvirtualdisplay, python3-requests, python3-requests-mock, python3-selenium, python3-semantic-version, python3-setuptools, python3-sphinx, python3-sphinx-jinja, python3-sphinx-rtd-theme, python3-tabulate, python3-yaml dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19440 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on dh-python; however: Package dh-python is not installed. pbuilder-satisfydepends-dummy depends on pybuild-plugin-pyproject; however: Package pybuild-plugin-pyproject is not installed. pbuilder-satisfydepends-dummy depends on python-acme-doc; however: Package python-acme-doc is not installed. pbuilder-satisfydepends-dummy depends on python-cryptography-doc; however: Package python-cryptography-doc is not installed. pbuilder-satisfydepends-dummy depends on python-django-doc; however: Package python-django-doc is not installed. pbuilder-satisfydepends-dummy depends on python3-acme; however: Package python3-acme is not installed. pbuilder-satisfydepends-dummy depends on python3-all; however: Package python3-all is not installed. pbuilder-satisfydepends-dummy depends on python3-asn1crypto; however: Package python3-asn1crypto is not installed. pbuilder-satisfydepends-dummy depends on python3-celery; however: Package python3-celery is not installed. pbuilder-satisfydepends-dummy depends on python3-cryptography; however: Package python3-cryptography is not installed. pbuilder-satisfydepends-dummy depends on python3-django; however: Package python3-django is not installed. pbuilder-satisfydepends-dummy depends on python3-django-object-actions; however: Package python3-django-object-actions is not installed. pbuilder-satisfydepends-dummy depends on python3-dnspython; however: Package python3-dnspython is not installed. pbuilder-satisfydepends-dummy depends on python3-doc; however: Package python3-doc is not installed. pbuilder-satisfydepends-dummy depends on python3-freezegun; however: Package python3-freezegun is not installed. pbuilder-satisfydepends-dummy depends on python3-idna; however: Package python3-idna is not installed. pbuilder-satisfydepends-dummy depends on python3-josepy; however: Package python3-josepy is not installed. pbuilder-satisfydepends-dummy depends on python3-numpydoc; however: Package python3-numpydoc is not installed. pbuilder-satisfydepends-dummy depends on python3-ocspbuilder; however: Package python3-ocspbuilder is not installed. pbuilder-satisfydepends-dummy depends on python3-packaging; however: Package python3-packaging is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest; however: Package python3-pytest is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest-django; however: Package python3-pytest-django is not installed. pbuilder-satisfydepends-dummy depends on python3-pyvirtualdisplay; however: Package python3-pyvirtualdisplay is not installed. pbuilder-satisfydepends-dummy depends on python3-requests; however: Package python3-requests is not installed. pbuilder-satisfydepends-dummy depends on python3-requests-mock; however: Package python3-requests-mock is not installed. pbuilder-satisfydepends-dummy depends on python3-selenium; however: Package python3-selenium is not installed. pbuilder-satisfydepends-dummy depends on python3-semantic-version; however: Package python3-semantic-version is not installed. pbuilder-satisfydepends-dummy depends on python3-setuptools; however: Package python3-setuptools is not installed. pbuilder-satisfydepends-dummy depends on python3-sphinx; however: Package python3-sphinx is not installed. pbuilder-satisfydepends-dummy depends on python3-sphinx-jinja; however: Package python3-sphinx-jinja is not installed. pbuilder-satisfydepends-dummy depends on python3-sphinx-rtd-theme; however: Package python3-sphinx-rtd-theme is not installed. pbuilder-satisfydepends-dummy depends on python3-tabulate; however: Package python3-tabulate is not installed. pbuilder-satisfydepends-dummy depends on python3-yaml; however: Package python3-yaml is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} ca-certificates{a} debhelper{a} dh-autoreconf{a} dh-python{a} dh-strip-nondeterminism{a} docutils-common{a} dwz{a} file{a} fonts-font-awesome{a} fonts-lato{a} gettext{a} gettext-base{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libbrotli1{a} libbsd0{a} libdebhelper-perl{a} libdrm-amdgpu1{a} libdrm-common{a} libdrm-nouveau2{a} libdrm-radeon1{a} libdrm2{a} libedit2{a} libelf1t64{a} libexpat1{a} libfile-stripnondeterminism-perl{a} libfontenc1{a} libfreetype6{a} libgl1{a} libgl1-mesa-dri{a} libglapi-mesa{a} libglvnd0{a} libglx-mesa0{a} libglx0{a} libice6{a} libicu72{a} libjs-jquery{a} libjs-sphinxdoc{a} libjs-underscore{a} libjson-perl{a} libllvm17t64{a} libmagic-mgc{a} libmagic1t64{a} libpipeline1{a} libpixman-1-0{a} libpng16-16t64{a} libpython3-stdlib{a} libpython3.11-minimal{a} libpython3.11-stdlib{a} libpython3.12-minimal{a} libpython3.12-stdlib{a} libreadline8t64{a} libsensors-config{a} libsensors5{a} libsm6{a} libsub-override-perl{a} libtool{a} libuchardet0{a} libunwind8{a} libvulkan1{a} libx11-6{a} libx11-data{a} libx11-xcb1{a} libxau6{a} libxaw7{a} libxcb-dri2-0{a} libxcb-dri3-0{a} libxcb-glx0{a} libxcb-present0{a} libxcb-randr0{a} libxcb-shm0{a} libxcb-sync1{a} libxcb-xfixes0{a} libxcb1{a} libxdmcp6{a} libxext6{a} libxfixes3{a} libxfont2{a} libxkbfile1{a} libxml2{a} libxmu6{a} libxpm4{a} libxrandr2{a} libxrender1{a} libxshmfence1{a} libxt6t64{a} libxxf86vm1{a} libyaml-0-2{a} libz3-4{a} m4{a} man-db{a} media-types{a} netbase{a} openssl{a} po-debconf{a} pybuild-plugin-pyproject{a} python-acme-doc{a} python-babel-localedata{a} python-cryptography-doc{a} python-django-doc{a} python3{a} python3-acme{a} python3-alabaster{a} python3-all{a} python3-amqp{a} python3-asgiref{a} python3-asn1crypto{a} python3-attr{a} python3-babel{a} python3-billiard{a} python3-build{a} python3-celery{a} python3-certifi{a} python3-cffi-backend{a} python3-chardet{a} python3-charset-normalizer{a} python3-click{a} python3-click-didyoumean{a} python3-click-plugins{a} python3-click-repl{a} python3-colorama{a} python3-cryptography{a} python3-dateutil{a} python3-distutils{a} python3-django{a} python3-django-object-actions{a} python3-dnspython{a} python3-doc{a} python3-docutils{a} python3-easyprocess{a} python3-ephem{a} python3-exceptiongroup{a} python3-freezegun{a} python3-h11{a} python3-idna{a} python3-imagesize{a} python3-iniconfig{a} python3-installer{a} python3-jinja2{a} python3-josepy{a} python3-kombu{a} python3-lib2to3{a} python3-markupsafe{a} python3-memcache{a} python3-minimal{a} python3-numpydoc{a} python3-ocspbuilder{a} python3-openssl{a} python3-oscrypto{a} python3-outcome{a} python3-packaging{a} python3-pkg-resources{a} python3-pluggy{a} python3-prompt-toolkit{a} python3-pygments{a} python3-pyparsing{a} python3-pyproject-hooks{a} python3-pytest{a} python3-pytest-django{a} python3-pyvirtualdisplay{a} python3-requests{a} python3-requests-mock{a} python3-rfc3339{a} python3-roman{a} python3-selenium{a} python3-semantic-version{a} python3-setuptools{a} python3-six{a} python3-sniffio{a} python3-snowballstemmer{a} python3-sortedcontainers{a} python3-sphinx{a} python3-sphinx-jinja{a} python3-sphinx-rtd-theme{a} python3-sphinxcontrib.jquery{a} python3-sqlparse{a} python3-tabulate{a} python3-toml{a} python3-trio{a} python3-trio-websocket{a} python3-typing-extensions{a} python3-tz{a} python3-urllib3{a} python3-vine{a} python3-wcwidth{a} python3-wheel{a} python3-wsproto{a} python3-yaml{a} python3.11{a} python3.11-doc{a} python3.11-minimal{a} python3.12{a} python3.12-minimal{a} readline-common{a} sensible-utils{a} sgml-base{a} sphinx-common{a} sphinx-rtd-theme-common{a} tzdata{a} x11-common{a} x11-xkb-utils{a} xkb-data{a} xml-core{a} xserver-common{a} xvfb{a} The following packages are RECOMMENDED but will NOT be installed: chromium-driver curl javascript-common libarchive-cpio-perl libjson-xs-perl libltdl-dev libmail-sendmail-perl libpaper-utils lynx mesa-vulkan-drivers python3-h2 python3-httpcore python3-httpx python3-pil wget xauth xfonts-base 0 packages upgraded, 211 newly installed, 0 to remove and 0 not upgraded. Need to get 118 MB of archives. After unpacking 516 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main armhf fonts-lato all 2.015-1 [2780 kB] Get: 2 http://deb.debian.org/debian unstable/main armhf libpython3.11-minimal armhf 3.11.9-1 [805 kB] Get: 3 http://deb.debian.org/debian unstable/main armhf libexpat1 armhf 2.6.2-1 [83.5 kB] Get: 4 http://deb.debian.org/debian unstable/main armhf python3.11-minimal armhf 3.11.9-1 [1600 kB] Get: 5 http://deb.debian.org/debian unstable/main armhf python3-minimal armhf 3.11.8-1 [26.3 kB] Get: 6 http://deb.debian.org/debian unstable/main armhf media-types all 10.1.0 [26.9 kB] Get: 7 http://deb.debian.org/debian unstable/main armhf netbase all 6.4 [12.8 kB] Get: 8 http://deb.debian.org/debian unstable/main armhf tzdata all 2024a-3 [255 kB] Get: 9 http://deb.debian.org/debian unstable/main armhf readline-common all 8.2-4 [69.3 kB] Get: 10 http://deb.debian.org/debian unstable/main armhf libreadline8t64 armhf 8.2-4 [145 kB] Get: 11 http://deb.debian.org/debian unstable/main armhf libpython3.11-stdlib armhf 3.11.9-1 [1704 kB] Get: 12 http://deb.debian.org/debian unstable/main armhf python3.11 armhf 3.11.9-1 [602 kB] Get: 13 http://deb.debian.org/debian unstable/main armhf libpython3-stdlib armhf 3.11.8-1 [9332 B] Get: 14 http://deb.debian.org/debian unstable/main armhf python3 armhf 3.11.8-1 [27.4 kB] Get: 15 http://deb.debian.org/debian unstable/main armhf libpython3.12-minimal armhf 3.12.3-1 [795 kB] Get: 16 http://deb.debian.org/debian unstable/main armhf python3.12-minimal armhf 3.12.3-1 [1783 kB] Get: 17 http://deb.debian.org/debian unstable/main armhf sgml-base all 1.31 [15.4 kB] Get: 18 http://deb.debian.org/debian unstable/main armhf sensible-utils all 0.0.22 [22.4 kB] Get: 19 http://deb.debian.org/debian unstable/main armhf openssl armhf 3.2.1-3 [1326 kB] Get: 20 http://deb.debian.org/debian unstable/main armhf ca-certificates all 20240203 [158 kB] Get: 21 http://deb.debian.org/debian unstable/main armhf libmagic-mgc armhf 1:5.45-3 [314 kB] Get: 22 http://deb.debian.org/debian unstable/main armhf libmagic1t64 armhf 1:5.45-3 [98.1 kB] Get: 23 http://deb.debian.org/debian unstable/main armhf file armhf 1:5.45-3 [42.0 kB] Get: 24 http://deb.debian.org/debian unstable/main armhf gettext-base armhf 0.21-14+b1 [157 kB] Get: 25 http://deb.debian.org/debian unstable/main armhf libuchardet0 armhf 0.0.8-1+b1 [65.7 kB] Get: 26 http://deb.debian.org/debian unstable/main armhf groff-base armhf 1.23.0-3+b1 [1091 kB] Get: 27 http://deb.debian.org/debian unstable/main armhf bsdextrautils armhf 2.40-7 [85.6 kB] Get: 28 http://deb.debian.org/debian unstable/main armhf libpipeline1 armhf 1.5.7-2 [33.3 kB] Get: 29 http://deb.debian.org/debian unstable/main armhf man-db armhf 2.12.1-1 [1375 kB] Get: 30 http://deb.debian.org/debian unstable/main armhf m4 armhf 1.4.19-4 [264 kB] Get: 31 http://deb.debian.org/debian unstable/main armhf autoconf all 2.71-3 [332 kB] Get: 32 http://deb.debian.org/debian unstable/main armhf autotools-dev all 20220109.1 [51.6 kB] Get: 33 http://deb.debian.org/debian unstable/main armhf automake all 1:1.16.5-1.3 [823 kB] Get: 34 http://deb.debian.org/debian unstable/main armhf autopoint all 0.21-14 [496 kB] Get: 35 http://deb.debian.org/debian unstable/main armhf libdebhelper-perl all 13.15.3 [88.0 kB] Get: 36 http://deb.debian.org/debian unstable/main armhf libtool all 2.4.7-7 [517 kB] Get: 37 http://deb.debian.org/debian unstable/main armhf dh-autoreconf all 20 [17.1 kB] Get: 38 http://deb.debian.org/debian unstable/main armhf libarchive-zip-perl all 1.68-1 [104 kB] Get: 39 http://deb.debian.org/debian unstable/main armhf libsub-override-perl all 0.10-1 [10.6 kB] Get: 40 http://deb.debian.org/debian unstable/main armhf libfile-stripnondeterminism-perl all 1.13.1-1 [19.4 kB] Get: 41 http://deb.debian.org/debian unstable/main armhf dh-strip-nondeterminism all 1.13.1-1 [8620 B] Get: 42 http://deb.debian.org/debian unstable/main armhf libelf1t64 armhf 0.191-1+b1 [183 kB] Get: 43 http://deb.debian.org/debian unstable/main armhf dwz armhf 0.15-1+b2 [106 kB] Get: 44 http://deb.debian.org/debian unstable/main armhf libicu72 armhf 72.1-4+b1 [9070 kB] Get: 45 http://deb.debian.org/debian unstable/main armhf libxml2 armhf 2.9.14+dfsg-1.3+b2 [599 kB] Get: 46 http://deb.debian.org/debian unstable/main armhf gettext armhf 0.21-14+b1 [1230 kB] Get: 47 http://deb.debian.org/debian unstable/main armhf intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 48 http://deb.debian.org/debian unstable/main armhf po-debconf all 1.0.21+nmu1 [248 kB] Get: 49 http://deb.debian.org/debian unstable/main armhf debhelper all 13.15.3 [901 kB] Get: 50 http://deb.debian.org/debian unstable/main armhf python3-pkg-resources all 68.1.2-2 [241 kB] Get: 51 http://deb.debian.org/debian unstable/main armhf python3-lib2to3 all 3.12.3-1 [77.6 kB] Get: 52 http://deb.debian.org/debian unstable/main armhf python3-distutils all 3.12.3-1 [131 kB] Get: 53 http://deb.debian.org/debian unstable/main armhf python3-setuptools all 68.1.2-2 [468 kB] Get: 54 http://deb.debian.org/debian unstable/main armhf dh-python all 6.20240422 [107 kB] Get: 55 http://deb.debian.org/debian unstable/main armhf xml-core all 0.19 [20.1 kB] Get: 56 http://deb.debian.org/debian unstable/main armhf docutils-common all 0.20.1+dfsg-3 [128 kB] Get: 57 http://deb.debian.org/debian unstable/main armhf fonts-font-awesome all 5.0.10+really4.7.0~dfsg-4.1 [517 kB] Get: 58 http://deb.debian.org/debian unstable/main armhf libbrotli1 armhf 1.1.0-2+b3 [284 kB] Get: 59 http://deb.debian.org/debian unstable/main armhf libbsd0 armhf 0.12.2-1 [127 kB] Get: 60 http://deb.debian.org/debian unstable/main armhf libdrm-common all 2.4.120-2 [7688 B] Get: 61 http://deb.debian.org/debian unstable/main armhf libdrm2 armhf 2.4.120-2 [33.8 kB] Get: 62 http://deb.debian.org/debian unstable/main armhf libdrm-amdgpu1 armhf 2.4.120-2 [20.0 kB] Get: 63 http://deb.debian.org/debian unstable/main armhf libdrm-nouveau2 armhf 2.4.120-2 [16.9 kB] Get: 64 http://deb.debian.org/debian unstable/main armhf libdrm-radeon1 armhf 2.4.120-2 [19.5 kB] Get: 65 http://deb.debian.org/debian unstable/main armhf libedit2 armhf 3.1-20230828-1 [76.8 kB] Get: 66 http://deb.debian.org/debian unstable/main armhf libfontenc1 armhf 1:1.1.8-1 [20.6 kB] Get: 67 http://deb.debian.org/debian unstable/main armhf libpng16-16t64 armhf 1.6.43-5 [262 kB] Get: 68 http://deb.debian.org/debian unstable/main armhf libfreetype6 armhf 2.13.2+dfsg-1+b4 [372 kB] Get: 69 http://deb.debian.org/debian unstable/main armhf libglvnd0 armhf 1.7.0-1 [52.3 kB] Get: 70 http://deb.debian.org/debian unstable/main armhf libxau6 armhf 1:1.0.9-1 [19.0 kB] Get: 71 http://deb.debian.org/debian unstable/main armhf libxdmcp6 armhf 1:1.1.2-3 [24.9 kB] Get: 72 http://deb.debian.org/debian unstable/main armhf libxcb1 armhf 1.17.0-1 [140 kB] Get: 73 http://deb.debian.org/debian unstable/main armhf libx11-data all 2:1.8.7-1 [328 kB] Get: 74 http://deb.debian.org/debian unstable/main armhf libx11-6 armhf 2:1.8.7-1 [735 kB] Get: 75 http://deb.debian.org/debian unstable/main armhf libglapi-mesa armhf 24.0.6-1 [43.2 kB] Get: 76 http://deb.debian.org/debian unstable/main armhf libx11-xcb1 armhf 2:1.8.7-1 [231 kB] Get: 77 http://deb.debian.org/debian unstable/main armhf libxcb-dri2-0 armhf 1.17.0-1 [106 kB] Get: 78 http://deb.debian.org/debian unstable/main armhf libxcb-dri3-0 armhf 1.17.0-1 [106 kB] Get: 79 http://deb.debian.org/debian unstable/main armhf libxcb-glx0 armhf 1.17.0-1 [120 kB] Get: 80 http://deb.debian.org/debian unstable/main armhf libxcb-present0 armhf 1.17.0-1 [105 kB] Get: 81 http://deb.debian.org/debian unstable/main armhf libxcb-randr0 armhf 1.17.0-1 [115 kB] Get: 82 http://deb.debian.org/debian unstable/main armhf libxcb-shm0 armhf 1.17.0-1 [105 kB] Get: 83 http://deb.debian.org/debian unstable/main armhf libxcb-sync1 armhf 1.17.0-1 [108 kB] Get: 84 http://deb.debian.org/debian unstable/main armhf libxcb-xfixes0 armhf 1.17.0-1 [109 kB] Get: 85 http://deb.debian.org/debian unstable/main armhf libxext6 armhf 2:1.3.4-1+b1 [47.8 kB] Get: 86 http://deb.debian.org/debian unstable/main armhf libxfixes3 armhf 1:6.0.0-2 [21.1 kB] Get: 87 http://deb.debian.org/debian unstable/main armhf libxshmfence1 armhf 1.3-1 [8592 B] Get: 88 http://deb.debian.org/debian unstable/main armhf libxxf86vm1 armhf 1:1.1.4-1+b2 [20.2 kB] Get: 89 http://deb.debian.org/debian unstable/main armhf libvulkan1 armhf 1.3.280.0-1 [108 kB] Get: 90 http://deb.debian.org/debian unstable/main armhf libz3-4 armhf 4.8.12-3.1+b2 [6324 kB] Get: 91 http://deb.debian.org/debian unstable/main armhf libllvm17t64 armhf 1:17.0.6-10 [21.6 MB] Get: 92 http://deb.debian.org/debian unstable/main armhf libsensors-config all 1:3.6.0-9 [14.6 kB] Get: 93 http://deb.debian.org/debian unstable/main armhf libsensors5 armhf 1:3.6.0-9 [31.9 kB] Get: 94 http://deb.debian.org/debian unstable/main armhf libgl1-mesa-dri armhf 24.0.6-1 [6474 kB] Get: 95 http://deb.debian.org/debian unstable/main armhf libglx-mesa0 armhf 24.0.6-1 [130 kB] Get: 96 http://deb.debian.org/debian unstable/main armhf libglx0 armhf 1.7.0-1 [32.2 kB] Get: 97 http://deb.debian.org/debian unstable/main armhf libgl1 armhf 1.7.0-1 [90.8 kB] Get: 98 http://deb.debian.org/debian unstable/main armhf x11-common all 1:7.7+23 [252 kB] Get: 99 http://deb.debian.org/debian unstable/main armhf libice6 armhf 2:1.0.10-1 [51.9 kB] Get: 100 http://deb.debian.org/debian unstable/main armhf libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [326 kB] Get: 101 http://deb.debian.org/debian unstable/main armhf libjs-underscore all 1.13.4~dfsg+~1.11.4-3 [116 kB] Get: 102 http://deb.debian.org/debian unstable/main armhf libjs-sphinxdoc all 7.2.6-6 [150 kB] Get: 103 http://deb.debian.org/debian unstable/main armhf libjson-perl all 4.10000-1 [87.5 kB] Get: 104 http://deb.debian.org/debian unstable/main armhf libpixman-1-0 armhf 0.42.2-1+b1 [476 kB] Get: 105 http://deb.debian.org/debian unstable/main armhf libpython3.12-stdlib armhf 3.12.3-1 [1808 kB] Get: 106 http://deb.debian.org/debian unstable/main armhf libsm6 armhf 2:1.2.3-1 [33.0 kB] Get: 107 http://deb.debian.org/debian unstable/main armhf libunwind8 armhf 1.6.2-3 [43.3 kB] Get: 108 http://deb.debian.org/debian unstable/main armhf libxt6t64 armhf 1:1.2.1-1.2 [159 kB] Get: 109 http://deb.debian.org/debian unstable/main armhf libxmu6 armhf 2:1.1.3-3+b2 [50.9 kB] Get: 110 http://deb.debian.org/debian unstable/main armhf libxpm4 armhf 1:3.5.17-1+b1 [50.0 kB] Get: 111 http://deb.debian.org/debian unstable/main armhf libxaw7 armhf 2:1.0.14-1+b2 [165 kB] Get: 112 http://deb.debian.org/debian unstable/main armhf libxfont2 armhf 1:2.0.6-1 [120 kB] Get: 113 http://deb.debian.org/debian unstable/main armhf libxkbfile1 armhf 1:1.1.0-1 [67.2 kB] Get: 114 http://deb.debian.org/debian unstable/main armhf libxrender1 armhf 1:0.9.10-1.1 [30.1 kB] Get: 115 http://deb.debian.org/debian unstable/main armhf libxrandr2 armhf 2:1.5.4-1 [33.0 kB] Get: 116 http://deb.debian.org/debian unstable/main armhf libyaml-0-2 armhf 0.2.5-1 [46.8 kB] Get: 117 http://deb.debian.org/debian unstable/main armhf python3-packaging all 24.0-1 [45.5 kB] Get: 118 http://deb.debian.org/debian unstable/main armhf python3-pyproject-hooks all 1.0.0-2 [10.6 kB] Get: 119 http://deb.debian.org/debian unstable/main armhf python3-toml all 0.10.2-1 [16.2 kB] Get: 120 http://deb.debian.org/debian unstable/main armhf python3-wheel all 0.43.0-1 [52.5 kB] Get: 121 http://deb.debian.org/debian unstable/main armhf python3-build all 1.1.1-1 [32.5 kB] Get: 122 http://deb.debian.org/debian unstable/main armhf python3-installer all 0.7.0+dfsg1-3 [18.6 kB] Get: 123 http://deb.debian.org/debian unstable/main armhf pybuild-plugin-pyproject all 6.20240422 [11.1 kB] Get: 124 http://deb.debian.org/debian unstable/main armhf sphinx-rtd-theme-common all 2.0.0+dfsg-1 [1021 kB] Get: 125 http://deb.debian.org/debian unstable/main armhf python-acme-doc all 2.9.0-1 [71.6 kB] Get: 126 http://deb.debian.org/debian unstable/main armhf python-babel-localedata all 2.14.0-1 [5701 kB] Get: 127 http://deb.debian.org/debian unstable/main armhf python-cryptography-doc all 42.0.5-2 [387 kB] Get: 128 http://deb.debian.org/debian unstable/main armhf python-django-doc all 3:4.2.11-1 [3588 kB] Get: 129 http://deb.debian.org/debian unstable/main armhf python3-cffi-backend armhf 1.16.0-2+b1 [98.9 kB] Get: 130 http://deb.debian.org/debian unstable/main armhf python3-cryptography armhf 42.0.5-2 [1002 kB] Get: 131 http://deb.debian.org/debian unstable/main armhf python3-openssl all 24.1.0-1 [51.9 kB] Get: 132 http://deb.debian.org/debian unstable/main armhf python3-josepy all 1.14.0-1 [23.3 kB] Get: 133 http://deb.debian.org/debian unstable/main armhf python3-certifi all 2023.11.17-1 [155 kB] Get: 134 http://deb.debian.org/debian unstable/main armhf python3-charset-normalizer all 3.3.2-1 [51.6 kB] Get: 135 http://deb.debian.org/debian unstable/main armhf python3-idna all 3.6-2 [37.0 kB] Get: 136 http://deb.debian.org/debian unstable/main armhf python3-six all 1.16.0-6 [16.3 kB] Get: 137 http://deb.debian.org/debian unstable/main armhf python3-urllib3 all 1.26.18-2 [116 kB] Get: 138 http://deb.debian.org/debian unstable/main armhf python3-chardet all 5.2.0+dfsg-1 [107 kB] Get: 139 http://deb.debian.org/debian unstable/main armhf python3-requests all 2.31.0+dfsg-1 [68.6 kB] Get: 140 http://deb.debian.org/debian unstable/main armhf python3-tz all 2024.1-2 [30.9 kB] Get: 141 http://deb.debian.org/debian unstable/main armhf python3-rfc3339 all 1.1-4 [7088 B] Get: 142 http://deb.debian.org/debian unstable/main armhf python3-acme all 2.9.0-1 [48.0 kB] Get: 143 http://deb.debian.org/debian unstable/main armhf python3-alabaster all 0.7.12-1 [20.8 kB] Get: 144 http://deb.debian.org/debian unstable/main armhf python3.12 armhf 3.12.3-1 [659 kB] Get: 145 http://deb.debian.org/debian unstable/main armhf python3-all armhf 3.11.8-1 [1056 B] Get: 146 http://deb.debian.org/debian unstable/main armhf python3-vine all 5.0.0+dfsg-3 [15.3 kB] Get: 147 http://deb.debian.org/debian unstable/main armhf python3-amqp all 5.2.0-1 [42.5 kB] Get: 148 http://deb.debian.org/debian unstable/main armhf python3-typing-extensions all 4.10.0-1 [66.2 kB] Get: 149 http://deb.debian.org/debian unstable/main armhf python3-asgiref all 3.8.1-1 [28.8 kB] Get: 150 http://deb.debian.org/debian unstable/main armhf python3-asn1crypto all 1.5.1-3 [85.9 kB] Get: 151 http://deb.debian.org/debian unstable/main armhf python3-attr all 23.2.0-2 [65.5 kB] Get: 152 http://deb.debian.org/debian unstable/main armhf python3-babel all 2.14.0-1 [111 kB] Get: 153 http://deb.debian.org/debian unstable/main armhf python3-billiard all 4.2.0-2 [73.6 kB] Get: 154 http://deb.debian.org/debian unstable/main armhf python3-colorama all 0.4.6-4 [36.2 kB] Get: 155 http://deb.debian.org/debian unstable/main armhf python3-click all 8.1.7-1 [94.0 kB] Get: 156 http://deb.debian.org/debian unstable/main armhf python3-click-didyoumean all 0.3.0-2 [295 kB] Get: 157 http://deb.debian.org/debian unstable/main armhf python3-wcwidth all 0.2.13+dfsg1-1 [24.9 kB] Get: 158 http://deb.debian.org/debian unstable/main armhf python3-prompt-toolkit all 3.0.43-1 [276 kB] Get: 159 http://deb.debian.org/debian unstable/main armhf python3-click-repl all 0.3.0-1 [10.2 kB] Get: 160 http://deb.debian.org/debian unstable/main armhf python3-dateutil all 2.9.0-2 [79.4 kB] Get: 161 http://deb.debian.org/debian unstable/main armhf python3-ephem armhf 4.1.5-1+b1 [1234 kB] Get: 162 http://deb.debian.org/debian unstable/main armhf python3-kombu all 5.3.7-1 [186 kB] Get: 163 http://deb.debian.org/debian unstable/main armhf python3-memcache all 1.59-8 [24.6 kB] Get: 164 http://deb.debian.org/debian unstable/main armhf python3-pyparsing all 3.1.2-1 [146 kB] Get: 165 http://deb.debian.org/debian unstable/main armhf python3-click-plugins all 1.1.1-4 [9852 B] Get: 166 http://deb.debian.org/debian unstable/main armhf python3-celery all 5.3.6-2 [311 kB] Get: 167 http://deb.debian.org/debian unstable/main armhf python3-sqlparse all 0.4.4-1 [37.6 kB] Get: 168 http://deb.debian.org/debian unstable/main armhf python3-django all 3:4.2.11-1 [2736 kB] Get: 169 http://deb.debian.org/debian unstable/main armhf python3-django-object-actions all 4.2.0-1 [36.2 kB] Get: 170 http://deb.debian.org/debian unstable/main armhf python3-dnspython all 2.6.1-1 [161 kB] Get: 171 http://deb.debian.org/debian unstable/main armhf python3.11-doc all 3.11.9-1 [12.6 MB] Get: 172 http://deb.debian.org/debian unstable/main armhf python3-doc all 3.11.8-1 [9528 B] Get: 173 http://deb.debian.org/debian unstable/main armhf python3-roman all 3.3-3 [9880 B] Get: 174 http://deb.debian.org/debian unstable/main armhf python3-docutils all 0.20.1+dfsg-3 [389 kB] Get: 175 http://deb.debian.org/debian unstable/main armhf python3-easyprocess all 1.1-1 [9952 B] Get: 176 http://deb.debian.org/debian unstable/main armhf python3-exceptiongroup all 1.2.1-1 [19.6 kB] Get: 177 http://deb.debian.org/debian unstable/main armhf python3-freezegun all 1.2.1+actually1.2.1-1 [15.5 kB] Get: 178 http://deb.debian.org/debian unstable/main armhf python3-h11 all 0.14.0-1 [50.1 kB] Get: 179 http://deb.debian.org/debian unstable/main armhf python3-imagesize all 1.4.1-1 [6688 B] Get: 180 http://deb.debian.org/debian unstable/main armhf python3-iniconfig all 1.1.1-2 [6396 B] Get: 181 http://deb.debian.org/debian unstable/main armhf python3-markupsafe armhf 2.1.5-1 [13.9 kB] Get: 182 http://deb.debian.org/debian unstable/main armhf python3-jinja2 all 3.1.3-1 [119 kB] Get: 183 http://deb.debian.org/debian unstable/main armhf sphinx-common all 7.2.6-6 [702 kB] Get: 184 http://deb.debian.org/debian unstable/main armhf python3-pygments all 2.17.2+dfsg-1 [818 kB] Get: 185 http://deb.debian.org/debian unstable/main armhf python3-snowballstemmer all 2.2.0-4 [58.0 kB] Get: 186 http://deb.debian.org/debian unstable/main armhf python3-sphinx all 7.2.6-6 [552 kB] Get: 187 http://deb.debian.org/debian unstable/main armhf python3-tabulate all 0.8.10-1 [38.8 kB] Get: 188 http://deb.debian.org/debian unstable/main armhf python3-numpydoc all 1.6.0-2 [49.6 kB] Get: 189 http://deb.debian.org/debian unstable/main armhf python3-oscrypto all 1.3.0-5 [128 kB] Get: 190 http://deb.debian.org/debian unstable/main armhf python3-ocspbuilder all 0.10.2-3 [12.7 kB] Get: 191 http://deb.debian.org/debian unstable/main armhf python3-outcome all 1.2.0-1.1 [5956 B] Get: 192 http://deb.debian.org/debian unstable/main armhf python3-pluggy all 1.5.0-1 [26.9 kB] Get: 193 http://deb.debian.org/debian unstable/main armhf python3-pytest all 8.1.1-2 [245 kB] Get: 194 http://deb.debian.org/debian unstable/main armhf python3-pytest-django all 4.5.2-3 [27.0 kB] Get: 195 http://deb.debian.org/debian unstable/main armhf xkb-data all 2.41-2 [795 kB] Get: 196 http://deb.debian.org/debian unstable/main armhf x11-xkb-utils armhf 7.7+8+b1 [146 kB] Get: 197 http://deb.debian.org/debian unstable/main armhf xserver-common all 2:21.1.12-1 [2391 kB] Get: 198 http://deb.debian.org/debian unstable/main armhf xvfb armhf 2:21.1.12-1 [3024 kB] Get: 199 http://deb.debian.org/debian unstable/main armhf python3-pyvirtualdisplay all 2.2-2 [13.7 kB] Get: 200 http://deb.debian.org/debian unstable/main armhf python3-requests-mock all 1.11.0-1 [17.4 kB] Get: 201 http://deb.debian.org/debian unstable/main armhf python3-sniffio all 1.3.0-2 [7076 B] Get: 202 http://deb.debian.org/debian unstable/main armhf python3-sortedcontainers all 2.4.0-2 [31.9 kB] Get: 203 http://deb.debian.org/debian unstable/main armhf python3-trio all 0.24.0-1 [304 kB] Get: 204 http://deb.debian.org/debian unstable/main armhf python3-wsproto all 1.2.0-1 [25.4 kB] Get: 205 http://deb.debian.org/debian unstable/main armhf python3-trio-websocket all 0.11.1-1 [21.5 kB] Get: 206 http://deb.debian.org/debian unstable/main armhf python3-selenium all 4.19.0+dfsg-1 [119 kB] Get: 207 http://deb.debian.org/debian unstable/main armhf python3-semantic-version all 2.10.0-2 [17.6 kB] Get: 208 http://deb.debian.org/debian unstable/main armhf python3-sphinx-jinja all 2.0.2-3 [6788 B] Get: 209 http://deb.debian.org/debian unstable/main armhf python3-sphinxcontrib.jquery all 4.1-5 [7348 B] Get: 210 http://deb.debian.org/debian unstable/main armhf python3-sphinx-rtd-theme all 2.0.0+dfsg-1 [28.3 kB] Get: 211 http://deb.debian.org/debian unstable/main armhf python3-yaml armhf 6.0.1-2 [162 kB] Fetched 118 MB in 10s (11.6 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package fonts-lato. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19440 files and directories currently installed.) Preparing to unpack .../fonts-lato_2.015-1_all.deb ... Unpacking fonts-lato (2.015-1) ... Selecting previously unselected package libpython3.11-minimal:armhf. Preparing to unpack .../libpython3.11-minimal_3.11.9-1_armhf.deb ... Unpacking libpython3.11-minimal:armhf (3.11.9-1) ... Selecting previously unselected package libexpat1:armhf. Preparing to unpack .../libexpat1_2.6.2-1_armhf.deb ... Unpacking libexpat1:armhf (2.6.2-1) ... Selecting previously unselected package python3.11-minimal. Preparing to unpack .../python3.11-minimal_3.11.9-1_armhf.deb ... Unpacking python3.11-minimal (3.11.9-1) ... Setting up libpython3.11-minimal:armhf (3.11.9-1) ... Setting up libexpat1:armhf (2.6.2-1) ... Setting up python3.11-minimal (3.11.9-1) ... Selecting previously unselected package python3-minimal. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19782 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.11.8-1_armhf.deb ... Unpacking python3-minimal (3.11.8-1) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_10.1.0_all.deb ... Unpacking media-types (10.1.0) ... Selecting previously unselected package netbase. Preparing to unpack .../2-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../3-tzdata_2024a-3_all.deb ... Unpacking tzdata (2024a-3) ... Selecting previously unselected package readline-common. Preparing to unpack .../4-readline-common_8.2-4_all.deb ... Unpacking readline-common (8.2-4) ... Selecting previously unselected package libreadline8t64:armhf. Preparing to unpack .../5-libreadline8t64_8.2-4_armhf.deb ... Adding 'diversion of /lib/arm-linux-gnueabihf/libhistory.so.8 to /lib/arm-linux-gnueabihf/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/arm-linux-gnueabihf/libhistory.so.8.2 to /lib/arm-linux-gnueabihf/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/arm-linux-gnueabihf/libreadline.so.8 to /lib/arm-linux-gnueabihf/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/arm-linux-gnueabihf/libreadline.so.8.2 to /lib/arm-linux-gnueabihf/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:armhf (8.2-4) ... Selecting previously unselected package libpython3.11-stdlib:armhf. Preparing to unpack .../6-libpython3.11-stdlib_3.11.9-1_armhf.deb ... Unpacking libpython3.11-stdlib:armhf (3.11.9-1) ... Selecting previously unselected package python3.11. Preparing to unpack .../7-python3.11_3.11.9-1_armhf.deb ... Unpacking python3.11 (3.11.9-1) ... Selecting previously unselected package libpython3-stdlib:armhf. Preparing to unpack .../8-libpython3-stdlib_3.11.8-1_armhf.deb ... Unpacking libpython3-stdlib:armhf (3.11.8-1) ... Setting up python3-minimal (3.11.8-1) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20774 files and directories currently installed.) Preparing to unpack .../000-python3_3.11.8-1_armhf.deb ... Unpacking python3 (3.11.8-1) ... Selecting previously unselected package libpython3.12-minimal:armhf. Preparing to unpack .../001-libpython3.12-minimal_3.12.3-1_armhf.deb ... Unpacking libpython3.12-minimal:armhf (3.12.3-1) ... Selecting previously unselected package python3.12-minimal. Preparing to unpack .../002-python3.12-minimal_3.12.3-1_armhf.deb ... Unpacking python3.12-minimal (3.12.3-1) ... Selecting previously unselected package sgml-base. Preparing to unpack .../003-sgml-base_1.31_all.deb ... Unpacking sgml-base (1.31) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../004-sensible-utils_0.0.22_all.deb ... Unpacking sensible-utils (0.0.22) ... Selecting previously unselected package openssl. Preparing to unpack .../005-openssl_3.2.1-3_armhf.deb ... Unpacking openssl (3.2.1-3) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../006-ca-certificates_20240203_all.deb ... Unpacking ca-certificates (20240203) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../007-libmagic-mgc_1%3a5.45-3_armhf.deb ... Unpacking libmagic-mgc (1:5.45-3) ... Selecting previously unselected package libmagic1t64:armhf. Preparing to unpack .../008-libmagic1t64_1%3a5.45-3_armhf.deb ... Unpacking libmagic1t64:armhf (1:5.45-3) ... Selecting previously unselected package file. Preparing to unpack .../009-file_1%3a5.45-3_armhf.deb ... Unpacking file (1:5.45-3) ... Selecting previously unselected package gettext-base. Preparing to unpack .../010-gettext-base_0.21-14+b1_armhf.deb ... Unpacking gettext-base (0.21-14+b1) ... Selecting previously unselected package libuchardet0:armhf. Preparing to unpack .../011-libuchardet0_0.0.8-1+b1_armhf.deb ... Unpacking libuchardet0:armhf (0.0.8-1+b1) ... Selecting previously unselected package groff-base. Preparing to unpack .../012-groff-base_1.23.0-3+b1_armhf.deb ... Unpacking groff-base (1.23.0-3+b1) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../013-bsdextrautils_2.40-7_armhf.deb ... Unpacking bsdextrautils (2.40-7) ... Selecting previously unselected package libpipeline1:armhf. Preparing to unpack .../014-libpipeline1_1.5.7-2_armhf.deb ... Unpacking libpipeline1:armhf (1.5.7-2) ... Selecting previously unselected package man-db. Preparing to unpack .../015-man-db_2.12.1-1_armhf.deb ... Unpacking man-db (2.12.1-1) ... Selecting previously unselected package m4. Preparing to unpack .../016-m4_1.4.19-4_armhf.deb ... Unpacking m4 (1.4.19-4) ... Selecting previously unselected package autoconf. Preparing to unpack .../017-autoconf_2.71-3_all.deb ... Unpacking autoconf (2.71-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../018-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../019-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../020-autopoint_0.21-14_all.deb ... Unpacking autopoint (0.21-14) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../021-libdebhelper-perl_13.15.3_all.deb ... Unpacking libdebhelper-perl (13.15.3) ... Selecting previously unselected package libtool. Preparing to unpack .../022-libtool_2.4.7-7_all.deb ... Unpacking libtool (2.4.7-7) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../023-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../024-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libsub-override-perl. Preparing to unpack .../025-libsub-override-perl_0.10-1_all.deb ... Unpacking libsub-override-perl (0.10-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../026-libfile-stripnondeterminism-perl_1.13.1-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.13.1-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../027-dh-strip-nondeterminism_1.13.1-1_all.deb ... Unpacking dh-strip-nondeterminism (1.13.1-1) ... Selecting previously unselected package libelf1t64:armhf. Preparing to unpack .../028-libelf1t64_0.191-1+b1_armhf.deb ... Unpacking libelf1t64:armhf (0.191-1+b1) ... Selecting previously unselected package dwz. Preparing to unpack .../029-dwz_0.15-1+b2_armhf.deb ... Unpacking dwz (0.15-1+b2) ... Selecting previously unselected package libicu72:armhf. Preparing to unpack .../030-libicu72_72.1-4+b1_armhf.deb ... Unpacking libicu72:armhf (72.1-4+b1) ... Selecting previously unselected package libxml2:armhf. Preparing to unpack .../031-libxml2_2.9.14+dfsg-1.3+b2_armhf.deb ... Unpacking libxml2:armhf (2.9.14+dfsg-1.3+b2) ... Selecting previously unselected package gettext. Preparing to unpack .../032-gettext_0.21-14+b1_armhf.deb ... Unpacking gettext (0.21-14+b1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../033-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../034-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../035-debhelper_13.15.3_all.deb ... Unpacking debhelper (13.15.3) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../036-python3-pkg-resources_68.1.2-2_all.deb ... Unpacking python3-pkg-resources (68.1.2-2) ... Selecting previously unselected package python3-lib2to3. Preparing to unpack .../037-python3-lib2to3_3.12.3-1_all.deb ... Unpacking python3-lib2to3 (3.12.3-1) ... Selecting previously unselected package python3-distutils. Preparing to unpack .../038-python3-distutils_3.12.3-1_all.deb ... Unpacking python3-distutils (3.12.3-1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../039-python3-setuptools_68.1.2-2_all.deb ... Unpacking python3-setuptools (68.1.2-2) ... Selecting previously unselected package dh-python. Preparing to unpack .../040-dh-python_6.20240422_all.deb ... Unpacking dh-python (6.20240422) ... Selecting previously unselected package xml-core. Preparing to unpack .../041-xml-core_0.19_all.deb ... Unpacking xml-core (0.19) ... Selecting previously unselected package docutils-common. Preparing to unpack .../042-docutils-common_0.20.1+dfsg-3_all.deb ... Unpacking docutils-common (0.20.1+dfsg-3) ... Selecting previously unselected package fonts-font-awesome. Preparing to unpack .../043-fonts-font-awesome_5.0.10+really4.7.0~dfsg-4.1_all.deb ... Unpacking fonts-font-awesome (5.0.10+really4.7.0~dfsg-4.1) ... Selecting previously unselected package libbrotli1:armhf. Preparing to unpack .../044-libbrotli1_1.1.0-2+b3_armhf.deb ... Unpacking libbrotli1:armhf (1.1.0-2+b3) ... Selecting previously unselected package libbsd0:armhf. Preparing to unpack .../045-libbsd0_0.12.2-1_armhf.deb ... Unpacking libbsd0:armhf (0.12.2-1) ... Selecting previously unselected package libdrm-common. Preparing to unpack .../046-libdrm-common_2.4.120-2_all.deb ... Unpacking libdrm-common (2.4.120-2) ... Selecting previously unselected package libdrm2:armhf. Preparing to unpack .../047-libdrm2_2.4.120-2_armhf.deb ... Unpacking libdrm2:armhf (2.4.120-2) ... Selecting previously unselected package libdrm-amdgpu1:armhf. Preparing to unpack .../048-libdrm-amdgpu1_2.4.120-2_armhf.deb ... Unpacking libdrm-amdgpu1:armhf (2.4.120-2) ... Selecting previously unselected package libdrm-nouveau2:armhf. Preparing to unpack .../049-libdrm-nouveau2_2.4.120-2_armhf.deb ... Unpacking libdrm-nouveau2:armhf (2.4.120-2) ... Selecting previously unselected package libdrm-radeon1:armhf. Preparing to unpack .../050-libdrm-radeon1_2.4.120-2_armhf.deb ... Unpacking libdrm-radeon1:armhf (2.4.120-2) ... Selecting previously unselected package libedit2:armhf. Preparing to unpack .../051-libedit2_3.1-20230828-1_armhf.deb ... Unpacking libedit2:armhf (3.1-20230828-1) ... Selecting previously unselected package libfontenc1:armhf. Preparing to unpack .../052-libfontenc1_1%3a1.1.8-1_armhf.deb ... Unpacking libfontenc1:armhf (1:1.1.8-1) ... Selecting previously unselected package libpng16-16t64:armhf. Preparing to unpack .../053-libpng16-16t64_1.6.43-5_armhf.deb ... Unpacking libpng16-16t64:armhf (1.6.43-5) ... Selecting previously unselected package libfreetype6:armhf. Preparing to unpack .../054-libfreetype6_2.13.2+dfsg-1+b4_armhf.deb ... Unpacking libfreetype6:armhf (2.13.2+dfsg-1+b4) ... Selecting previously unselected package libglvnd0:armhf. Preparing to unpack .../055-libglvnd0_1.7.0-1_armhf.deb ... Unpacking libglvnd0:armhf (1.7.0-1) ... Selecting previously unselected package libxau6:armhf. Preparing to unpack .../056-libxau6_1%3a1.0.9-1_armhf.deb ... Unpacking libxau6:armhf (1:1.0.9-1) ... Selecting previously unselected package libxdmcp6:armhf. Preparing to unpack .../057-libxdmcp6_1%3a1.1.2-3_armhf.deb ... Unpacking libxdmcp6:armhf (1:1.1.2-3) ... Selecting previously unselected package libxcb1:armhf. Preparing to unpack .../058-libxcb1_1.17.0-1_armhf.deb ... Unpacking libxcb1:armhf (1.17.0-1) ... Selecting previously unselected package libx11-data. Preparing to unpack .../059-libx11-data_2%3a1.8.7-1_all.deb ... Unpacking libx11-data (2:1.8.7-1) ... Selecting previously unselected package libx11-6:armhf. Preparing to unpack .../060-libx11-6_2%3a1.8.7-1_armhf.deb ... Unpacking libx11-6:armhf (2:1.8.7-1) ... Selecting previously unselected package libglapi-mesa:armhf. Preparing to unpack .../061-libglapi-mesa_24.0.6-1_armhf.deb ... Unpacking libglapi-mesa:armhf (24.0.6-1) ... Selecting previously unselected package libx11-xcb1:armhf. Preparing to unpack .../062-libx11-xcb1_2%3a1.8.7-1_armhf.deb ... Unpacking libx11-xcb1:armhf (2:1.8.7-1) ... Selecting previously unselected package libxcb-dri2-0:armhf. Preparing to unpack .../063-libxcb-dri2-0_1.17.0-1_armhf.deb ... Unpacking libxcb-dri2-0:armhf (1.17.0-1) ... Selecting previously unselected package libxcb-dri3-0:armhf. Preparing to unpack .../064-libxcb-dri3-0_1.17.0-1_armhf.deb ... Unpacking libxcb-dri3-0:armhf (1.17.0-1) ... Selecting previously unselected package libxcb-glx0:armhf. Preparing to unpack .../065-libxcb-glx0_1.17.0-1_armhf.deb ... Unpacking libxcb-glx0:armhf (1.17.0-1) ... Selecting previously unselected package libxcb-present0:armhf. Preparing to unpack .../066-libxcb-present0_1.17.0-1_armhf.deb ... Unpacking libxcb-present0:armhf (1.17.0-1) ... Selecting previously unselected package libxcb-randr0:armhf. Preparing to unpack .../067-libxcb-randr0_1.17.0-1_armhf.deb ... Unpacking libxcb-randr0:armhf (1.17.0-1) ... Selecting previously unselected package libxcb-shm0:armhf. Preparing to unpack .../068-libxcb-shm0_1.17.0-1_armhf.deb ... Unpacking libxcb-shm0:armhf (1.17.0-1) ... Selecting previously unselected package libxcb-sync1:armhf. Preparing to unpack .../069-libxcb-sync1_1.17.0-1_armhf.deb ... Unpacking libxcb-sync1:armhf (1.17.0-1) ... Selecting previously unselected package libxcb-xfixes0:armhf. Preparing to unpack .../070-libxcb-xfixes0_1.17.0-1_armhf.deb ... Unpacking libxcb-xfixes0:armhf (1.17.0-1) ... Selecting previously unselected package libxext6:armhf. Preparing to unpack .../071-libxext6_2%3a1.3.4-1+b1_armhf.deb ... Unpacking libxext6:armhf (2:1.3.4-1+b1) ... Selecting previously unselected package libxfixes3:armhf. Preparing to unpack .../072-libxfixes3_1%3a6.0.0-2_armhf.deb ... Unpacking libxfixes3:armhf (1:6.0.0-2) ... Selecting previously unselected package libxshmfence1:armhf. Preparing to unpack .../073-libxshmfence1_1.3-1_armhf.deb ... Unpacking libxshmfence1:armhf (1.3-1) ... Selecting previously unselected package libxxf86vm1:armhf. Preparing to unpack .../074-libxxf86vm1_1%3a1.1.4-1+b2_armhf.deb ... Unpacking libxxf86vm1:armhf (1:1.1.4-1+b2) ... Selecting previously unselected package libvulkan1:armhf. Preparing to unpack .../075-libvulkan1_1.3.280.0-1_armhf.deb ... Unpacking libvulkan1:armhf (1.3.280.0-1) ... Selecting previously unselected package libz3-4:armhf. Preparing to unpack .../076-libz3-4_4.8.12-3.1+b2_armhf.deb ... Unpacking libz3-4:armhf (4.8.12-3.1+b2) ... Selecting previously unselected package libllvm17t64:armhf. Preparing to unpack .../077-libllvm17t64_1%3a17.0.6-10_armhf.deb ... Unpacking libllvm17t64:armhf (1:17.0.6-10) ... Selecting previously unselected package libsensors-config. Preparing to unpack .../078-libsensors-config_1%3a3.6.0-9_all.deb ... Unpacking libsensors-config (1:3.6.0-9) ... Selecting previously unselected package libsensors5:armhf. Preparing to unpack .../079-libsensors5_1%3a3.6.0-9_armhf.deb ... Unpacking libsensors5:armhf (1:3.6.0-9) ... Selecting previously unselected package libgl1-mesa-dri:armhf. Preparing to unpack .../080-libgl1-mesa-dri_24.0.6-1_armhf.deb ... Unpacking libgl1-mesa-dri:armhf (24.0.6-1) ... Selecting previously unselected package libglx-mesa0:armhf. Preparing to unpack .../081-libglx-mesa0_24.0.6-1_armhf.deb ... Unpacking libglx-mesa0:armhf (24.0.6-1) ... Selecting previously unselected package libglx0:armhf. Preparing to unpack .../082-libglx0_1.7.0-1_armhf.deb ... Unpacking libglx0:armhf (1.7.0-1) ... Selecting previously unselected package libgl1:armhf. Preparing to unpack .../083-libgl1_1.7.0-1_armhf.deb ... Unpacking libgl1:armhf (1.7.0-1) ... Selecting previously unselected package x11-common. Preparing to unpack .../084-x11-common_1%3a7.7+23_all.deb ... Unpacking x11-common (1:7.7+23) ... Selecting previously unselected package libice6:armhf. Preparing to unpack .../085-libice6_2%3a1.0.10-1_armhf.deb ... Unpacking libice6:armhf (2:1.0.10-1) ... Selecting previously unselected package libjs-jquery. Preparing to unpack .../086-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Selecting previously unselected package libjs-underscore. Preparing to unpack .../087-libjs-underscore_1.13.4~dfsg+~1.11.4-3_all.deb ... Unpacking libjs-underscore (1.13.4~dfsg+~1.11.4-3) ... Selecting previously unselected package libjs-sphinxdoc. Preparing to unpack .../088-libjs-sphinxdoc_7.2.6-6_all.deb ... Unpacking libjs-sphinxdoc (7.2.6-6) ... Selecting previously unselected package libjson-perl. Preparing to unpack .../089-libjson-perl_4.10000-1_all.deb ... Unpacking libjson-perl (4.10000-1) ... Selecting previously unselected package libpixman-1-0:armhf. Preparing to unpack .../090-libpixman-1-0_0.42.2-1+b1_armhf.deb ... Unpacking libpixman-1-0:armhf (0.42.2-1+b1) ... Selecting previously unselected package libpython3.12-stdlib:armhf. Preparing to unpack .../091-libpython3.12-stdlib_3.12.3-1_armhf.deb ... Unpacking libpython3.12-stdlib:armhf (3.12.3-1) ... Selecting previously unselected package libsm6:armhf. Preparing to unpack .../092-libsm6_2%3a1.2.3-1_armhf.deb ... Unpacking libsm6:armhf (2:1.2.3-1) ... Selecting previously unselected package libunwind8:armhf. Preparing to unpack .../093-libunwind8_1.6.2-3_armhf.deb ... Unpacking libunwind8:armhf (1.6.2-3) ... Selecting previously unselected package libxt6t64:armhf. Preparing to unpack .../094-libxt6t64_1%3a1.2.1-1.2_armhf.deb ... Unpacking libxt6t64:armhf (1:1.2.1-1.2) ... Selecting previously unselected package libxmu6:armhf. Preparing to unpack .../095-libxmu6_2%3a1.1.3-3+b2_armhf.deb ... Unpacking libxmu6:armhf (2:1.1.3-3+b2) ... Selecting previously unselected package libxpm4:armhf. Preparing to unpack .../096-libxpm4_1%3a3.5.17-1+b1_armhf.deb ... Unpacking libxpm4:armhf (1:3.5.17-1+b1) ... Selecting previously unselected package libxaw7:armhf. Preparing to unpack .../097-libxaw7_2%3a1.0.14-1+b2_armhf.deb ... Unpacking libxaw7:armhf (2:1.0.14-1+b2) ... Selecting previously unselected package libxfont2:armhf. Preparing to unpack .../098-libxfont2_1%3a2.0.6-1_armhf.deb ... Unpacking libxfont2:armhf (1:2.0.6-1) ... Selecting previously unselected package libxkbfile1:armhf. Preparing to unpack .../099-libxkbfile1_1%3a1.1.0-1_armhf.deb ... Unpacking libxkbfile1:armhf (1:1.1.0-1) ... Selecting previously unselected package libxrender1:armhf. Preparing to unpack .../100-libxrender1_1%3a0.9.10-1.1_armhf.deb ... Unpacking libxrender1:armhf (1:0.9.10-1.1) ... Selecting previously unselected package libxrandr2:armhf. Preparing to unpack .../101-libxrandr2_2%3a1.5.4-1_armhf.deb ... Unpacking libxrandr2:armhf (2:1.5.4-1) ... Selecting previously unselected package libyaml-0-2:armhf. Preparing to unpack .../102-libyaml-0-2_0.2.5-1_armhf.deb ... Unpacking libyaml-0-2:armhf (0.2.5-1) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../103-python3-packaging_24.0-1_all.deb ... Unpacking python3-packaging (24.0-1) ... Selecting previously unselected package python3-pyproject-hooks. Preparing to unpack .../104-python3-pyproject-hooks_1.0.0-2_all.deb ... Unpacking python3-pyproject-hooks (1.0.0-2) ... Selecting previously unselected package python3-toml. Preparing to unpack .../105-python3-toml_0.10.2-1_all.deb ... Unpacking python3-toml (0.10.2-1) ... Selecting previously unselected package python3-wheel. Preparing to unpack .../106-python3-wheel_0.43.0-1_all.deb ... Unpacking python3-wheel (0.43.0-1) ... Selecting previously unselected package python3-build. Preparing to unpack .../107-python3-build_1.1.1-1_all.deb ... Unpacking python3-build (1.1.1-1) ... Selecting previously unselected package python3-installer. Preparing to unpack .../108-python3-installer_0.7.0+dfsg1-3_all.deb ... Unpacking python3-installer (0.7.0+dfsg1-3) ... Selecting previously unselected package pybuild-plugin-pyproject. Preparing to unpack .../109-pybuild-plugin-pyproject_6.20240422_all.deb ... Unpacking pybuild-plugin-pyproject (6.20240422) ... Selecting previously unselected package sphinx-rtd-theme-common. Preparing to unpack .../110-sphinx-rtd-theme-common_2.0.0+dfsg-1_all.deb ... Unpacking sphinx-rtd-theme-common (2.0.0+dfsg-1) ... Selecting previously unselected package python-acme-doc. Preparing to unpack .../111-python-acme-doc_2.9.0-1_all.deb ... Unpacking python-acme-doc (2.9.0-1) ... Selecting previously unselected package python-babel-localedata. Preparing to unpack .../112-python-babel-localedata_2.14.0-1_all.deb ... Unpacking python-babel-localedata (2.14.0-1) ... Selecting previously unselected package python-cryptography-doc. Preparing to unpack .../113-python-cryptography-doc_42.0.5-2_all.deb ... Unpacking python-cryptography-doc (42.0.5-2) ... Selecting previously unselected package python-django-doc. Preparing to unpack .../114-python-django-doc_3%3a4.2.11-1_all.deb ... Unpacking python-django-doc (3:4.2.11-1) ... Selecting previously unselected package python3-cffi-backend:armhf. Preparing to unpack .../115-python3-cffi-backend_1.16.0-2+b1_armhf.deb ... Unpacking python3-cffi-backend:armhf (1.16.0-2+b1) ... Selecting previously unselected package python3-cryptography. Preparing to unpack .../116-python3-cryptography_42.0.5-2_armhf.deb ... Unpacking python3-cryptography (42.0.5-2) ... Selecting previously unselected package python3-openssl. Preparing to unpack .../117-python3-openssl_24.1.0-1_all.deb ... Unpacking python3-openssl (24.1.0-1) ... Selecting previously unselected package python3-josepy. Preparing to unpack .../118-python3-josepy_1.14.0-1_all.deb ... Unpacking python3-josepy (1.14.0-1) ... Selecting previously unselected package python3-certifi. Preparing to unpack .../119-python3-certifi_2023.11.17-1_all.deb ... Unpacking python3-certifi (2023.11.17-1) ... Selecting previously unselected package python3-charset-normalizer. Preparing to unpack .../120-python3-charset-normalizer_3.3.2-1_all.deb ... Unpacking python3-charset-normalizer (3.3.2-1) ... Selecting previously unselected package python3-idna. Preparing to unpack .../121-python3-idna_3.6-2_all.deb ... Unpacking python3-idna (3.6-2) ... Selecting previously unselected package python3-six. Preparing to unpack .../122-python3-six_1.16.0-6_all.deb ... Unpacking python3-six (1.16.0-6) ... Selecting previously unselected package python3-urllib3. Preparing to unpack .../123-python3-urllib3_1.26.18-2_all.deb ... Unpacking python3-urllib3 (1.26.18-2) ... Selecting previously unselected package python3-chardet. Preparing to unpack .../124-python3-chardet_5.2.0+dfsg-1_all.deb ... Unpacking python3-chardet (5.2.0+dfsg-1) ... Selecting previously unselected package python3-requests. Preparing to unpack .../125-python3-requests_2.31.0+dfsg-1_all.deb ... Unpacking python3-requests (2.31.0+dfsg-1) ... Selecting previously unselected package python3-tz. Preparing to unpack .../126-python3-tz_2024.1-2_all.deb ... Unpacking python3-tz (2024.1-2) ... Selecting previously unselected package python3-rfc3339. Preparing to unpack .../127-python3-rfc3339_1.1-4_all.deb ... Unpacking python3-rfc3339 (1.1-4) ... Selecting previously unselected package python3-acme. Preparing to unpack .../128-python3-acme_2.9.0-1_all.deb ... Unpacking python3-acme (2.9.0-1) ... Selecting previously unselected package python3-alabaster. Preparing to unpack .../129-python3-alabaster_0.7.12-1_all.deb ... Unpacking python3-alabaster (0.7.12-1) ... Selecting previously unselected package python3.12. Preparing to unpack .../130-python3.12_3.12.3-1_armhf.deb ... Unpacking python3.12 (3.12.3-1) ... Selecting previously unselected package python3-all. Preparing to unpack .../131-python3-all_3.11.8-1_armhf.deb ... Unpacking python3-all (3.11.8-1) ... Selecting previously unselected package python3-vine. Preparing to unpack .../132-python3-vine_5.0.0+dfsg-3_all.deb ... Unpacking python3-vine (5.0.0+dfsg-3) ... Selecting previously unselected package python3-amqp. Preparing to unpack .../133-python3-amqp_5.2.0-1_all.deb ... Unpacking python3-amqp (5.2.0-1) ... Selecting previously unselected package python3-typing-extensions. Preparing to unpack .../134-python3-typing-extensions_4.10.0-1_all.deb ... Unpacking python3-typing-extensions (4.10.0-1) ... Selecting previously unselected package python3-asgiref. Preparing to unpack .../135-python3-asgiref_3.8.1-1_all.deb ... Unpacking python3-asgiref (3.8.1-1) ... Selecting previously unselected package python3-asn1crypto. Preparing to unpack .../136-python3-asn1crypto_1.5.1-3_all.deb ... Unpacking python3-asn1crypto (1.5.1-3) ... Selecting previously unselected package python3-attr. Preparing to unpack .../137-python3-attr_23.2.0-2_all.deb ... Unpacking python3-attr (23.2.0-2) ... Selecting previously unselected package python3-babel. Preparing to unpack .../138-python3-babel_2.14.0-1_all.deb ... Unpacking python3-babel (2.14.0-1) ... Selecting previously unselected package python3-billiard. Preparing to unpack .../139-python3-billiard_4.2.0-2_all.deb ... Unpacking python3-billiard (4.2.0-2) ... Selecting previously unselected package python3-colorama. Preparing to unpack .../140-python3-colorama_0.4.6-4_all.deb ... Unpacking python3-colorama (0.4.6-4) ... Selecting previously unselected package python3-click. Preparing to unpack .../141-python3-click_8.1.7-1_all.deb ... Unpacking python3-click (8.1.7-1) ... Selecting previously unselected package python3-click-didyoumean. Preparing to unpack .../142-python3-click-didyoumean_0.3.0-2_all.deb ... Unpacking python3-click-didyoumean (0.3.0-2) ... Selecting previously unselected package python3-wcwidth. Preparing to unpack .../143-python3-wcwidth_0.2.13+dfsg1-1_all.deb ... Unpacking python3-wcwidth (0.2.13+dfsg1-1) ... Selecting previously unselected package python3-prompt-toolkit. Preparing to unpack .../144-python3-prompt-toolkit_3.0.43-1_all.deb ... Unpacking python3-prompt-toolkit (3.0.43-1) ... Selecting previously unselected package python3-click-repl. Preparing to unpack .../145-python3-click-repl_0.3.0-1_all.deb ... Unpacking python3-click-repl (0.3.0-1) ... Selecting previously unselected package python3-dateutil. Preparing to unpack .../146-python3-dateutil_2.9.0-2_all.deb ... Unpacking python3-dateutil (2.9.0-2) ... Selecting previously unselected package python3-ephem. Preparing to unpack .../147-python3-ephem_4.1.5-1+b1_armhf.deb ... Unpacking python3-ephem (4.1.5-1+b1) ... Selecting previously unselected package python3-kombu. Preparing to unpack .../148-python3-kombu_5.3.7-1_all.deb ... Unpacking python3-kombu (5.3.7-1) ... Selecting previously unselected package python3-memcache. Preparing to unpack .../149-python3-memcache_1.59-8_all.deb ... Unpacking python3-memcache (1.59-8) ... Selecting previously unselected package python3-pyparsing. Preparing to unpack .../150-python3-pyparsing_3.1.2-1_all.deb ... Unpacking python3-pyparsing (3.1.2-1) ... Selecting previously unselected package python3-click-plugins. Preparing to unpack .../151-python3-click-plugins_1.1.1-4_all.deb ... Unpacking python3-click-plugins (1.1.1-4) ... Selecting previously unselected package python3-celery. Preparing to unpack .../152-python3-celery_5.3.6-2_all.deb ... Unpacking python3-celery (5.3.6-2) ... Selecting previously unselected package python3-sqlparse. Preparing to unpack .../153-python3-sqlparse_0.4.4-1_all.deb ... Unpacking python3-sqlparse (0.4.4-1) ... Selecting previously unselected package python3-django. Preparing to unpack .../154-python3-django_3%3a4.2.11-1_all.deb ... Unpacking python3-django (3:4.2.11-1) ... Selecting previously unselected package python3-django-object-actions. Preparing to unpack .../155-python3-django-object-actions_4.2.0-1_all.deb ... Unpacking python3-django-object-actions (4.2.0-1) ... Selecting previously unselected package python3-dnspython. Preparing to unpack .../156-python3-dnspython_2.6.1-1_all.deb ... Unpacking python3-dnspython (2.6.1-1) ... Selecting previously unselected package python3.11-doc. Preparing to unpack .../157-python3.11-doc_3.11.9-1_all.deb ... Unpacking python3.11-doc (3.11.9-1) ... Selecting previously unselected package python3-doc. Preparing to unpack .../158-python3-doc_3.11.8-1_all.deb ... Unpacking python3-doc (3.11.8-1) ... Selecting previously unselected package python3-roman. Preparing to unpack .../159-python3-roman_3.3-3_all.deb ... Unpacking python3-roman (3.3-3) ... Selecting previously unselected package python3-docutils. Preparing to unpack .../160-python3-docutils_0.20.1+dfsg-3_all.deb ... Unpacking python3-docutils (0.20.1+dfsg-3) ... Selecting previously unselected package python3-easyprocess. Preparing to unpack .../161-python3-easyprocess_1.1-1_all.deb ... Unpacking python3-easyprocess (1.1-1) ... Selecting previously unselected package python3-exceptiongroup. Preparing to unpack .../162-python3-exceptiongroup_1.2.1-1_all.deb ... Unpacking python3-exceptiongroup (1.2.1-1) ... Selecting previously unselected package python3-freezegun. Preparing to unpack .../163-python3-freezegun_1.2.1+actually1.2.1-1_all.deb ... Unpacking python3-freezegun (1.2.1+actually1.2.1-1) ... Selecting previously unselected package python3-h11. Preparing to unpack .../164-python3-h11_0.14.0-1_all.deb ... Unpacking python3-h11 (0.14.0-1) ... Selecting previously unselected package python3-imagesize. Preparing to unpack .../165-python3-imagesize_1.4.1-1_all.deb ... Unpacking python3-imagesize (1.4.1-1) ... Selecting previously unselected package python3-iniconfig. Preparing to unpack .../166-python3-iniconfig_1.1.1-2_all.deb ... Unpacking python3-iniconfig (1.1.1-2) ... Selecting previously unselected package python3-markupsafe. Preparing to unpack .../167-python3-markupsafe_2.1.5-1_armhf.deb ... Unpacking python3-markupsafe (2.1.5-1) ... Selecting previously unselected package python3-jinja2. Preparing to unpack .../168-python3-jinja2_3.1.3-1_all.deb ... Unpacking python3-jinja2 (3.1.3-1) ... Selecting previously unselected package sphinx-common. Preparing to unpack .../169-sphinx-common_7.2.6-6_all.deb ... Unpacking sphinx-common (7.2.6-6) ... Selecting previously unselected package python3-pygments. Preparing to unpack .../170-python3-pygments_2.17.2+dfsg-1_all.deb ... Unpacking python3-pygments (2.17.2+dfsg-1) ... Selecting previously unselected package python3-snowballstemmer. Preparing to unpack .../171-python3-snowballstemmer_2.2.0-4_all.deb ... Unpacking python3-snowballstemmer (2.2.0-4) ... Selecting previously unselected package python3-sphinx. Preparing to unpack .../172-python3-sphinx_7.2.6-6_all.deb ... Unpacking python3-sphinx (7.2.6-6) ... Selecting previously unselected package python3-tabulate. Preparing to unpack .../173-python3-tabulate_0.8.10-1_all.deb ... Unpacking python3-tabulate (0.8.10-1) ... Selecting previously unselected package python3-numpydoc. Preparing to unpack .../174-python3-numpydoc_1.6.0-2_all.deb ... Unpacking python3-numpydoc (1.6.0-2) ... Selecting previously unselected package python3-oscrypto. Preparing to unpack .../175-python3-oscrypto_1.3.0-5_all.deb ... Unpacking python3-oscrypto (1.3.0-5) ... Selecting previously unselected package python3-ocspbuilder. Preparing to unpack .../176-python3-ocspbuilder_0.10.2-3_all.deb ... Unpacking python3-ocspbuilder (0.10.2-3) ... Selecting previously unselected package python3-outcome. Preparing to unpack .../177-python3-outcome_1.2.0-1.1_all.deb ... Unpacking python3-outcome (1.2.0-1.1) ... Selecting previously unselected package python3-pluggy. Preparing to unpack .../178-python3-pluggy_1.5.0-1_all.deb ... Unpacking python3-pluggy (1.5.0-1) ... Selecting previously unselected package python3-pytest. Preparing to unpack .../179-python3-pytest_8.1.1-2_all.deb ... Unpacking python3-pytest (8.1.1-2) ... Selecting previously unselected package python3-pytest-django. Preparing to unpack .../180-python3-pytest-django_4.5.2-3_all.deb ... Unpacking python3-pytest-django (4.5.2-3) ... Selecting previously unselected package xkb-data. Preparing to unpack .../181-xkb-data_2.41-2_all.deb ... Unpacking xkb-data (2.41-2) ... Selecting previously unselected package x11-xkb-utils. Preparing to unpack .../182-x11-xkb-utils_7.7+8+b1_armhf.deb ... Unpacking x11-xkb-utils (7.7+8+b1) ... Selecting previously unselected package xserver-common. Preparing to unpack .../183-xserver-common_2%3a21.1.12-1_all.deb ... Unpacking xserver-common (2:21.1.12-1) ... Selecting previously unselected package xvfb. Preparing to unpack .../184-xvfb_2%3a21.1.12-1_armhf.deb ... Unpacking xvfb (2:21.1.12-1) ... Selecting previously unselected package python3-pyvirtualdisplay. Preparing to unpack .../185-python3-pyvirtualdisplay_2.2-2_all.deb ... Unpacking python3-pyvirtualdisplay (2.2-2) ... Selecting previously unselected package python3-requests-mock. Preparing to unpack .../186-python3-requests-mock_1.11.0-1_all.deb ... Unpacking python3-requests-mock (1.11.0-1) ... Selecting previously unselected package python3-sniffio. Preparing to unpack .../187-python3-sniffio_1.3.0-2_all.deb ... Unpacking python3-sniffio (1.3.0-2) ... Selecting previously unselected package python3-sortedcontainers. Preparing to unpack .../188-python3-sortedcontainers_2.4.0-2_all.deb ... Unpacking python3-sortedcontainers (2.4.0-2) ... Selecting previously unselected package python3-trio. Preparing to unpack .../189-python3-trio_0.24.0-1_all.deb ... Unpacking python3-trio (0.24.0-1) ... Selecting previously unselected package python3-wsproto. Preparing to unpack .../190-python3-wsproto_1.2.0-1_all.deb ... Unpacking python3-wsproto (1.2.0-1) ... Selecting previously unselected package python3-trio-websocket. Preparing to unpack .../191-python3-trio-websocket_0.11.1-1_all.deb ... Unpacking python3-trio-websocket (0.11.1-1) ... Selecting previously unselected package python3-selenium. Preparing to unpack .../192-python3-selenium_4.19.0+dfsg-1_all.deb ... Unpacking python3-selenium (4.19.0+dfsg-1) ... Selecting previously unselected package python3-semantic-version. Preparing to unpack .../193-python3-semantic-version_2.10.0-2_all.deb ... Unpacking python3-semantic-version (2.10.0-2) ... Selecting previously unselected package python3-sphinx-jinja. Preparing to unpack .../194-python3-sphinx-jinja_2.0.2-3_all.deb ... Unpacking python3-sphinx-jinja (2.0.2-3) ... Selecting previously unselected package python3-sphinxcontrib.jquery. Preparing to unpack .../195-python3-sphinxcontrib.jquery_4.1-5_all.deb ... Unpacking python3-sphinxcontrib.jquery (4.1-5) ... Selecting previously unselected package python3-sphinx-rtd-theme. Preparing to unpack .../196-python3-sphinx-rtd-theme_2.0.0+dfsg-1_all.deb ... Unpacking python3-sphinx-rtd-theme (2.0.0+dfsg-1) ... Selecting previously unselected package python3-yaml. Preparing to unpack .../197-python3-yaml_6.0.1-2_armhf.deb ... Unpacking python3-yaml (6.0.1-2) ... Setting up media-types (10.1.0) ... Setting up libpipeline1:armhf (1.5.7-2) ... Setting up libpixman-1-0:armhf (0.42.2-1+b1) ... Setting up libxau6:armhf (1:1.0.9-1) ... Setting up fonts-lato (2.015-1) ... Setting up libicu72:armhf (72.1-4+b1) ... Setting up bsdextrautils (2.40-7) ... Setting up libmagic-mgc (1:5.45-3) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:armhf (0.2.5-1) ... Setting up libglvnd0:armhf (1.7.0-1) ... Setting up libdebhelper-perl (13.15.3) ... Setting up libbrotli1:armhf (1.1.0-2+b3) ... Setting up libmagic1t64:armhf (1:5.45-3) ... Setting up libpython3.12-minimal:armhf (3.12.3-1) ... Setting up x11-common (1:7.7+23) ... invoke-rc.d: could not determine current runlevel Setting up X socket directories... /tmp/.X11-unix /tmp/.ICE-unix. Setting up libsensors-config (1:3.6.0-9) ... Setting up gettext-base (0.21-14+b1) ... Setting up m4 (1.4.19-4) ... Setting up xkb-data (2.41-2) ... Setting up file (1:5.45-3) ... Setting up libunwind8:armhf (1.6.2-3) ... Setting up libelf1t64:armhf (0.191-1+b1) ... Setting up python-babel-localedata (2.14.0-1) ... Setting up tzdata (2024a-3) ... Current default time zone: 'Etc/UTC' Local time is now: Sat Apr 27 01:39:40 UTC 2024. Universal Time is now: Sat Apr 27 01:39:40 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up libfontenc1:armhf (1:1.1.8-1) ... Setting up autotools-dev (20220109.1) ... Setting up libz3-4:armhf (4.8.12-3.1+b2) ... Setting up libx11-data (2:1.8.7-1) ... Setting up libpng16-16t64:armhf (1.6.43-5) ... Setting up autopoint (0.21-14) ... Setting up libsensors5:armhf (1:3.6.0-9) ... Setting up libglapi-mesa:armhf (24.0.6-1) ... Setting up libvulkan1:armhf (1.3.280.0-1) ... Setting up autoconf (2.71-3) ... Setting up dwz (0.15-1+b2) ... Setting up sensible-utils (0.0.22) ... Setting up libxshmfence1:armhf (1.3-1) ... Setting up libuchardet0:armhf (0.0.8-1+b1) ... Setting up libjson-perl (4.10000-1) ... Setting up libsub-override-perl (0.10-1) ... Setting up netbase (6.4) ... Setting up sgml-base (1.31) ... Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Setting up openssl (3.2.1-3) ... Setting up libbsd0:armhf (0.12.2-1) ... Setting up libdrm-common (2.4.120-2) ... Setting up readline-common (8.2-4) ... Setting up libxml2:armhf (2.9.14+dfsg-1.3+b2) ... Setting up fonts-font-awesome (5.0.10+really4.7.0~dfsg-4.1) ... Setting up sphinx-rtd-theme-common (2.0.0+dfsg-1) ... Setting up libjs-underscore (1.13.4~dfsg+~1.11.4-3) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.13.1-1) ... Setting up python3.12-minimal (3.12.3-1) ... Setting up libice6:armhf (2:1.0.10-1) ... Setting up libxdmcp6:armhf (1:1.1.2-3) ... Setting up libxcb1:armhf (1.17.0-1) ... Setting up gettext (0.21-14+b1) ... Setting up libxcb-xfixes0:armhf (1.17.0-1) ... Setting up libtool (2.4.7-7) ... Setting up libxcb-glx0:armhf (1.17.0-1) ... Setting up libedit2:armhf (3.1-20230828-1) ... Setting up libxcb-shm0:armhf (1.17.0-1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up libxcb-present0:armhf (1.17.0-1) ... Setting up dh-autoreconf (20) ... Setting up ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 146 added, 0 removed; done. Setting up libllvm17t64:armhf (1:17.0.6-10) ... Setting up libfreetype6:armhf (2.13.2+dfsg-1+b4) ... Setting up libxcb-sync1:armhf (1.17.0-1) ... Setting up python3.11-doc (3.11.9-1) ... Setting up libjs-sphinxdoc (7.2.6-6) ... Setting up libreadline8t64:armhf (8.2-4) ... Setting up libxcb-dri2-0:armhf (1.17.0-1) ... Setting up dh-strip-nondeterminism (1.13.1-1) ... Setting up libdrm2:armhf (2.4.120-2) ... Setting up groff-base (1.23.0-3+b1) ... Setting up libxcb-randr0:armhf (1.17.0-1) ... Setting up xml-core (0.19) ... Setting up libx11-6:armhf (2:1.8.7-1) ... Setting up python-cryptography-doc (42.0.5-2) ... Setting up libxkbfile1:armhf (1:1.1.0-1) ... Setting up python-django-doc (3:4.2.11-1) ... Setting up libsm6:armhf (2:1.2.3-1) ... Setting up libxfont2:armhf (1:2.0.6-1) ... Setting up python3-doc (3.11.8-1) ... Setting up libdrm-amdgpu1:armhf (2.4.120-2) ... Setting up libxcb-dri3-0:armhf (1.17.0-1) ... Setting up libx11-xcb1:armhf (2:1.8.7-1) ... Setting up libdrm-nouveau2:armhf (2.4.120-2) ... Setting up python-acme-doc (2.9.0-1) ... Setting up libpython3.12-stdlib:armhf (3.12.3-1) ... Setting up libxpm4:armhf (1:3.5.17-1+b1) ... Setting up libxrender1:armhf (1:0.9.10-1.1) ... Setting up libdrm-radeon1:armhf (2.4.120-2) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libpython3.11-stdlib:armhf (3.11.9-1) ... Setting up python3.12 (3.12.3-1) ... Setting up libgl1-mesa-dri:armhf (24.0.6-1) ... Setting up libxext6:armhf (2:1.3.4-1+b1) ... Setting up man-db (2.12.1-1) ... Not building database; man-db/auto-update is not 'true'. Setting up libxxf86vm1:armhf (1:1.1.4-1+b2) ... Setting up libxfixes3:armhf (1:6.0.0-2) ... Setting up sphinx-common (7.2.6-6) ... Setting up libxt6t64:armhf (1:1.2.1-1.2) ... Setting up libxrandr2:armhf (2:1.5.4-1) ... Setting up libpython3-stdlib:armhf (3.11.8-1) ... Setting up python3.11 (3.11.9-1) ... Setting up libxmu6:armhf (2:1.1.3-3+b2) ... Setting up libglx-mesa0:armhf (24.0.6-1) ... Setting up libglx0:armhf (1.7.0-1) ... Setting up debhelper (13.15.3) ... Setting up python3 (3.11.8-1) ... Setting up python3-sortedcontainers (2.4.0-2) ... Setting up libxaw7:armhf (2:1.0.14-1+b2) ... Setting up python3-markupsafe (2.1.5-1) ... Setting up python3-wheel (0.43.0-1) ... Setting up python3-tz (2024.1-2) ... Setting up python3-vine (5.0.0+dfsg-3) ... Setting up python3-six (1.16.0-6) ... Setting up python3-roman (3.3-3) ... Setting up python3-jinja2 (3.1.3-1) ... Setting up python3-packaging (24.0-1) ... Setting up python3-easyprocess (1.1-1) ... Setting up libgl1:armhf (1.7.0-1) ... Setting up python3-sqlparse (0.4.4-1) ... Setting up python3-wcwidth (0.2.13+dfsg1-1) ... Setting up python3-pyproject-hooks (1.0.0-2) ... Setting up python3-pyparsing (3.1.2-1) ... Setting up python3-certifi (2023.11.17-1) ... Setting up python3-snowballstemmer (2.2.0-4) ... Setting up python3-idna (3.6-2) ... Setting up python3-semantic-version (2.10.0-2) ... Setting up python3-h11 (0.14.0-1) ... Setting up python3-typing-extensions (4.10.0-1) ... Setting up python3-toml (0.10.2-1) ... Setting up python3-installer (0.7.0+dfsg1-3) ... Setting up python3-urllib3 (1.26.18-2) ... Setting up python3-pluggy (1.5.0-1) ... Setting up python3-dnspython (2.6.1-1) ... Setting up python3-amqp (5.2.0-1) ... Setting up python3-exceptiongroup (1.2.1-1) ... Setting up python3-dateutil (2.9.0-2) ... Setting up python3-build (1.1.1-1) ... Setting up python3-rfc3339 (1.1-4) ... Setting up python3-lib2to3 (3.12.3-1) ... Setting up python3-asn1crypto (1.5.1-3) ... Setting up python3-freezegun (1.2.1+actually1.2.1-1) ... Setting up python3-asgiref (3.8.1-1) ... Setting up python3-cffi-backend:armhf (1.16.0-2+b1) ... Setting up python3-imagesize (1.4.1-1) ... Setting up python3-pkg-resources (68.1.2-2) ... Setting up python3-prompt-toolkit (3.0.43-1) ... Setting up python3-distutils (3.12.3-1) ... python3.12: can't get files for byte-compilation Setting up python3-iniconfig (1.1.1-2) ... Setting up python3-sniffio (1.3.0-2) ... Setting up python3-attr (23.2.0-2) ... Setting up python3-django (3:4.2.11-1) ... Setting up python3-billiard (4.2.0-2) ... Setting up python3-wsproto (1.2.0-1) ... Setting up python3-setuptools (68.1.2-2) ... Setting up python3-babel (2.14.0-1) ... update-alternatives: using /usr/bin/pybabel-python3 to provide /usr/bin/pybabel (pybabel) in auto mode Setting up python3-colorama (0.4.6-4) ... Setting up python3-charset-normalizer (3.3.2-1) ... Setting up python3-pytest (8.1.1-2) ... Setting up python3-alabaster (0.7.12-1) ... Setting up x11-xkb-utils (7.7+8+b1) ... Setting up python3-ephem (4.1.5-1+b1) ... Setting up python3-memcache (1.59-8) ... Setting up python3-tabulate (0.8.10-1) ... Setting up python3-all (3.11.8-1) ... Setting up python3-yaml (6.0.1-2) ... Setting up python3-click (8.1.7-1) ... Setting up python3-pytest-django (4.5.2-3) ... Setting up python3-kombu (5.3.7-1) ... Setting up python3-pygments (2.17.2+dfsg-1) ... Setting up python3-chardet (5.2.0+dfsg-1) ... Setting up python3-oscrypto (1.3.0-5) ... Setting up python3-click-repl (0.3.0-1) ... Setting up python3-cryptography (42.0.5-2) ... Setting up python3-requests (2.31.0+dfsg-1) ... Setting up python3-click-plugins (1.1.1-4) ... Setting up xserver-common (2:21.1.12-1) ... Setting up python3-django-object-actions (4.2.0-1) ... Setting up dh-python (6.20240422) ... Setting up python3-outcome (1.2.0-1.1) ... Setting up pybuild-plugin-pyproject (6.20240422) ... Setting up python3-openssl (24.1.0-1) ... Setting up xvfb (2:21.1.12-1) ... Setting up python3-ocspbuilder (0.10.2-3) ... Setting up python3-click-didyoumean (0.3.0-2) ... Setting up python3-trio (0.24.0-1) ... Setting up python3-requests-mock (1.11.0-1) ... Setting up python3-josepy (1.14.0-1) ... Setting up python3-celery (5.3.6-2) ... Setting up python3-pyvirtualdisplay (2.2-2) ... Setting up python3-trio-websocket (0.11.1-1) ... Setting up python3-acme (2.9.0-1) ... Setting up python3-selenium (4.19.0+dfsg-1) ... Processing triggers for libc-bin (2.37-18) ... Processing triggers for sgml-base (1.31) ... Setting up docutils-common (0.20.1+dfsg-3) ... Processing triggers for sgml-base (1.31) ... Setting up python3-docutils (0.20.1+dfsg-3) ... Setting up python3-sphinx (7.2.6-6) ... Setting up python3-sphinx-jinja (2.0.2-3) ... Setting up python3-sphinxcontrib.jquery (4.1-5) ... Setting up python3-numpydoc (1.6.0-2) ... Setting up python3-sphinx-rtd-theme (2.0.0+dfsg-1) ... Processing triggers for ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: Running cd /build/reproducible-path/python-django-ca-1.25.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../python-django-ca_1.25.0-2_source.changes dpkg-buildpackage: info: source package python-django-ca dpkg-buildpackage: info: source version 1.25.0-2 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Dmitry Shachnev dpkg-source --before-build . dpkg-buildpackage: info: host architecture armhf debian/rules clean dh clean --with python3,sphinxdoc --buildsystem=pybuild dh_auto_clean -O--buildsystem=pybuild dh_autoreconf_clean -O--buildsystem=pybuild dh_clean -O--buildsystem=pybuild debian/rules execute_after_dh_clean make[1]: Entering directory '/build/reproducible-path/python-django-ca-1.25.0' rm -rf /build/reproducible-path/python-django-ca-1.25.0/docs/source/.build make[1]: Leaving directory '/build/reproducible-path/python-django-ca-1.25.0' debian/rules binary dh binary --with python3,sphinxdoc --buildsystem=pybuild dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild dh_auto_build -O--buildsystem=pybuild I: pybuild plugin_pyproject:129: Building wheel for python3.12 with "build" module I: pybuild base:311: python3.12 -m build --skip-dependency-check --no-isolation --wheel --outdir /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca * Building wheel... running bdist_wheel running build running build_py creating build creating build/lib creating build/lib/django_ca copying ca/django_ca/typehints.py -> build/lib/django_ca copying ca/django_ca/forms.py -> build/lib/django_ca copying ca/django_ca/admin.py -> build/lib/django_ca copying ca/django_ca/managers.py -> build/lib/django_ca copying ca/django_ca/checks.py -> build/lib/django_ca copying ca/django_ca/widgets.py -> build/lib/django_ca copying ca/django_ca/ca_settings.py -> build/lib/django_ca copying ca/django_ca/signals.py -> build/lib/django_ca copying ca/django_ca/profiles.py -> build/lib/django_ca copying ca/django_ca/converters.py -> build/lib/django_ca copying ca/django_ca/deprecation.py -> build/lib/django_ca copying ca/django_ca/views.py -> build/lib/django_ca copying ca/django_ca/models.py -> build/lib/django_ca copying ca/django_ca/utils.py -> build/lib/django_ca copying ca/django_ca/modelfields.py -> build/lib/django_ca copying ca/django_ca/urls.py -> build/lib/django_ca copying ca/django_ca/fields.py -> build/lib/django_ca copying ca/django_ca/tasks.py -> build/lib/django_ca copying ca/django_ca/__init__.py -> build/lib/django_ca copying ca/django_ca/constants.py -> build/lib/django_ca copying ca/django_ca/querysets.py -> build/lib/django_ca copying ca/django_ca/apps.py -> build/lib/django_ca creating build/lib/django_ca/acme copying ca/django_ca/acme/responses.py -> build/lib/django_ca/acme copying ca/django_ca/acme/validation.py -> build/lib/django_ca/acme copying ca/django_ca/acme/views.py -> build/lib/django_ca/acme copying ca/django_ca/acme/utils.py -> build/lib/django_ca/acme copying ca/django_ca/acme/errors.py -> build/lib/django_ca/acme copying ca/django_ca/acme/messages.py -> build/lib/django_ca/acme copying ca/django_ca/acme/__init__.py -> build/lib/django_ca/acme copying ca/django_ca/acme/constants.py -> build/lib/django_ca/acme creating build/lib/django_ca/management copying ca/django_ca/management/base.py -> build/lib/django_ca/management copying ca/django_ca/management/actions.py -> build/lib/django_ca/management copying ca/django_ca/management/mixins.py -> build/lib/django_ca/management copying ca/django_ca/management/__init__.py -> build/lib/django_ca/management creating build/lib/django_ca/tests copying ca/django_ca/tests/test_views.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_checks.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_admin_acme.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_fields.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_profiles.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_constants.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_models.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_utils.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_docs.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_managers.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_management_actions.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_verification.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_base.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_querysets.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_deprecation.py -> build/lib/django_ca/tests copying ca/django_ca/tests/__init__.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_views_ocsp.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_tasks.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_acme.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_settings.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_sphinx_extensions.py -> build/lib/django_ca/tests creating build/lib/django_ca/openssh copying ca/django_ca/openssh/extensions.py -> build/lib/django_ca/openssh copying ca/django_ca/openssh/__init__.py -> build/lib/django_ca/openssh copying ca/django_ca/openssh/constants.py -> build/lib/django_ca/openssh creating build/lib/django_ca/migrations copying ca/django_ca/migrations/0020_auto_20201213_2014.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0007_auto_20171119_1100.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0001_initial.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0025_auto_20210430_1132.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0013_certificateauthority_crl_number.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0027_certificateauthority_acme_profile.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0029_certificate_updated_certificateauthority_updated_and_more.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0012_auto_20190405_2345.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0021_auto_20210416_1557.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0005_auto_20170307_1839.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0004_auto_20170304_1442.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0008_auto_20171203_2001.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0022_auto_20210430_1124.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0026_auto_20210501_1258.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0003_auto_20170304_1434.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0002_auto_20170304_1434.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0009_auto_20181128_2050.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0011_auto_20181208_1708.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0014_auto_20190518_1046.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0010_auto_20181128_2054.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0016_auto_20190706_1548.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/__init__.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0028_alter_certificate_revoked_reason_and_more.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0023_auto_20210429_0000.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0017_auto_20200112_1657.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0024_auto_20210430_1131.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0018_certificate_profile.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0006_auto_20170505_1251.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0019_certificate_autogenerated.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0015_auto_20190518_1050.py -> build/lib/django_ca/migrations creating build/lib/django_ca/extensions copying ca/django_ca/extensions/utils.py -> build/lib/django_ca/extensions copying ca/django_ca/extensions/serialize.py -> build/lib/django_ca/extensions copying ca/django_ca/extensions/parse.py -> build/lib/django_ca/extensions copying ca/django_ca/extensions/__init__.py -> build/lib/django_ca/extensions copying ca/django_ca/extensions/text.py -> build/lib/django_ca/extensions creating build/lib/django_ca/templatetags copying ca/django_ca/templatetags/django_ca.py -> build/lib/django_ca/templatetags copying ca/django_ca/templatetags/__init__.py -> build/lib/django_ca/templatetags creating build/lib/django_ca/management/commands copying ca/django_ca/management/commands/import_ca.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/view_ca.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/dump_cert.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/notify_expiring_certs.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/dump_crl.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/cert_watchers.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/list_certs.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/sign_cert.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/resign_cert.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/view_cert.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/regenerate_ocsp_keys.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/__init__.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/init_ca.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/edit_ca.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/cache_crls.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/dump_ca.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/revoke_cert.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/convert_timestamps.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/import_cert.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/list_cas.py -> build/lib/django_ca/management/commands creating build/lib/django_ca/tests/acme copying ca/django_ca/tests/acme/__init__.py -> build/lib/django_ca/tests/acme creating build/lib/django_ca/tests/base copying ca/django_ca/tests/base/typehints.py -> build/lib/django_ca/tests/base copying ca/django_ca/tests/base/pragmas.py -> build/lib/django_ca/tests/base copying ca/django_ca/tests/base/mixins.py -> build/lib/django_ca/tests/base copying ca/django_ca/tests/base/__init__.py -> build/lib/django_ca/tests/base copying ca/django_ca/tests/base/testcases.py -> build/lib/django_ca/tests/base creating build/lib/django_ca/tests/admin copying ca/django_ca/tests/admin/test_views.py -> build/lib/django_ca/tests/admin copying ca/django_ca/tests/admin/base.py -> build/lib/django_ca/tests/admin copying ca/django_ca/tests/admin/test_admin_ca.py -> build/lib/django_ca/tests/admin copying ca/django_ca/tests/admin/test_extra_views.py -> build/lib/django_ca/tests/admin copying ca/django_ca/tests/admin/test_add_cert.py -> build/lib/django_ca/tests/admin copying ca/django_ca/tests/admin/__init__.py -> build/lib/django_ca/tests/admin copying ca/django_ca/tests/admin/test_actions.py -> build/lib/django_ca/tests/admin creating build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_list_cas.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_cache_crls.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_regenerate_ocsp_keys.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_list_certs.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_convert_timestamps.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_notify.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_import_cert.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_dump_crl.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_dump_cert.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_view_cert.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_view_ca.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_init_ca.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_sign_cert.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/__init__.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_edit_ca.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_resign_cert.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_dump_ca.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_cert_watchers.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_import_ca.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_revoke_cert.py -> build/lib/django_ca/tests/commands creating build/lib/django_ca/tests/extensions copying ca/django_ca/tests/extensions/test_unknown_extension.py -> build/lib/django_ca/tests/extensions copying ca/django_ca/tests/extensions/test_extension_values.py -> build/lib/django_ca/tests/extensions copying ca/django_ca/tests/extensions/test_doctests.py -> build/lib/django_ca/tests/extensions copying ca/django_ca/tests/extensions/__init__.py -> build/lib/django_ca/tests/extensions copying ca/django_ca/tests/extensions/test_admin_html.py -> build/lib/django_ca/tests/extensions creating build/lib/django_ca/tests/acme/views copying ca/django_ca/tests/acme/views/test_update_account.py -> build/lib/django_ca/tests/acme/views copying ca/django_ca/tests/acme/views/base.py -> build/lib/django_ca/tests/acme/views copying ca/django_ca/tests/acme/views/test_challenge.py -> build/lib/django_ca/tests/acme/views copying ca/django_ca/tests/acme/views/test_order_finalize.py -> build/lib/django_ca/tests/acme/views copying ca/django_ca/tests/acme/views/test_order.py -> build/lib/django_ca/tests/acme/views copying ca/django_ca/tests/acme/views/test_view_cert.py -> build/lib/django_ca/tests/acme/views copying ca/django_ca/tests/acme/views/test_new_nonce.py -> build/lib/django_ca/tests/acme/views copying ca/django_ca/tests/acme/views/test_authorization.py -> build/lib/django_ca/tests/acme/views copying ca/django_ca/tests/acme/views/test_new_account.py -> build/lib/django_ca/tests/acme/views copying ca/django_ca/tests/acme/views/__init__.py -> build/lib/django_ca/tests/acme/views copying ca/django_ca/tests/acme/views/test_new_order.py -> build/lib/django_ca/tests/acme/views copying ca/django_ca/tests/acme/views/test_revocation.py -> build/lib/django_ca/tests/acme/views copying ca/django_ca/tests/acme/views/test_directory.py -> build/lib/django_ca/tests/acme/views running egg_info creating ca/django_ca.egg-info writing ca/django_ca.egg-info/PKG-INFO writing dependency_links to ca/django_ca.egg-info/dependency_links.txt writing requirements to ca/django_ca.egg-info/requires.txt writing top-level names to ca/django_ca.egg-info/top_level.txt writing manifest file 'ca/django_ca.egg-info/SOURCES.txt' reading manifest file 'ca/django_ca.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'LICENSE' writing manifest file 'ca/django_ca.egg-info/SOURCES.txt' /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.static.django_ca.admin.css' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.static.django_ca.admin.css' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.static.django_ca.admin.css' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.static.django_ca.admin.css' to be distributed and are already explicitly excluding 'django_ca.static.django_ca.admin.css' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.static.django_ca.admin.js' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.static.django_ca.admin.js' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.static.django_ca.admin.js' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.static.django_ca.admin.js' to be distributed and are already explicitly excluding 'django_ca.static.django_ca.admin.js' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.templates.admin.django_ca.certificate' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.templates.admin.django_ca.certificate' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.templates.admin.django_ca.certificate' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.templates.admin.django_ca.certificate' to be distributed and are already explicitly excluding 'django_ca.templates.admin.django_ca.certificate' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.templates.admin.django_ca.certificateauthority' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.templates.admin.django_ca.certificateauthority' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.templates.admin.django_ca.certificateauthority' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.templates.admin.django_ca.certificateauthority' to be distributed and are already explicitly excluding 'django_ca.templates.admin.django_ca.certificateauthority' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.templates.django_ca.admin' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.templates.django_ca.admin' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.templates.django_ca.admin' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.templates.django_ca.admin' to be distributed and are already explicitly excluding 'django_ca.templates.django_ca.admin' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.templates.django_ca.admin.extensions' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.templates.django_ca.admin.extensions' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.templates.django_ca.admin.extensions' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.templates.django_ca.admin.extensions' to be distributed and are already explicitly excluding 'django_ca.templates.django_ca.admin.extensions' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.templates.django_ca.admin.extensions.base' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.templates.django_ca.admin.extensions.base' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.templates.django_ca.admin.extensions.base' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.templates.django_ca.admin.extensions.base' to be distributed and are already explicitly excluding 'django_ca.templates.django_ca.admin.extensions.base' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.templates.django_ca.forms.widgets' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.templates.django_ca.forms.widgets' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.templates.django_ca.forms.widgets' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.templates.django_ca.forms.widgets' to be distributed and are already explicitly excluding 'django_ca.templates.django_ca.forms.widgets' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.tests.fixtures' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.tests.fixtures' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.tests.fixtures' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.tests.fixtures' to be distributed and are already explicitly excluding 'django_ca.tests.fixtures' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.tests.fixtures.contrib' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.tests.fixtures.contrib' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.tests.fixtures.contrib' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.tests.fixtures.contrib' to be distributed and are already explicitly excluding 'django_ca.tests.fixtures.contrib' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.tests.fixtures.ocsp' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.tests.fixtures.ocsp' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.tests.fixtures.ocsp' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.tests.fixtures.ocsp' to be distributed and are already explicitly excluding 'django_ca.tests.fixtures.ocsp' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) copying ca/django_ca/py.typed -> build/lib/django_ca creating build/lib/django_ca/static creating build/lib/django_ca/static/django_ca creating build/lib/django_ca/static/django_ca/admin creating build/lib/django_ca/static/django_ca/admin/css copying ca/django_ca/static/django_ca/admin/css/base.css -> build/lib/django_ca/static/django_ca/admin/css copying ca/django_ca/static/django_ca/admin/css/certificateadmin.css -> build/lib/django_ca/static/django_ca/admin/css copying ca/django_ca/static/django_ca/admin/css/certificateauthorityadmin.css -> build/lib/django_ca/static/django_ca/admin/css copying ca/django_ca/static/django_ca/admin/css/labeledcheckboxinput.css -> build/lib/django_ca/static/django_ca/admin/css copying ca/django_ca/static/django_ca/admin/css/labeledtextinput.css -> build/lib/django_ca/static/django_ca/admin/css copying ca/django_ca/static/django_ca/admin/css/multiwidget.css -> build/lib/django_ca/static/django_ca/admin/css creating build/lib/django_ca/static/django_ca/admin/js copying ca/django_ca/static/django_ca/admin/js/ca-details.js -> build/lib/django_ca/static/django_ca/admin/js copying ca/django_ca/static/django_ca/admin/js/extensions.js -> build/lib/django_ca/static/django_ca/admin/js copying ca/django_ca/static/django_ca/admin/js/profilewidget.js -> build/lib/django_ca/static/django_ca/admin/js copying ca/django_ca/static/django_ca/admin/js/sign.js -> build/lib/django_ca/static/django_ca/admin/js creating build/lib/django_ca/templates creating build/lib/django_ca/templates/admin creating build/lib/django_ca/templates/admin/django_ca creating build/lib/django_ca/templates/admin/django_ca/certificate copying ca/django_ca/templates/admin/django_ca/certificate/add_form.html -> build/lib/django_ca/templates/admin/django_ca/certificate copying ca/django_ca/templates/admin/django_ca/certificate/change_form.html -> build/lib/django_ca/templates/admin/django_ca/certificate copying ca/django_ca/templates/admin/django_ca/certificate/revoke_form.html -> build/lib/django_ca/templates/admin/django_ca/certificate creating build/lib/django_ca/templates/admin/django_ca/certificateauthority copying ca/django_ca/templates/admin/django_ca/certificateauthority/change_form.html -> build/lib/django_ca/templates/admin/django_ca/certificateauthority creating build/lib/django_ca/templates/django_ca creating build/lib/django_ca/templates/django_ca/admin copying ca/django_ca/templates/django_ca/admin/extensions-help.html -> build/lib/django_ca/templates/django_ca/admin copying ca/django_ca/templates/django_ca/admin/submit_line.html -> build/lib/django_ca/templates/django_ca/admin creating build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/1.3.6.1.4.1.11129.2.4.2.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/1.3.6.1.4.1.11129.2.4.3.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.1.1.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.1.24.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.48.1.5.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/2.5.29.14.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/2.5.29.15.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/2.5.29.17.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/2.5.29.18.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/2.5.29.19.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/2.5.29.30.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/2.5.29.31.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/2.5.29.32.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/2.5.29.35.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/2.5.29.36.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/2.5.29.37.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/2.5.29.46.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/2.5.29.54.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/missing.html -> build/lib/django_ca/templates/django_ca/admin/extensions copying ca/django_ca/templates/django_ca/admin/extensions/unrecognized_extension.html -> build/lib/django_ca/templates/django_ca/admin/extensions creating build/lib/django_ca/templates/django_ca/admin/extensions/base copying ca/django_ca/templates/django_ca/admin/extensions/base/alternative_name_extension.html -> build/lib/django_ca/templates/django_ca/admin/extensions/base copying ca/django_ca/templates/django_ca/admin/extensions/base/base.html -> build/lib/django_ca/templates/django_ca/admin/extensions/base copying ca/django_ca/templates/django_ca/admin/extensions/base/crl_distribution_points_base.html -> build/lib/django_ca/templates/django_ca/admin/extensions/base copying ca/django_ca/templates/django_ca/admin/extensions/base/null_extension.html -> build/lib/django_ca/templates/django_ca/admin/extensions/base copying ca/django_ca/templates/django_ca/admin/extensions/base/signed_certificate_timestamps.html -> build/lib/django_ca/templates/django_ca/admin/extensions/base creating build/lib/django_ca/templates/django_ca/forms creating build/lib/django_ca/templates/django_ca/forms/widgets copying ca/django_ca/templates/django_ca/forms/widgets/critical.html -> build/lib/django_ca/templates/django_ca/forms/widgets copying ca/django_ca/templates/django_ca/forms/widgets/custommultiwidget.html -> build/lib/django_ca/templates/django_ca/forms/widgets copying ca/django_ca/templates/django_ca/forms/widgets/labeledcheckboxinput.html -> build/lib/django_ca/templates/django_ca/forms/widgets copying ca/django_ca/templates/django_ca/forms/widgets/labeledtextinput.html -> build/lib/django_ca/templates/django_ca/forms/widgets copying ca/django_ca/templates/django_ca/forms/widgets/multiwidget.html -> build/lib/django_ca/templates/django_ca/forms/widgets copying ca/django_ca/templates/django_ca/forms/widgets/profile.html -> build/lib/django_ca/templates/django_ca/forms/widgets copying ca/django_ca/templates/django_ca/forms/widgets/subjecttextinput.html -> build/lib/django_ca/templates/django_ca/forms/widgets creating build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/Dockerfile.certbot -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/all-extensions.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/all-extensions.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/all-extensions.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/all-extensions.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/all-extensions.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/alt-extensions.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/alt-extensions.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/alt-extensions.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/alt-extensions.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/alt-extensions.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/cert-data.json -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/child-cert.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/child-cert.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/child-cert.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/child-cert.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/child-cert.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/child.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/child.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/child.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/child.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/cli.ini -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/django-ca-dns-auth.py -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/django-ca-dns-clean.py -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/django-ca-test-validation.sh -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/dnsmasq.sh -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/docker-compose.certbot.yaml -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/dsa-cert.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/dsa-cert.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/dsa-cert.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/dsa-cert.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/dsa-cert.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/dsa.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/dsa.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/dsa.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/dsa.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ec-cert.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ec-cert.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ec-cert.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ec-cert.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ec-cert.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ec.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ec.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ec.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ec.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed25519-cert.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed25519-cert.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed25519-cert.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed25519-cert.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed25519-cert.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed25519.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed25519.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed25519.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed25519.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed448-cert.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed448-cert.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed448-cert.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed448-cert.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed448-cert.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed448.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed448.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed448.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/ed448.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/md5.csr.pem -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/no-extensions.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/no-extensions.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/no-extensions.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/no-extensions.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/no-extensions.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/prepared-acme-requests.json -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-client.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-client.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-client.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-client.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-client.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-enduser.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-enduser.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-enduser.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-enduser.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-enduser.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-ocsp.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-ocsp.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-ocsp.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-ocsp.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-ocsp.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-server.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-server.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-server.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-server.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-server.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-webserver.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-webserver.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-webserver.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-webserver.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/profile-webserver.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/pwd-cert.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/pwd-cert.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/pwd-cert.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/pwd-cert.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/pwd-cert.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/pwd.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/pwd.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/pwd.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/pwd.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/root-cert.csr -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/root-cert.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/root-cert.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/root-cert.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/root-cert.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/root.key -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/root.key.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/root.pub -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/root.pub.der -> build/lib/django_ca/tests/fixtures copying ca/django_ca/tests/fixtures/sha1.csr.pem -> build/lib/django_ca/tests/fixtures creating build/lib/django_ca/tests/fixtures/contrib copying ca/django_ca/tests/fixtures/contrib/cloudflare_1.pem -> build/lib/django_ca/tests/fixtures/contrib copying ca/django_ca/tests/fixtures/contrib/godaddy_derstandardat.pem -> build/lib/django_ca/tests/fixtures/contrib copying ca/django_ca/tests/fixtures/contrib/letsencrypt_jabber_at.pem -> build/lib/django_ca/tests/fixtures/contrib copying ca/django_ca/tests/fixtures/contrib/multiple_ous_and_no_ext.pem -> build/lib/django_ca/tests/fixtures/contrib creating build/lib/django_ca/tests/fixtures/ocsp copying ca/django_ca/tests/fixtures/ocsp/multiple-serial -> build/lib/django_ca/tests/fixtures/ocsp copying ca/django_ca/tests/fixtures/ocsp/no-nonce.req -> build/lib/django_ca/tests/fixtures/ocsp copying ca/django_ca/tests/fixtures/ocsp/nonce.req -> build/lib/django_ca/tests/fixtures/ocsp copying ca/django_ca/tests/fixtures/ocsp/req1 -> build/lib/django_ca/tests/fixtures/ocsp copying ca/django_ca/tests/fixtures/ocsp/unknown-serial -> build/lib/django_ca/tests/fixtures/ocsp installing to build/bdist.linux-armv7l/wheel running install running install_lib creating build/bdist.linux-armv7l creating build/bdist.linux-armv7l/wheel creating build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/typehints.py -> build/bdist.linux-armv7l/wheel/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/responses.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/validation.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/views.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/utils.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/errors.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/messages.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/constants.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/forms.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/admin.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/managers.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/checks.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/widgets.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/ca_settings.py -> build/bdist.linux-armv7l/wheel/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/management copying build/lib/django_ca/management/base.py -> build/bdist.linux-armv7l/wheel/django_ca/management copying build/lib/django_ca/management/actions.py -> build/bdist.linux-armv7l/wheel/django_ca/management copying build/lib/django_ca/management/mixins.py -> build/bdist.linux-armv7l/wheel/django_ca/management copying build/lib/django_ca/management/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/management creating build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/import_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/view_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/dump_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/notify_expiring_certs.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/dump_crl.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/cert_watchers.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/list_certs.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/sign_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/resign_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/view_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/regenerate_ocsp_keys.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/init_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/edit_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/cache_crls.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/dump_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/revoke_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/convert_timestamps.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/import_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/list_cas.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/py.typed -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/signals.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/profiles.py -> build/bdist.linux-armv7l/wheel/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_views.py -> build/bdist.linux-armv7l/wheel/django_ca/tests creating build/bdist.linux-armv7l/wheel/django_ca/tests/acme copying build/lib/django_ca/tests/acme/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme creating build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_update_account.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/base.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_challenge.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_order_finalize.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_order.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_view_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_new_nonce.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_authorization.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_new_account.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_new_order.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_revocation.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_directory.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views creating build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/Dockerfile.certbot -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures creating build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/req1 -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/multiple-serial -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/nonce.req -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/no-nonce.req -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/unknown-serial -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/sha1.csr.pem -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/django-ca-test-validation.sh -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/django-ca-dns-auth.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/md5.csr.pem -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/cert-data.json -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/prepared-acme-requests.json -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures creating build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/letsencrypt_jabber_at.pem -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/multiple_ous_and_no_ext.pem -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/cloudflare_1.pem -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/godaddy_derstandardat.pem -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/dnsmasq.sh -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/docker-compose.certbot.yaml -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/cli.ini -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/django-ca-dns-clean.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/test_checks.py -> build/bdist.linux-armv7l/wheel/django_ca/tests creating build/bdist.linux-armv7l/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/typehints.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/pragmas.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/mixins.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/testcases.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/base copying build/lib/django_ca/tests/test_admin_acme.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_fields.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_profiles.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_constants.py -> build/bdist.linux-armv7l/wheel/django_ca/tests creating build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_views.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/base.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_admin_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_extra_views.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_add_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_actions.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/test_models.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_utils.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_docs.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_managers.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_management_actions.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_verification.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_base.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_querysets.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_deprecation.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_views_ocsp.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_tasks.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_acme.py -> build/bdist.linux-armv7l/wheel/django_ca/tests creating build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_list_cas.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_cache_crls.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_regenerate_ocsp_keys.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_list_certs.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_convert_timestamps.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_notify.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_import_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_dump_crl.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_dump_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_view_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_view_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_init_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_sign_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_edit_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_resign_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_dump_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_cert_watchers.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_import_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_revoke_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/test_settings.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_sphinx_extensions.py -> build/bdist.linux-armv7l/wheel/django_ca/tests creating build/bdist.linux-armv7l/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_unknown_extension.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_extension_values.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_doctests.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_admin_html.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/extensions creating build/bdist.linux-armv7l/wheel/django_ca/openssh copying build/lib/django_ca/openssh/extensions.py -> build/bdist.linux-armv7l/wheel/django_ca/openssh copying build/lib/django_ca/openssh/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/openssh copying build/lib/django_ca/openssh/constants.py -> build/bdist.linux-armv7l/wheel/django_ca/openssh copying build/lib/django_ca/converters.py -> build/bdist.linux-armv7l/wheel/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/static creating build/bdist.linux-armv7l/wheel/django_ca/static/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin creating build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/certificateadmin.css -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/base.css -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/labeledcheckboxinput.css -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/certificateauthorityadmin.css -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/labeledtextinput.css -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/multiwidget.css -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/css creating build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/sign.js -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/extensions.js -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/ca-details.js -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/profilewidget.js -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/deprecation.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/views.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/models.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/utils.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/modelfields.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/urls.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/fields.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/tasks.py -> build/bdist.linux-armv7l/wheel/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/templates creating build/bdist.linux-armv7l/wheel/django_ca/templates/admin creating build/bdist.linux-armv7l/wheel/django_ca/templates/admin/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/templates/admin/django_ca/certificateauthority copying build/lib/django_ca/templates/admin/django_ca/certificateauthority/change_form.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/admin/django_ca/certificateauthority creating build/bdist.linux-armv7l/wheel/django_ca/templates/admin/django_ca/certificate copying build/lib/django_ca/templates/admin/django_ca/certificate/add_form.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/admin/django_ca/certificate copying build/lib/django_ca/templates/admin/django_ca/certificate/change_form.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/admin/django_ca/certificate copying build/lib/django_ca/templates/admin/django_ca/certificate/revoke_form.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/admin/django_ca/certificate creating build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin copying build/lib/django_ca/templates/django_ca/admin/extensions-help.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin copying build/lib/django_ca/templates/django_ca/admin/submit_line.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin creating build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.31.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions creating build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions/base copying build/lib/django_ca/templates/django_ca/admin/extensions/base/alternative_name_extension.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions/base copying build/lib/django_ca/templates/django_ca/admin/extensions/base/crl_distribution_points_base.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions/base copying build/lib/django_ca/templates/django_ca/admin/extensions/base/base.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions/base copying build/lib/django_ca/templates/django_ca/admin/extensions/base/null_extension.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions/base copying build/lib/django_ca/templates/django_ca/admin/extensions/base/signed_certificate_timestamps.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions/base copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.15.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/missing.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.36.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.19.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.54.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.46.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.32.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.1.1.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/1.3.6.1.4.1.11129.2.4.3.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/1.3.6.1.4.1.11129.2.4.2.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.18.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.37.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.35.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.17.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.14.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.48.1.5.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/unrecognized_extension.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.1.24.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.30.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions creating build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms creating build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/profile.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/multiwidget.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/critical.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/subjecttextinput.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/labeledcheckboxinput.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/custommultiwidget.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/labeledtextinput.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/constants.py -> build/bdist.linux-armv7l/wheel/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0020_auto_20201213_2014.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0007_auto_20171119_1100.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0001_initial.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0025_auto_20210430_1132.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0013_certificateauthority_crl_number.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0027_certificateauthority_acme_profile.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0029_certificate_updated_certificateauthority_updated_and_more.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0012_auto_20190405_2345.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0021_auto_20210416_1557.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0005_auto_20170307_1839.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0004_auto_20170304_1442.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0008_auto_20171203_2001.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0022_auto_20210430_1124.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0026_auto_20210501_1258.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0003_auto_20170304_1434.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0002_auto_20170304_1434.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0009_auto_20181128_2050.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0011_auto_20181208_1708.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0014_auto_20190518_1046.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0010_auto_20181128_2054.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0016_auto_20190706_1548.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0028_alter_certificate_revoked_reason_and_more.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0023_auto_20210429_0000.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0017_auto_20200112_1657.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0024_auto_20210430_1131.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0018_certificate_profile.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0006_auto_20170505_1251.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0019_certificate_autogenerated.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0015_auto_20190518_1050.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/querysets.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/apps.py -> build/bdist.linux-armv7l/wheel/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/extensions copying build/lib/django_ca/extensions/utils.py -> build/bdist.linux-armv7l/wheel/django_ca/extensions copying build/lib/django_ca/extensions/serialize.py -> build/bdist.linux-armv7l/wheel/django_ca/extensions copying build/lib/django_ca/extensions/parse.py -> build/bdist.linux-armv7l/wheel/django_ca/extensions copying build/lib/django_ca/extensions/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/extensions copying build/lib/django_ca/extensions/text.py -> build/bdist.linux-armv7l/wheel/django_ca/extensions creating build/bdist.linux-armv7l/wheel/django_ca/templatetags copying build/lib/django_ca/templatetags/django_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/templatetags copying build/lib/django_ca/templatetags/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/templatetags running install_egg_info Copying ca/django_ca.egg-info to build/bdist.linux-armv7l/wheel/django_ca-1.25.0.egg-info running install_scripts creating build/bdist.linux-armv7l/wheel/django_ca-1.25.0.dist-info/WHEEL creating '/build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/.tmp-bpv32v8r/django_ca-1.25.0-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it adding 'django_ca/__init__.py' adding 'django_ca/admin.py' adding 'django_ca/apps.py' adding 'django_ca/ca_settings.py' adding 'django_ca/checks.py' adding 'django_ca/constants.py' adding 'django_ca/converters.py' adding 'django_ca/deprecation.py' adding 'django_ca/fields.py' adding 'django_ca/forms.py' adding 'django_ca/managers.py' adding 'django_ca/modelfields.py' adding 'django_ca/models.py' adding 'django_ca/profiles.py' adding 'django_ca/py.typed' adding 'django_ca/querysets.py' adding 'django_ca/signals.py' adding 'django_ca/tasks.py' adding 'django_ca/typehints.py' adding 'django_ca/urls.py' adding 'django_ca/utils.py' adding 'django_ca/views.py' adding 'django_ca/widgets.py' adding 'django_ca/acme/__init__.py' adding 'django_ca/acme/constants.py' adding 'django_ca/acme/errors.py' adding 'django_ca/acme/messages.py' adding 'django_ca/acme/responses.py' adding 'django_ca/acme/utils.py' adding 'django_ca/acme/validation.py' adding 'django_ca/acme/views.py' adding 'django_ca/extensions/__init__.py' adding 'django_ca/extensions/parse.py' adding 'django_ca/extensions/serialize.py' adding 'django_ca/extensions/text.py' adding 'django_ca/extensions/utils.py' adding 'django_ca/management/__init__.py' adding 'django_ca/management/actions.py' adding 'django_ca/management/base.py' adding 'django_ca/management/mixins.py' adding 'django_ca/management/commands/__init__.py' adding 'django_ca/management/commands/cache_crls.py' adding 'django_ca/management/commands/cert_watchers.py' adding 'django_ca/management/commands/convert_timestamps.py' adding 'django_ca/management/commands/dump_ca.py' adding 'django_ca/management/commands/dump_cert.py' adding 'django_ca/management/commands/dump_crl.py' adding 'django_ca/management/commands/edit_ca.py' adding 'django_ca/management/commands/import_ca.py' adding 'django_ca/management/commands/import_cert.py' adding 'django_ca/management/commands/init_ca.py' adding 'django_ca/management/commands/list_cas.py' adding 'django_ca/management/commands/list_certs.py' adding 'django_ca/management/commands/notify_expiring_certs.py' adding 'django_ca/management/commands/regenerate_ocsp_keys.py' adding 'django_ca/management/commands/resign_cert.py' adding 'django_ca/management/commands/revoke_cert.py' adding 'django_ca/management/commands/sign_cert.py' adding 'django_ca/management/commands/view_ca.py' adding 'django_ca/management/commands/view_cert.py' adding 'django_ca/migrations/0001_initial.py' adding 'django_ca/migrations/0002_auto_20170304_1434.py' adding 'django_ca/migrations/0003_auto_20170304_1434.py' adding 'django_ca/migrations/0004_auto_20170304_1442.py' adding 'django_ca/migrations/0005_auto_20170307_1839.py' adding 'django_ca/migrations/0006_auto_20170505_1251.py' adding 'django_ca/migrations/0007_auto_20171119_1100.py' adding 'django_ca/migrations/0008_auto_20171203_2001.py' adding 'django_ca/migrations/0009_auto_20181128_2050.py' adding 'django_ca/migrations/0010_auto_20181128_2054.py' adding 'django_ca/migrations/0011_auto_20181208_1708.py' adding 'django_ca/migrations/0012_auto_20190405_2345.py' adding 'django_ca/migrations/0013_certificateauthority_crl_number.py' adding 'django_ca/migrations/0014_auto_20190518_1046.py' adding 'django_ca/migrations/0015_auto_20190518_1050.py' adding 'django_ca/migrations/0016_auto_20190706_1548.py' adding 'django_ca/migrations/0017_auto_20200112_1657.py' adding 'django_ca/migrations/0018_certificate_profile.py' adding 'django_ca/migrations/0019_certificate_autogenerated.py' adding 'django_ca/migrations/0020_auto_20201213_2014.py' adding 'django_ca/migrations/0021_auto_20210416_1557.py' adding 'django_ca/migrations/0022_auto_20210430_1124.py' adding 'django_ca/migrations/0023_auto_20210429_0000.py' adding 'django_ca/migrations/0024_auto_20210430_1131.py' adding 'django_ca/migrations/0025_auto_20210430_1132.py' adding 'django_ca/migrations/0026_auto_20210501_1258.py' adding 'django_ca/migrations/0027_certificateauthority_acme_profile.py' adding 'django_ca/migrations/0028_alter_certificate_revoked_reason_and_more.py' adding 'django_ca/migrations/0029_certificate_updated_certificateauthority_updated_and_more.py' adding 'django_ca/migrations/__init__.py' adding 'django_ca/openssh/__init__.py' adding 'django_ca/openssh/constants.py' adding 'django_ca/openssh/extensions.py' adding 'django_ca/static/django_ca/admin/css/base.css' adding 'django_ca/static/django_ca/admin/css/certificateadmin.css' adding 'django_ca/static/django_ca/admin/css/certificateauthorityadmin.css' adding 'django_ca/static/django_ca/admin/css/labeledcheckboxinput.css' adding 'django_ca/static/django_ca/admin/css/labeledtextinput.css' adding 'django_ca/static/django_ca/admin/css/multiwidget.css' adding 'django_ca/static/django_ca/admin/js/ca-details.js' adding 'django_ca/static/django_ca/admin/js/extensions.js' adding 'django_ca/static/django_ca/admin/js/profilewidget.js' adding 'django_ca/static/django_ca/admin/js/sign.js' adding 'django_ca/templates/admin/django_ca/certificate/add_form.html' adding 'django_ca/templates/admin/django_ca/certificate/change_form.html' adding 'django_ca/templates/admin/django_ca/certificate/revoke_form.html' adding 'django_ca/templates/admin/django_ca/certificateauthority/change_form.html' adding 'django_ca/templates/django_ca/admin/extensions-help.html' adding 'django_ca/templates/django_ca/admin/submit_line.html' adding 'django_ca/templates/django_ca/admin/extensions/1.3.6.1.4.1.11129.2.4.2.html' adding 'django_ca/templates/django_ca/admin/extensions/1.3.6.1.4.1.11129.2.4.3.html' adding 'django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.1.1.html' adding 'django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.1.24.html' adding 'django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.48.1.5.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.14.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.15.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.17.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.18.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.19.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.30.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.31.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.32.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.35.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.36.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.37.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.46.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.54.html' adding 'django_ca/templates/django_ca/admin/extensions/missing.html' adding 'django_ca/templates/django_ca/admin/extensions/unrecognized_extension.html' adding 'django_ca/templates/django_ca/admin/extensions/base/alternative_name_extension.html' adding 'django_ca/templates/django_ca/admin/extensions/base/base.html' adding 'django_ca/templates/django_ca/admin/extensions/base/crl_distribution_points_base.html' adding 'django_ca/templates/django_ca/admin/extensions/base/null_extension.html' adding 'django_ca/templates/django_ca/admin/extensions/base/signed_certificate_timestamps.html' adding 'django_ca/templates/django_ca/forms/widgets/critical.html' adding 'django_ca/templates/django_ca/forms/widgets/custommultiwidget.html' adding 'django_ca/templates/django_ca/forms/widgets/labeledcheckboxinput.html' adding 'django_ca/templates/django_ca/forms/widgets/labeledtextinput.html' adding 'django_ca/templates/django_ca/forms/widgets/multiwidget.html' adding 'django_ca/templates/django_ca/forms/widgets/profile.html' adding 'django_ca/templates/django_ca/forms/widgets/subjecttextinput.html' adding 'django_ca/templatetags/__init__.py' adding 'django_ca/templatetags/django_ca.py' adding 'django_ca/tests/__init__.py' adding 'django_ca/tests/test_acme.py' adding 'django_ca/tests/test_admin_acme.py' adding 'django_ca/tests/test_base.py' adding 'django_ca/tests/test_checks.py' adding 'django_ca/tests/test_constants.py' adding 'django_ca/tests/test_deprecation.py' adding 'django_ca/tests/test_docs.py' adding 'django_ca/tests/test_fields.py' adding 'django_ca/tests/test_management_actions.py' adding 'django_ca/tests/test_managers.py' adding 'django_ca/tests/test_models.py' adding 'django_ca/tests/test_profiles.py' adding 'django_ca/tests/test_querysets.py' adding 'django_ca/tests/test_settings.py' adding 'django_ca/tests/test_sphinx_extensions.py' adding 'django_ca/tests/test_tasks.py' adding 'django_ca/tests/test_utils.py' adding 'django_ca/tests/test_verification.py' adding 'django_ca/tests/test_views.py' adding 'django_ca/tests/test_views_ocsp.py' adding 'django_ca/tests/acme/__init__.py' adding 'django_ca/tests/acme/views/__init__.py' adding 'django_ca/tests/acme/views/base.py' adding 'django_ca/tests/acme/views/test_authorization.py' adding 'django_ca/tests/acme/views/test_challenge.py' adding 'django_ca/tests/acme/views/test_directory.py' adding 'django_ca/tests/acme/views/test_new_account.py' adding 'django_ca/tests/acme/views/test_new_nonce.py' adding 'django_ca/tests/acme/views/test_new_order.py' adding 'django_ca/tests/acme/views/test_order.py' adding 'django_ca/tests/acme/views/test_order_finalize.py' adding 'django_ca/tests/acme/views/test_revocation.py' adding 'django_ca/tests/acme/views/test_update_account.py' adding 'django_ca/tests/acme/views/test_view_cert.py' adding 'django_ca/tests/admin/__init__.py' adding 'django_ca/tests/admin/base.py' adding 'django_ca/tests/admin/test_actions.py' adding 'django_ca/tests/admin/test_add_cert.py' adding 'django_ca/tests/admin/test_admin_ca.py' adding 'django_ca/tests/admin/test_extra_views.py' adding 'django_ca/tests/admin/test_views.py' adding 'django_ca/tests/base/__init__.py' adding 'django_ca/tests/base/mixins.py' adding 'django_ca/tests/base/pragmas.py' adding 'django_ca/tests/base/testcases.py' adding 'django_ca/tests/base/typehints.py' adding 'django_ca/tests/commands/__init__.py' adding 'django_ca/tests/commands/test_cache_crls.py' adding 'django_ca/tests/commands/test_cert_watchers.py' adding 'django_ca/tests/commands/test_convert_timestamps.py' adding 'django_ca/tests/commands/test_dump_ca.py' adding 'django_ca/tests/commands/test_dump_cert.py' adding 'django_ca/tests/commands/test_dump_crl.py' adding 'django_ca/tests/commands/test_edit_ca.py' adding 'django_ca/tests/commands/test_import_ca.py' adding 'django_ca/tests/commands/test_import_cert.py' adding 'django_ca/tests/commands/test_init_ca.py' adding 'django_ca/tests/commands/test_list_cas.py' adding 'django_ca/tests/commands/test_list_certs.py' adding 'django_ca/tests/commands/test_notify.py' adding 'django_ca/tests/commands/test_regenerate_ocsp_keys.py' adding 'django_ca/tests/commands/test_resign_cert.py' adding 'django_ca/tests/commands/test_revoke_cert.py' adding 'django_ca/tests/commands/test_sign_cert.py' adding 'django_ca/tests/commands/test_view_ca.py' adding 'django_ca/tests/commands/test_view_cert.py' adding 'django_ca/tests/extensions/__init__.py' adding 'django_ca/tests/extensions/test_admin_html.py' adding 'django_ca/tests/extensions/test_doctests.py' adding 'django_ca/tests/extensions/test_extension_values.py' adding 'django_ca/tests/extensions/test_unknown_extension.py' adding 'django_ca/tests/fixtures/Dockerfile.certbot' adding 'django_ca/tests/fixtures/all-extensions.csr' adding 'django_ca/tests/fixtures/all-extensions.key' adding 'django_ca/tests/fixtures/all-extensions.key.der' adding 'django_ca/tests/fixtures/all-extensions.pub' adding 'django_ca/tests/fixtures/all-extensions.pub.der' adding 'django_ca/tests/fixtures/alt-extensions.csr' adding 'django_ca/tests/fixtures/alt-extensions.key' adding 'django_ca/tests/fixtures/alt-extensions.key.der' adding 'django_ca/tests/fixtures/alt-extensions.pub' adding 'django_ca/tests/fixtures/alt-extensions.pub.der' adding 'django_ca/tests/fixtures/cert-data.json' adding 'django_ca/tests/fixtures/child-cert.csr' adding 'django_ca/tests/fixtures/child-cert.key' adding 'django_ca/tests/fixtures/child-cert.key.der' adding 'django_ca/tests/fixtures/child-cert.pub' adding 'django_ca/tests/fixtures/child-cert.pub.der' adding 'django_ca/tests/fixtures/child.key' adding 'django_ca/tests/fixtures/child.key.der' adding 'django_ca/tests/fixtures/child.pub' adding 'django_ca/tests/fixtures/child.pub.der' adding 'django_ca/tests/fixtures/cli.ini' adding 'django_ca/tests/fixtures/django-ca-dns-auth.py' adding 'django_ca/tests/fixtures/django-ca-dns-clean.py' adding 'django_ca/tests/fixtures/django-ca-test-validation.sh' adding 'django_ca/tests/fixtures/dnsmasq.sh' adding 'django_ca/tests/fixtures/docker-compose.certbot.yaml' adding 'django_ca/tests/fixtures/dsa-cert.csr' adding 'django_ca/tests/fixtures/dsa-cert.key' adding 'django_ca/tests/fixtures/dsa-cert.key.der' adding 'django_ca/tests/fixtures/dsa-cert.pub' adding 'django_ca/tests/fixtures/dsa-cert.pub.der' adding 'django_ca/tests/fixtures/dsa.key' adding 'django_ca/tests/fixtures/dsa.key.der' adding 'django_ca/tests/fixtures/dsa.pub' adding 'django_ca/tests/fixtures/dsa.pub.der' adding 'django_ca/tests/fixtures/ec-cert.csr' adding 'django_ca/tests/fixtures/ec-cert.key' adding 'django_ca/tests/fixtures/ec-cert.key.der' adding 'django_ca/tests/fixtures/ec-cert.pub' adding 'django_ca/tests/fixtures/ec-cert.pub.der' adding 'django_ca/tests/fixtures/ec.key' adding 'django_ca/tests/fixtures/ec.key.der' adding 'django_ca/tests/fixtures/ec.pub' adding 'django_ca/tests/fixtures/ec.pub.der' adding 'django_ca/tests/fixtures/ed25519-cert.csr' adding 'django_ca/tests/fixtures/ed25519-cert.key' adding 'django_ca/tests/fixtures/ed25519-cert.key.der' adding 'django_ca/tests/fixtures/ed25519-cert.pub' adding 'django_ca/tests/fixtures/ed25519-cert.pub.der' adding 'django_ca/tests/fixtures/ed25519.key' adding 'django_ca/tests/fixtures/ed25519.key.der' adding 'django_ca/tests/fixtures/ed25519.pub' adding 'django_ca/tests/fixtures/ed25519.pub.der' adding 'django_ca/tests/fixtures/ed448-cert.csr' adding 'django_ca/tests/fixtures/ed448-cert.key' adding 'django_ca/tests/fixtures/ed448-cert.key.der' adding 'django_ca/tests/fixtures/ed448-cert.pub' adding 'django_ca/tests/fixtures/ed448-cert.pub.der' adding 'django_ca/tests/fixtures/ed448.key' adding 'django_ca/tests/fixtures/ed448.key.der' adding 'django_ca/tests/fixtures/ed448.pub' adding 'django_ca/tests/fixtures/ed448.pub.der' adding 'django_ca/tests/fixtures/md5.csr.pem' adding 'django_ca/tests/fixtures/no-extensions.csr' adding 'django_ca/tests/fixtures/no-extensions.key' adding 'django_ca/tests/fixtures/no-extensions.key.der' adding 'django_ca/tests/fixtures/no-extensions.pub' adding 'django_ca/tests/fixtures/no-extensions.pub.der' adding 'django_ca/tests/fixtures/prepared-acme-requests.json' adding 'django_ca/tests/fixtures/profile-client.csr' adding 'django_ca/tests/fixtures/profile-client.key' adding 'django_ca/tests/fixtures/profile-client.key.der' adding 'django_ca/tests/fixtures/profile-client.pub' adding 'django_ca/tests/fixtures/profile-client.pub.der' adding 'django_ca/tests/fixtures/profile-enduser.csr' adding 'django_ca/tests/fixtures/profile-enduser.key' adding 'django_ca/tests/fixtures/profile-enduser.key.der' adding 'django_ca/tests/fixtures/profile-enduser.pub' adding 'django_ca/tests/fixtures/profile-enduser.pub.der' adding 'django_ca/tests/fixtures/profile-ocsp.csr' adding 'django_ca/tests/fixtures/profile-ocsp.key' adding 'django_ca/tests/fixtures/profile-ocsp.key.der' adding 'django_ca/tests/fixtures/profile-ocsp.pub' adding 'django_ca/tests/fixtures/profile-ocsp.pub.der' adding 'django_ca/tests/fixtures/profile-server.csr' adding 'django_ca/tests/fixtures/profile-server.key' adding 'django_ca/tests/fixtures/profile-server.key.der' adding 'django_ca/tests/fixtures/profile-server.pub' adding 'django_ca/tests/fixtures/profile-server.pub.der' adding 'django_ca/tests/fixtures/profile-webserver.csr' adding 'django_ca/tests/fixtures/profile-webserver.key' adding 'django_ca/tests/fixtures/profile-webserver.key.der' adding 'django_ca/tests/fixtures/profile-webserver.pub' adding 'django_ca/tests/fixtures/profile-webserver.pub.der' adding 'django_ca/tests/fixtures/pwd-cert.csr' adding 'django_ca/tests/fixtures/pwd-cert.key' adding 'django_ca/tests/fixtures/pwd-cert.key.der' adding 'django_ca/tests/fixtures/pwd-cert.pub' adding 'django_ca/tests/fixtures/pwd-cert.pub.der' adding 'django_ca/tests/fixtures/pwd.key' adding 'django_ca/tests/fixtures/pwd.key.der' adding 'django_ca/tests/fixtures/pwd.pub' adding 'django_ca/tests/fixtures/pwd.pub.der' adding 'django_ca/tests/fixtures/root-cert.csr' adding 'django_ca/tests/fixtures/root-cert.key' adding 'django_ca/tests/fixtures/root-cert.key.der' adding 'django_ca/tests/fixtures/root-cert.pub' adding 'django_ca/tests/fixtures/root-cert.pub.der' adding 'django_ca/tests/fixtures/root.key' adding 'django_ca/tests/fixtures/root.key.der' adding 'django_ca/tests/fixtures/root.pub' adding 'django_ca/tests/fixtures/root.pub.der' adding 'django_ca/tests/fixtures/sha1.csr.pem' adding 'django_ca/tests/fixtures/contrib/cloudflare_1.pem' adding 'django_ca/tests/fixtures/contrib/godaddy_derstandardat.pem' adding 'django_ca/tests/fixtures/contrib/letsencrypt_jabber_at.pem' adding 'django_ca/tests/fixtures/contrib/multiple_ous_and_no_ext.pem' adding 'django_ca/tests/fixtures/ocsp/multiple-serial' adding 'django_ca/tests/fixtures/ocsp/no-nonce.req' adding 'django_ca/tests/fixtures/ocsp/nonce.req' adding 'django_ca/tests/fixtures/ocsp/req1' adding 'django_ca/tests/fixtures/ocsp/unknown-serial' adding 'django_ca-1.25.0.dist-info/LICENSE' adding 'django_ca-1.25.0.dist-info/METADATA' adding 'django_ca-1.25.0.dist-info/WHEEL' adding 'django_ca-1.25.0.dist-info/top_level.txt' adding 'django_ca-1.25.0.dist-info/RECORD' removing build/bdist.linux-armv7l/wheel Successfully built django_ca-1.25.0-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.12 with "installer" module I: pybuild plugin_pyproject:129: Building wheel for python3.11 with "build" module I: pybuild base:311: python3.11 -m build --skip-dependency-check --no-isolation --wheel --outdir /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca * Building wheel... running bdist_wheel running build running build_py running egg_info writing ca/django_ca.egg-info/PKG-INFO writing dependency_links to ca/django_ca.egg-info/dependency_links.txt writing requirements to ca/django_ca.egg-info/requires.txt writing top-level names to ca/django_ca.egg-info/top_level.txt reading manifest file 'ca/django_ca.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'LICENSE' writing manifest file 'ca/django_ca.egg-info/SOURCES.txt' /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.static.django_ca.admin.css' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.static.django_ca.admin.css' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.static.django_ca.admin.css' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.static.django_ca.admin.css' to be distributed and are already explicitly excluding 'django_ca.static.django_ca.admin.css' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.static.django_ca.admin.js' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.static.django_ca.admin.js' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.static.django_ca.admin.js' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.static.django_ca.admin.js' to be distributed and are already explicitly excluding 'django_ca.static.django_ca.admin.js' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.templates.admin.django_ca.certificate' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.templates.admin.django_ca.certificate' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.templates.admin.django_ca.certificate' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.templates.admin.django_ca.certificate' to be distributed and are already explicitly excluding 'django_ca.templates.admin.django_ca.certificate' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.templates.admin.django_ca.certificateauthority' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.templates.admin.django_ca.certificateauthority' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.templates.admin.django_ca.certificateauthority' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.templates.admin.django_ca.certificateauthority' to be distributed and are already explicitly excluding 'django_ca.templates.admin.django_ca.certificateauthority' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.templates.django_ca.admin' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.templates.django_ca.admin' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.templates.django_ca.admin' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.templates.django_ca.admin' to be distributed and are already explicitly excluding 'django_ca.templates.django_ca.admin' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.templates.django_ca.admin.extensions' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.templates.django_ca.admin.extensions' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.templates.django_ca.admin.extensions' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.templates.django_ca.admin.extensions' to be distributed and are already explicitly excluding 'django_ca.templates.django_ca.admin.extensions' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.templates.django_ca.admin.extensions.base' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.templates.django_ca.admin.extensions.base' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.templates.django_ca.admin.extensions.base' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.templates.django_ca.admin.extensions.base' to be distributed and are already explicitly excluding 'django_ca.templates.django_ca.admin.extensions.base' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.templates.django_ca.forms.widgets' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.templates.django_ca.forms.widgets' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.templates.django_ca.forms.widgets' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.templates.django_ca.forms.widgets' to be distributed and are already explicitly excluding 'django_ca.templates.django_ca.forms.widgets' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.tests.fixtures' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.tests.fixtures' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.tests.fixtures' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.tests.fixtures' to be distributed and are already explicitly excluding 'django_ca.tests.fixtures' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.tests.fixtures.contrib' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.tests.fixtures.contrib' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.tests.fixtures.contrib' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.tests.fixtures.contrib' to be distributed and are already explicitly excluding 'django_ca.tests.fixtures.contrib' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'django_ca.tests.fixtures.ocsp' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'django_ca.tests.fixtures.ocsp' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'django_ca.tests.fixtures.ocsp' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'django_ca.tests.fixtures.ocsp' to be distributed and are already explicitly excluding 'django_ca.tests.fixtures.ocsp' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) installing to build/bdist.linux-armv7l/wheel running install running install_lib creating build/bdist.linux-armv7l/wheel creating build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/typehints.py -> build/bdist.linux-armv7l/wheel/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/responses.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/validation.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/views.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/utils.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/errors.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/messages.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/acme/constants.py -> build/bdist.linux-armv7l/wheel/django_ca/acme copying build/lib/django_ca/forms.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/admin.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/managers.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/checks.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/widgets.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/ca_settings.py -> build/bdist.linux-armv7l/wheel/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/management copying build/lib/django_ca/management/base.py -> build/bdist.linux-armv7l/wheel/django_ca/management copying build/lib/django_ca/management/actions.py -> build/bdist.linux-armv7l/wheel/django_ca/management copying build/lib/django_ca/management/mixins.py -> build/bdist.linux-armv7l/wheel/django_ca/management copying build/lib/django_ca/management/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/management creating build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/import_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/view_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/dump_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/notify_expiring_certs.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/dump_crl.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/cert_watchers.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/list_certs.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/sign_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/resign_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/view_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/regenerate_ocsp_keys.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/init_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/edit_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/cache_crls.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/dump_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/revoke_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/convert_timestamps.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/import_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/list_cas.py -> build/bdist.linux-armv7l/wheel/django_ca/management/commands copying build/lib/django_ca/py.typed -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/signals.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/profiles.py -> build/bdist.linux-armv7l/wheel/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_views.py -> build/bdist.linux-armv7l/wheel/django_ca/tests creating build/bdist.linux-armv7l/wheel/django_ca/tests/acme copying build/lib/django_ca/tests/acme/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme creating build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_update_account.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/base.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_challenge.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_order_finalize.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_order.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_view_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_new_nonce.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_authorization.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_new_account.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_new_order.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_revocation.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_directory.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/acme/views creating build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/Dockerfile.certbot -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures creating build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/req1 -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/multiple-serial -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/nonce.req -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/no-nonce.req -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/unknown-serial -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/sha1.csr.pem -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/django-ca-test-validation.sh -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/django-ca-dns-auth.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/md5.csr.pem -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/cert-data.json -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/prepared-acme-requests.json -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures creating build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/letsencrypt_jabber_at.pem -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/multiple_ous_and_no_ext.pem -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/cloudflare_1.pem -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/godaddy_derstandardat.pem -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/dnsmasq.sh -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/docker-compose.certbot.yaml -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.csr -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/cli.ini -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/django-ca-dns-clean.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.key.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.pub.der -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.key -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.pub -> build/bdist.linux-armv7l/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/test_checks.py -> build/bdist.linux-armv7l/wheel/django_ca/tests creating build/bdist.linux-armv7l/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/typehints.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/pragmas.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/mixins.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/testcases.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/base copying build/lib/django_ca/tests/test_admin_acme.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_fields.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_profiles.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_constants.py -> build/bdist.linux-armv7l/wheel/django_ca/tests creating build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_views.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/base.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_admin_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_extra_views.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_add_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_actions.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/test_models.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_utils.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_docs.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_managers.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_management_actions.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_verification.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_base.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_querysets.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_deprecation.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_views_ocsp.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_tasks.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_acme.py -> build/bdist.linux-armv7l/wheel/django_ca/tests creating build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_list_cas.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_cache_crls.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_regenerate_ocsp_keys.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_list_certs.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_convert_timestamps.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_notify.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_import_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_dump_crl.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_dump_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_view_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_view_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_init_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_sign_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_edit_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_resign_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_dump_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_cert_watchers.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_import_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_revoke_cert.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/test_settings.py -> build/bdist.linux-armv7l/wheel/django_ca/tests copying build/lib/django_ca/tests/test_sphinx_extensions.py -> build/bdist.linux-armv7l/wheel/django_ca/tests creating build/bdist.linux-armv7l/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_unknown_extension.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_extension_values.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_doctests.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_admin_html.py -> build/bdist.linux-armv7l/wheel/django_ca/tests/extensions creating build/bdist.linux-armv7l/wheel/django_ca/openssh copying build/lib/django_ca/openssh/extensions.py -> build/bdist.linux-armv7l/wheel/django_ca/openssh copying build/lib/django_ca/openssh/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/openssh copying build/lib/django_ca/openssh/constants.py -> build/bdist.linux-armv7l/wheel/django_ca/openssh copying build/lib/django_ca/converters.py -> build/bdist.linux-armv7l/wheel/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/static creating build/bdist.linux-armv7l/wheel/django_ca/static/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin creating build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/certificateadmin.css -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/base.css -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/labeledcheckboxinput.css -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/certificateauthorityadmin.css -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/labeledtextinput.css -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/multiwidget.css -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/css creating build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/sign.js -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/extensions.js -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/ca-details.js -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/profilewidget.js -> build/bdist.linux-armv7l/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/deprecation.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/views.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/models.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/utils.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/modelfields.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/urls.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/fields.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/tasks.py -> build/bdist.linux-armv7l/wheel/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/templates creating build/bdist.linux-armv7l/wheel/django_ca/templates/admin creating build/bdist.linux-armv7l/wheel/django_ca/templates/admin/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/templates/admin/django_ca/certificateauthority copying build/lib/django_ca/templates/admin/django_ca/certificateauthority/change_form.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/admin/django_ca/certificateauthority creating build/bdist.linux-armv7l/wheel/django_ca/templates/admin/django_ca/certificate copying build/lib/django_ca/templates/admin/django_ca/certificate/add_form.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/admin/django_ca/certificate copying build/lib/django_ca/templates/admin/django_ca/certificate/change_form.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/admin/django_ca/certificate copying build/lib/django_ca/templates/admin/django_ca/certificate/revoke_form.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/admin/django_ca/certificate creating build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin copying build/lib/django_ca/templates/django_ca/admin/extensions-help.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin copying build/lib/django_ca/templates/django_ca/admin/submit_line.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin creating build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.31.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions creating build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions/base copying build/lib/django_ca/templates/django_ca/admin/extensions/base/alternative_name_extension.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions/base copying build/lib/django_ca/templates/django_ca/admin/extensions/base/crl_distribution_points_base.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions/base copying build/lib/django_ca/templates/django_ca/admin/extensions/base/base.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions/base copying build/lib/django_ca/templates/django_ca/admin/extensions/base/null_extension.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions/base copying build/lib/django_ca/templates/django_ca/admin/extensions/base/signed_certificate_timestamps.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions/base copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.15.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/missing.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.36.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.19.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.54.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.46.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.32.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.1.1.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/1.3.6.1.4.1.11129.2.4.3.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/1.3.6.1.4.1.11129.2.4.2.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.18.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.37.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.35.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.17.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.14.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.48.1.5.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/unrecognized_extension.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.1.24.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.30.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/admin/extensions creating build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms creating build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/profile.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/multiwidget.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/critical.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/subjecttextinput.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/labeledcheckboxinput.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/custommultiwidget.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/labeledtextinput.html -> build/bdist.linux-armv7l/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/constants.py -> build/bdist.linux-armv7l/wheel/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0020_auto_20201213_2014.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0007_auto_20171119_1100.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0001_initial.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0025_auto_20210430_1132.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0013_certificateauthority_crl_number.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0027_certificateauthority_acme_profile.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0029_certificate_updated_certificateauthority_updated_and_more.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0012_auto_20190405_2345.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0021_auto_20210416_1557.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0005_auto_20170307_1839.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0004_auto_20170304_1442.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0008_auto_20171203_2001.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0022_auto_20210430_1124.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0026_auto_20210501_1258.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0003_auto_20170304_1434.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0002_auto_20170304_1434.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0009_auto_20181128_2050.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0011_auto_20181208_1708.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0014_auto_20190518_1046.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0010_auto_20181128_2054.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0016_auto_20190706_1548.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0028_alter_certificate_revoked_reason_and_more.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0023_auto_20210429_0000.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0017_auto_20200112_1657.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0024_auto_20210430_1131.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0018_certificate_profile.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0006_auto_20170505_1251.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0019_certificate_autogenerated.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0015_auto_20190518_1050.py -> build/bdist.linux-armv7l/wheel/django_ca/migrations copying build/lib/django_ca/querysets.py -> build/bdist.linux-armv7l/wheel/django_ca copying build/lib/django_ca/apps.py -> build/bdist.linux-armv7l/wheel/django_ca creating build/bdist.linux-armv7l/wheel/django_ca/extensions copying build/lib/django_ca/extensions/utils.py -> build/bdist.linux-armv7l/wheel/django_ca/extensions copying build/lib/django_ca/extensions/serialize.py -> build/bdist.linux-armv7l/wheel/django_ca/extensions copying build/lib/django_ca/extensions/parse.py -> build/bdist.linux-armv7l/wheel/django_ca/extensions copying build/lib/django_ca/extensions/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/extensions copying build/lib/django_ca/extensions/text.py -> build/bdist.linux-armv7l/wheel/django_ca/extensions creating build/bdist.linux-armv7l/wheel/django_ca/templatetags copying build/lib/django_ca/templatetags/django_ca.py -> build/bdist.linux-armv7l/wheel/django_ca/templatetags copying build/lib/django_ca/templatetags/__init__.py -> build/bdist.linux-armv7l/wheel/django_ca/templatetags running install_egg_info Copying ca/django_ca.egg-info to build/bdist.linux-armv7l/wheel/django_ca-1.25.0.egg-info running install_scripts creating build/bdist.linux-armv7l/wheel/django_ca-1.25.0.dist-info/WHEEL creating '/build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/.tmp-iul1dnw1/django_ca-1.25.0-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it adding 'django_ca/__init__.py' adding 'django_ca/admin.py' adding 'django_ca/apps.py' adding 'django_ca/ca_settings.py' adding 'django_ca/checks.py' adding 'django_ca/constants.py' adding 'django_ca/converters.py' adding 'django_ca/deprecation.py' adding 'django_ca/fields.py' adding 'django_ca/forms.py' adding 'django_ca/managers.py' adding 'django_ca/modelfields.py' adding 'django_ca/models.py' adding 'django_ca/profiles.py' adding 'django_ca/py.typed' adding 'django_ca/querysets.py' adding 'django_ca/signals.py' adding 'django_ca/tasks.py' adding 'django_ca/typehints.py' adding 'django_ca/urls.py' adding 'django_ca/utils.py' adding 'django_ca/views.py' adding 'django_ca/widgets.py' adding 'django_ca/acme/__init__.py' adding 'django_ca/acme/constants.py' adding 'django_ca/acme/errors.py' adding 'django_ca/acme/messages.py' adding 'django_ca/acme/responses.py' adding 'django_ca/acme/utils.py' adding 'django_ca/acme/validation.py' adding 'django_ca/acme/views.py' adding 'django_ca/extensions/__init__.py' adding 'django_ca/extensions/parse.py' adding 'django_ca/extensions/serialize.py' adding 'django_ca/extensions/text.py' adding 'django_ca/extensions/utils.py' adding 'django_ca/management/__init__.py' adding 'django_ca/management/actions.py' adding 'django_ca/management/base.py' adding 'django_ca/management/mixins.py' adding 'django_ca/management/commands/__init__.py' adding 'django_ca/management/commands/cache_crls.py' adding 'django_ca/management/commands/cert_watchers.py' adding 'django_ca/management/commands/convert_timestamps.py' adding 'django_ca/management/commands/dump_ca.py' adding 'django_ca/management/commands/dump_cert.py' adding 'django_ca/management/commands/dump_crl.py' adding 'django_ca/management/commands/edit_ca.py' adding 'django_ca/management/commands/import_ca.py' adding 'django_ca/management/commands/import_cert.py' adding 'django_ca/management/commands/init_ca.py' adding 'django_ca/management/commands/list_cas.py' adding 'django_ca/management/commands/list_certs.py' adding 'django_ca/management/commands/notify_expiring_certs.py' adding 'django_ca/management/commands/regenerate_ocsp_keys.py' adding 'django_ca/management/commands/resign_cert.py' adding 'django_ca/management/commands/revoke_cert.py' adding 'django_ca/management/commands/sign_cert.py' adding 'django_ca/management/commands/view_ca.py' adding 'django_ca/management/commands/view_cert.py' adding 'django_ca/migrations/0001_initial.py' adding 'django_ca/migrations/0002_auto_20170304_1434.py' adding 'django_ca/migrations/0003_auto_20170304_1434.py' adding 'django_ca/migrations/0004_auto_20170304_1442.py' adding 'django_ca/migrations/0005_auto_20170307_1839.py' adding 'django_ca/migrations/0006_auto_20170505_1251.py' adding 'django_ca/migrations/0007_auto_20171119_1100.py' adding 'django_ca/migrations/0008_auto_20171203_2001.py' adding 'django_ca/migrations/0009_auto_20181128_2050.py' adding 'django_ca/migrations/0010_auto_20181128_2054.py' adding 'django_ca/migrations/0011_auto_20181208_1708.py' adding 'django_ca/migrations/0012_auto_20190405_2345.py' adding 'django_ca/migrations/0013_certificateauthority_crl_number.py' adding 'django_ca/migrations/0014_auto_20190518_1046.py' adding 'django_ca/migrations/0015_auto_20190518_1050.py' adding 'django_ca/migrations/0016_auto_20190706_1548.py' adding 'django_ca/migrations/0017_auto_20200112_1657.py' adding 'django_ca/migrations/0018_certificate_profile.py' adding 'django_ca/migrations/0019_certificate_autogenerated.py' adding 'django_ca/migrations/0020_auto_20201213_2014.py' adding 'django_ca/migrations/0021_auto_20210416_1557.py' adding 'django_ca/migrations/0022_auto_20210430_1124.py' adding 'django_ca/migrations/0023_auto_20210429_0000.py' adding 'django_ca/migrations/0024_auto_20210430_1131.py' adding 'django_ca/migrations/0025_auto_20210430_1132.py' adding 'django_ca/migrations/0026_auto_20210501_1258.py' adding 'django_ca/migrations/0027_certificateauthority_acme_profile.py' adding 'django_ca/migrations/0028_alter_certificate_revoked_reason_and_more.py' adding 'django_ca/migrations/0029_certificate_updated_certificateauthority_updated_and_more.py' adding 'django_ca/migrations/__init__.py' adding 'django_ca/openssh/__init__.py' adding 'django_ca/openssh/constants.py' adding 'django_ca/openssh/extensions.py' adding 'django_ca/static/django_ca/admin/css/base.css' adding 'django_ca/static/django_ca/admin/css/certificateadmin.css' adding 'django_ca/static/django_ca/admin/css/certificateauthorityadmin.css' adding 'django_ca/static/django_ca/admin/css/labeledcheckboxinput.css' adding 'django_ca/static/django_ca/admin/css/labeledtextinput.css' adding 'django_ca/static/django_ca/admin/css/multiwidget.css' adding 'django_ca/static/django_ca/admin/js/ca-details.js' adding 'django_ca/static/django_ca/admin/js/extensions.js' adding 'django_ca/static/django_ca/admin/js/profilewidget.js' adding 'django_ca/static/django_ca/admin/js/sign.js' adding 'django_ca/templates/admin/django_ca/certificate/add_form.html' adding 'django_ca/templates/admin/django_ca/certificate/change_form.html' adding 'django_ca/templates/admin/django_ca/certificate/revoke_form.html' adding 'django_ca/templates/admin/django_ca/certificateauthority/change_form.html' adding 'django_ca/templates/django_ca/admin/extensions-help.html' adding 'django_ca/templates/django_ca/admin/submit_line.html' adding 'django_ca/templates/django_ca/admin/extensions/1.3.6.1.4.1.11129.2.4.2.html' adding 'django_ca/templates/django_ca/admin/extensions/1.3.6.1.4.1.11129.2.4.3.html' adding 'django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.1.1.html' adding 'django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.1.24.html' adding 'django_ca/templates/django_ca/admin/extensions/1.3.6.1.5.5.7.48.1.5.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.14.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.15.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.17.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.18.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.19.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.30.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.31.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.32.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.35.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.36.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.37.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.46.html' adding 'django_ca/templates/django_ca/admin/extensions/2.5.29.54.html' adding 'django_ca/templates/django_ca/admin/extensions/missing.html' adding 'django_ca/templates/django_ca/admin/extensions/unrecognized_extension.html' adding 'django_ca/templates/django_ca/admin/extensions/base/alternative_name_extension.html' adding 'django_ca/templates/django_ca/admin/extensions/base/base.html' adding 'django_ca/templates/django_ca/admin/extensions/base/crl_distribution_points_base.html' adding 'django_ca/templates/django_ca/admin/extensions/base/null_extension.html' adding 'django_ca/templates/django_ca/admin/extensions/base/signed_certificate_timestamps.html' adding 'django_ca/templates/django_ca/forms/widgets/critical.html' adding 'django_ca/templates/django_ca/forms/widgets/custommultiwidget.html' adding 'django_ca/templates/django_ca/forms/widgets/labeledcheckboxinput.html' adding 'django_ca/templates/django_ca/forms/widgets/labeledtextinput.html' adding 'django_ca/templates/django_ca/forms/widgets/multiwidget.html' adding 'django_ca/templates/django_ca/forms/widgets/profile.html' adding 'django_ca/templates/django_ca/forms/widgets/subjecttextinput.html' adding 'django_ca/templatetags/__init__.py' adding 'django_ca/templatetags/django_ca.py' adding 'django_ca/tests/__init__.py' adding 'django_ca/tests/test_acme.py' adding 'django_ca/tests/test_admin_acme.py' adding 'django_ca/tests/test_base.py' adding 'django_ca/tests/test_checks.py' adding 'django_ca/tests/test_constants.py' adding 'django_ca/tests/test_deprecation.py' adding 'django_ca/tests/test_docs.py' adding 'django_ca/tests/test_fields.py' adding 'django_ca/tests/test_management_actions.py' adding 'django_ca/tests/test_managers.py' adding 'django_ca/tests/test_models.py' adding 'django_ca/tests/test_profiles.py' adding 'django_ca/tests/test_querysets.py' adding 'django_ca/tests/test_settings.py' adding 'django_ca/tests/test_sphinx_extensions.py' adding 'django_ca/tests/test_tasks.py' adding 'django_ca/tests/test_utils.py' adding 'django_ca/tests/test_verification.py' adding 'django_ca/tests/test_views.py' adding 'django_ca/tests/test_views_ocsp.py' adding 'django_ca/tests/acme/__init__.py' adding 'django_ca/tests/acme/views/__init__.py' adding 'django_ca/tests/acme/views/base.py' adding 'django_ca/tests/acme/views/test_authorization.py' adding 'django_ca/tests/acme/views/test_challenge.py' adding 'django_ca/tests/acme/views/test_directory.py' adding 'django_ca/tests/acme/views/test_new_account.py' adding 'django_ca/tests/acme/views/test_new_nonce.py' adding 'django_ca/tests/acme/views/test_new_order.py' adding 'django_ca/tests/acme/views/test_order.py' adding 'django_ca/tests/acme/views/test_order_finalize.py' adding 'django_ca/tests/acme/views/test_revocation.py' adding 'django_ca/tests/acme/views/test_update_account.py' adding 'django_ca/tests/acme/views/test_view_cert.py' adding 'django_ca/tests/admin/__init__.py' adding 'django_ca/tests/admin/base.py' adding 'django_ca/tests/admin/test_actions.py' adding 'django_ca/tests/admin/test_add_cert.py' adding 'django_ca/tests/admin/test_admin_ca.py' adding 'django_ca/tests/admin/test_extra_views.py' adding 'django_ca/tests/admin/test_views.py' adding 'django_ca/tests/base/__init__.py' adding 'django_ca/tests/base/mixins.py' adding 'django_ca/tests/base/pragmas.py' adding 'django_ca/tests/base/testcases.py' adding 'django_ca/tests/base/typehints.py' adding 'django_ca/tests/commands/__init__.py' adding 'django_ca/tests/commands/test_cache_crls.py' adding 'django_ca/tests/commands/test_cert_watchers.py' adding 'django_ca/tests/commands/test_convert_timestamps.py' adding 'django_ca/tests/commands/test_dump_ca.py' adding 'django_ca/tests/commands/test_dump_cert.py' adding 'django_ca/tests/commands/test_dump_crl.py' adding 'django_ca/tests/commands/test_edit_ca.py' adding 'django_ca/tests/commands/test_import_ca.py' adding 'django_ca/tests/commands/test_import_cert.py' adding 'django_ca/tests/commands/test_init_ca.py' adding 'django_ca/tests/commands/test_list_cas.py' adding 'django_ca/tests/commands/test_list_certs.py' adding 'django_ca/tests/commands/test_notify.py' adding 'django_ca/tests/commands/test_regenerate_ocsp_keys.py' adding 'django_ca/tests/commands/test_resign_cert.py' adding 'django_ca/tests/commands/test_revoke_cert.py' adding 'django_ca/tests/commands/test_sign_cert.py' adding 'django_ca/tests/commands/test_view_ca.py' adding 'django_ca/tests/commands/test_view_cert.py' adding 'django_ca/tests/extensions/__init__.py' adding 'django_ca/tests/extensions/test_admin_html.py' adding 'django_ca/tests/extensions/test_doctests.py' adding 'django_ca/tests/extensions/test_extension_values.py' adding 'django_ca/tests/extensions/test_unknown_extension.py' adding 'django_ca/tests/fixtures/Dockerfile.certbot' adding 'django_ca/tests/fixtures/all-extensions.csr' adding 'django_ca/tests/fixtures/all-extensions.key' adding 'django_ca/tests/fixtures/all-extensions.key.der' adding 'django_ca/tests/fixtures/all-extensions.pub' adding 'django_ca/tests/fixtures/all-extensions.pub.der' adding 'django_ca/tests/fixtures/alt-extensions.csr' adding 'django_ca/tests/fixtures/alt-extensions.key' adding 'django_ca/tests/fixtures/alt-extensions.key.der' adding 'django_ca/tests/fixtures/alt-extensions.pub' adding 'django_ca/tests/fixtures/alt-extensions.pub.der' adding 'django_ca/tests/fixtures/cert-data.json' adding 'django_ca/tests/fixtures/child-cert.csr' adding 'django_ca/tests/fixtures/child-cert.key' adding 'django_ca/tests/fixtures/child-cert.key.der' adding 'django_ca/tests/fixtures/child-cert.pub' adding 'django_ca/tests/fixtures/child-cert.pub.der' adding 'django_ca/tests/fixtures/child.key' adding 'django_ca/tests/fixtures/child.key.der' adding 'django_ca/tests/fixtures/child.pub' adding 'django_ca/tests/fixtures/child.pub.der' adding 'django_ca/tests/fixtures/cli.ini' adding 'django_ca/tests/fixtures/django-ca-dns-auth.py' adding 'django_ca/tests/fixtures/django-ca-dns-clean.py' adding 'django_ca/tests/fixtures/django-ca-test-validation.sh' adding 'django_ca/tests/fixtures/dnsmasq.sh' adding 'django_ca/tests/fixtures/docker-compose.certbot.yaml' adding 'django_ca/tests/fixtures/dsa-cert.csr' adding 'django_ca/tests/fixtures/dsa-cert.key' adding 'django_ca/tests/fixtures/dsa-cert.key.der' adding 'django_ca/tests/fixtures/dsa-cert.pub' adding 'django_ca/tests/fixtures/dsa-cert.pub.der' adding 'django_ca/tests/fixtures/dsa.key' adding 'django_ca/tests/fixtures/dsa.key.der' adding 'django_ca/tests/fixtures/dsa.pub' adding 'django_ca/tests/fixtures/dsa.pub.der' adding 'django_ca/tests/fixtures/ec-cert.csr' adding 'django_ca/tests/fixtures/ec-cert.key' adding 'django_ca/tests/fixtures/ec-cert.key.der' adding 'django_ca/tests/fixtures/ec-cert.pub' adding 'django_ca/tests/fixtures/ec-cert.pub.der' adding 'django_ca/tests/fixtures/ec.key' adding 'django_ca/tests/fixtures/ec.key.der' adding 'django_ca/tests/fixtures/ec.pub' adding 'django_ca/tests/fixtures/ec.pub.der' adding 'django_ca/tests/fixtures/ed25519-cert.csr' adding 'django_ca/tests/fixtures/ed25519-cert.key' adding 'django_ca/tests/fixtures/ed25519-cert.key.der' adding 'django_ca/tests/fixtures/ed25519-cert.pub' adding 'django_ca/tests/fixtures/ed25519-cert.pub.der' adding 'django_ca/tests/fixtures/ed25519.key' adding 'django_ca/tests/fixtures/ed25519.key.der' adding 'django_ca/tests/fixtures/ed25519.pub' adding 'django_ca/tests/fixtures/ed25519.pub.der' adding 'django_ca/tests/fixtures/ed448-cert.csr' adding 'django_ca/tests/fixtures/ed448-cert.key' adding 'django_ca/tests/fixtures/ed448-cert.key.der' adding 'django_ca/tests/fixtures/ed448-cert.pub' adding 'django_ca/tests/fixtures/ed448-cert.pub.der' adding 'django_ca/tests/fixtures/ed448.key' adding 'django_ca/tests/fixtures/ed448.key.der' adding 'django_ca/tests/fixtures/ed448.pub' adding 'django_ca/tests/fixtures/ed448.pub.der' adding 'django_ca/tests/fixtures/md5.csr.pem' adding 'django_ca/tests/fixtures/no-extensions.csr' adding 'django_ca/tests/fixtures/no-extensions.key' adding 'django_ca/tests/fixtures/no-extensions.key.der' adding 'django_ca/tests/fixtures/no-extensions.pub' adding 'django_ca/tests/fixtures/no-extensions.pub.der' adding 'django_ca/tests/fixtures/prepared-acme-requests.json' adding 'django_ca/tests/fixtures/profile-client.csr' adding 'django_ca/tests/fixtures/profile-client.key' adding 'django_ca/tests/fixtures/profile-client.key.der' adding 'django_ca/tests/fixtures/profile-client.pub' adding 'django_ca/tests/fixtures/profile-client.pub.der' adding 'django_ca/tests/fixtures/profile-enduser.csr' adding 'django_ca/tests/fixtures/profile-enduser.key' adding 'django_ca/tests/fixtures/profile-enduser.key.der' adding 'django_ca/tests/fixtures/profile-enduser.pub' adding 'django_ca/tests/fixtures/profile-enduser.pub.der' adding 'django_ca/tests/fixtures/profile-ocsp.csr' adding 'django_ca/tests/fixtures/profile-ocsp.key' adding 'django_ca/tests/fixtures/profile-ocsp.key.der' adding 'django_ca/tests/fixtures/profile-ocsp.pub' adding 'django_ca/tests/fixtures/profile-ocsp.pub.der' adding 'django_ca/tests/fixtures/profile-server.csr' adding 'django_ca/tests/fixtures/profile-server.key' adding 'django_ca/tests/fixtures/profile-server.key.der' adding 'django_ca/tests/fixtures/profile-server.pub' adding 'django_ca/tests/fixtures/profile-server.pub.der' adding 'django_ca/tests/fixtures/profile-webserver.csr' adding 'django_ca/tests/fixtures/profile-webserver.key' adding 'django_ca/tests/fixtures/profile-webserver.key.der' adding 'django_ca/tests/fixtures/profile-webserver.pub' adding 'django_ca/tests/fixtures/profile-webserver.pub.der' adding 'django_ca/tests/fixtures/pwd-cert.csr' adding 'django_ca/tests/fixtures/pwd-cert.key' adding 'django_ca/tests/fixtures/pwd-cert.key.der' adding 'django_ca/tests/fixtures/pwd-cert.pub' adding 'django_ca/tests/fixtures/pwd-cert.pub.der' adding 'django_ca/tests/fixtures/pwd.key' adding 'django_ca/tests/fixtures/pwd.key.der' adding 'django_ca/tests/fixtures/pwd.pub' adding 'django_ca/tests/fixtures/pwd.pub.der' adding 'django_ca/tests/fixtures/root-cert.csr' adding 'django_ca/tests/fixtures/root-cert.key' adding 'django_ca/tests/fixtures/root-cert.key.der' adding 'django_ca/tests/fixtures/root-cert.pub' adding 'django_ca/tests/fixtures/root-cert.pub.der' adding 'django_ca/tests/fixtures/root.key' adding 'django_ca/tests/fixtures/root.key.der' adding 'django_ca/tests/fixtures/root.pub' adding 'django_ca/tests/fixtures/root.pub.der' adding 'django_ca/tests/fixtures/sha1.csr.pem' adding 'django_ca/tests/fixtures/contrib/cloudflare_1.pem' adding 'django_ca/tests/fixtures/contrib/godaddy_derstandardat.pem' adding 'django_ca/tests/fixtures/contrib/letsencrypt_jabber_at.pem' adding 'django_ca/tests/fixtures/contrib/multiple_ous_and_no_ext.pem' adding 'django_ca/tests/fixtures/ocsp/multiple-serial' adding 'django_ca/tests/fixtures/ocsp/no-nonce.req' adding 'django_ca/tests/fixtures/ocsp/nonce.req' adding 'django_ca/tests/fixtures/ocsp/req1' adding 'django_ca/tests/fixtures/ocsp/unknown-serial' adding 'django_ca-1.25.0.dist-info/LICENSE' adding 'django_ca-1.25.0.dist-info/METADATA' adding 'django_ca-1.25.0.dist-info/WHEEL' adding 'django_ca-1.25.0.dist-info/top_level.txt' adding 'django_ca-1.25.0.dist-info/RECORD' removing build/bdist.linux-armv7l/wheel Successfully built django_ca-1.25.0-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.11 with "installer" module dh_auto_test -O--buildsystem=pybuild I: pybuild pybuild:308: ln -s /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/docs/source/django_ca_sphinx /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca_sphinx I: pybuild base:311: cd /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build; python3.12 -m pytest --ds=ca.test_settings -k "not test_permission_denied and not test_create_cadir_permission_denied and not test_permission_denied and not Dns01ValidationTestCase and not AcmeValidateDns01ChallengeTestCase" --ignore=django_ca/tests/admin/test_actions.py --ignore=django_ca/tests/admin/test_add_cert.py ============================= test session starts ============================== platform linux -- Python 3.12.3, pytest-8.1.1, pluggy-1.5.0 django: settings: ca.test_settings (from option) rootdir: /build/reproducible-path/python-django-ca-1.25.0 configfile: pyproject.toml plugins: requests-mock-1.11.0, django-4.5.2 collected 1168 items / 21 deselected / 1147 selected django_ca/tests/acme/views/test_authorization.py ...................... [ 1%] django_ca/tests/acme/views/test_directory.py ......... [ 2%] django_ca/tests/acme/views/test_new_account.py ...................... [ 4%] django_ca/tests/acme/views/test_new_nonce.py ... [ 4%] django_ca/tests/acme/views/test_new_order.py ....................... [ 6%] django_ca/tests/acme/views/test_order.py ......................... [ 9%] django_ca/tests/acme/views/test_revocation.py .......................... [ 11%] ...............................s.......s....ss..s.... [ 15%] django_ca/tests/acme/views/test_update_account.py .................s.... [ 17%] . [ 17%] django_ca/tests/acme/views/test_view_cert.py ..................... [ 19%] django_ca/tests/admin/test_admin_ca.py ........ [ 20%] django_ca/tests/admin/test_extra_views.py ....................... [ 22%] django_ca/tests/admin/test_views.py ...... [ 23%] django_ca/tests/commands/test_cache_crls.py .. [ 23%] django_ca/tests/commands/test_cert_watchers.py . [ 23%] django_ca/tests/commands/test_convert_timestamps.py .... [ 23%] django_ca/tests/commands/test_dump_ca.py ....... [ 24%] django_ca/tests/commands/test_dump_cert.py ...... [ 24%] django_ca/tests/commands/test_dump_crl.py ................. [ 26%] django_ca/tests/commands/test_edit_ca.py ...... [ 26%] django_ca/tests/commands/test_import_ca.py ....... [ 27%] django_ca/tests/commands/test_import_cert.py ... [ 27%] django_ca/tests/commands/test_init_ca.py ..FF..................F........ [ 30%] ..... [ 30%] django_ca/tests/commands/test_list_cas.py ..... [ 31%] django_ca/tests/commands/test_list_certs.py ..... [ 31%] django_ca/tests/commands/test_notify.py .... [ 31%] django_ca/tests/commands/test_regenerate_ocsp_keys.py ........... [ 32%] django_ca/tests/commands/test_resign_cert.py ................ [ 34%] django_ca/tests/commands/test_revoke_cert.py ....... [ 34%] django_ca/tests/commands/test_sign_cert.py ........................... [ 37%] django_ca/tests/commands/test_view_ca.py FFFFFFFF [ 38%] django_ca/tests/commands/test_view_cert.py .......... [ 38%] django_ca/tests/extensions/test_admin_html.py .. [ 39%] django_ca/tests/extensions/test_extension_values.py .................... [ 40%] .................................................. [ 45%] django_ca/tests/extensions/test_unknown_extension.py ...... [ 45%] django_ca/tests/test_acme.py .... [ 46%] django_ca/tests/test_admin_acme.py ................ [ 47%] django_ca/tests/test_base.py .......... [ 48%] django_ca/tests/test_checks.py .... [ 48%] django_ca/tests/test_constants.py .......F... [ 49%] django_ca/tests/test_deprecation.py .. [ 49%] django_ca/tests/test_docs.py .. [ 49%] django_ca/tests/test_fields.py ................ [ 51%] django_ca/tests/test_management_actions.py ............................. [ 53%] ............................................ [ 57%] django_ca/tests/test_managers.py ............................. [ 60%] django_ca/tests/test_models.py ......................................... [ 63%] ......................................................... [ 68%] django_ca/tests/test_profiles.py ss............................... [ 71%] django_ca/tests/test_querysets.py ........ [ 72%] django_ca/tests/test_settings.py .......................... [ 74%] django_ca/tests/test_tasks.py ............................... [ 77%] django_ca/tests/test_utils.py .......................................... [ 80%] .............................................................. [ 86%] django_ca/tests/test_verification.py ..... [ 86%] django_ca/tests/test_views.py ................. [ 88%] django_ca/tests/test_views_ocsp.py FF................................... [ 91%] ..... [ 91%] django_ca/tests/acme/views/test_challenge.py .................... [ 93%] django_ca/tests/acme/views/test_order_finalize.py ...................... [ 95%] ........... [ 96%] django_ca/tests/test_querysets.py ............ [ 97%] django_ca/tests/test_managers.py sssssssssssssssssssssssss [ 99%] django_ca/tests/test_sphinx_extensions.py .. [100%] =================================== FAILURES =================================== ________________ InitCATest.test_add_extensions_with_formatting ________________ self = name = 'extensions_with_formatting' subject = parent = , expires = datetime.timedelta(days=3650) key_size = 1024, key_type = 'RSA', elliptic_curve = None algorithm = password = None, parent_password = None, sign_crl_full_name = [] sign_ocsp_responder = None, sign_ca_issuer = None sign_issuer_alternative_name = None authority_information_access = , a...e=caIssuers)>, access_location=)>])> path_length = 0, certificate_policies = None certificate_policies_critical = False crl_full_names = [, ] crl_distribution_points_critical = False, extended_key_usage = None extended_key_usage_critical = False, inhibit_any_policy = None issuer_alternative_name = None key_usage = key_usage_critical = True, permit_name = None, exclude_name = None require_explicit_policy = None, inhibit_policy_mapping = None subject_alternative_name = None, subject_alternative_name_critical = False caa = '', website = '', tos = '' options = {'acme_enabled': None, 'acme_profile': None, 'acme_requires_contact': None, 'default_hostname': None, ...} expires_datetime = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) common_name = 'extensions_with_formatting.example.com' extensions = {: , cr...ourceIdentifier(value='http://example.net/crl/{CRL_PATH}')>], relative_name=None, reasons=None, crl_issuer=None)>])>)>} def handle( # pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements self, name: str, subject: x509.Name, parent: Optional[CertificateAuthority], expires: timedelta, key_size: Optional[int], key_type: ParsableKeyType, elliptic_curve: Optional[ec.EllipticCurve], algorithm: Optional[AllowedHashTypes], password: Optional[bytes], parent_password: Optional[bytes], sign_crl_full_name: List[str], sign_ocsp_responder: Optional[str], sign_ca_issuer: Optional[str], sign_issuer_alternative_name: Optional[x509.Extension[x509.IssuerAlternativeName]], # Authority Information Access extension authority_information_access: x509.AuthorityInformationAccess, # Basic Constraints extension path_length: Optional[int], # Certificate Policies extension certificate_policies: Optional[x509.CertificatePolicies], certificate_policies_critical: bool, # CRL Distribution Points extension crl_full_names: Optional[List[x509.GeneralName]], crl_distribution_points_critical: bool, # Extended Key Usage extension extended_key_usage: Optional[x509.ExtendedKeyUsage], extended_key_usage_critical: bool, # Inhibit anyPolicy extension: inhibit_any_policy: Optional[int], # Issuer Alternative Name extension: issuer_alternative_name: Optional[x509.IssuerAlternativeName], # Key Usage extension: key_usage: x509.KeyUsage, key_usage_critical: bool, # Name Constraints extension: permit_name: Optional[Iterable[x509.GeneralName]], exclude_name: Optional[Iterable[x509.GeneralName]], # Policy Constraints extension: require_explicit_policy: Optional[int], inhibit_policy_mapping: Optional[int], # Subject Alternative Name extension subject_alternative_name: Optional[x509.SubjectAlternativeName], subject_alternative_name_critical: bool, # ACMEv2 related options caa: str, website: str, tos: str, **options: Any, ) -> None: if not os.path.exists(ca_settings.CA_DIR): # pragma: no cover # TODO: set permissions os.makedirs(ca_settings.CA_DIR) # NOTE: When removing this in 1.26.0, don't forget to remove choices in the --key-type action. if key_type == "ECC": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=ECC is deprecated, use --key-type=EC instead.", RemovedInDjangoCA126Warning ) key_type = "EC" if key_type == "EdDSA": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=EdDSA is deprecated, use --key-type=Ed25519 instead.", RemovedInDjangoCA126Warning ) key_type = "Ed25519" # Validate private key parameters early so that we can return better feedback to the user. try: key_size, elliptic_curve = validate_private_key_parameters(key_type, key_size, elliptic_curve) except ValueError as ex: raise CommandError(*ex.args) from ex # Get/validate signature hash algorithm algorithm = self.get_hash_algorithm(key_type, algorithm) # In case of CAs, we silently set the expiry date to that of the parent CA if the user specified a # number of days that would make the CA expire after the parent CA. # # The reasoning is simple: When issuing the child CA, the default is automatically after that of the # parent if it wasn't issued on the same day. if parent and timezone.now() + expires > parent.expires: expires_datetime = parent.expires # Make sure expires_datetime is tz-aware, even if USE_TZ=False. if timezone.is_naive(expires_datetime): expires_datetime = timezone.make_aware(expires_datetime) else: expires_datetime = datetime.now(tz=tz.utc) + expires if parent and not parent.allows_intermediate_ca: raise CommandError("Parent CA cannot create intermediate CA due to path length restrictions.") if not parent and crl_full_names: raise CommandError("CRLs cannot be used to revoke root CAs.") if not parent and authority_information_access: if ocsp_responder := next( ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.OCSP ), None, ): responder_value = format_general_name(ocsp_responder.access_location) raise CommandError(f"{responder_value}: OCSP responder cannot be added to root CAs.") # No if check necessary here, authority_information_access contains either ocsp or ca_issuer # COVERAGE NOTE: next() will always return, so it's not a branch ca_issuer = next( # pragma: no branch ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.CA_ISSUERS ) ) responder_value = format_general_name(ca_issuer.access_location) raise CommandError(f"{responder_value}: CA issuer cannot be added to root CAs.") # We require a valid common name common_name = next((attr.value for attr in subject if attr.oid == NameOID.COMMON_NAME), False) if not common_name: raise CommandError("Subject must contain a common name (/CN=...).") # See if we can work with the private key if parent: self.test_private_key(parent, parent_password) subject = sort_name(subject) extensions: ExtensionMapping = { ExtensionOID.KEY_USAGE: x509.Extension( oid=ExtensionOID.KEY_USAGE, critical=key_usage_critical, value=key_usage ) } # Add the Authority Information Access extension if authority_information_access is not None: self._add_extension( extensions, authority_information_access, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.AUTHORITY_INFORMATION_ACCESS], ) # Add the Certificate Policies extension if certificate_policies is not None: self._add_extension(extensions, certificate_policies, certificate_policies_critical) # Add the CRL Distribution Points extension if crl_full_names is not None: distribution_point = x509.DistributionPoint( full_name=crl_full_names, relative_name=None, crl_issuer=None, reasons=None ) self._add_extension( extensions, x509.CRLDistributionPoints([distribution_point]), crl_distribution_points_critical ) # Add the Extended Key Usage extension if extended_key_usage is not None: self._add_extension(extensions, extended_key_usage, extended_key_usage_critical) # Add the inhibitAnyPolicy extension if inhibit_any_policy is not None: self._add_extension( extensions, x509.InhibitAnyPolicy(skip_certs=inhibit_any_policy), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.INHIBIT_ANY_POLICY], ) # Add the Issuer Alternative Name extension if issuer_alternative_name is not None: self._add_extension( extensions, issuer_alternative_name, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.ISSUER_ALTERNATIVE_NAME], ) # Add the NameConstraints extension if permit_name or exclude_name: self._add_extension( extensions, x509.NameConstraints(excluded_subtrees=exclude_name, permitted_subtrees=permit_name), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.NAME_CONSTRAINTS], ) # Add the Policy Constraints extension if require_explicit_policy is not None or inhibit_policy_mapping is not None: self._add_extension( extensions, x509.PolicyConstraints( require_explicit_policy=require_explicit_policy, inhibit_policy_mapping=inhibit_policy_mapping, ), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.POLICY_CONSTRAINTS], ) # Add the Subject Alternative Name extension if subject_alternative_name is not None: self._add_extension( extensions, subject_alternative_name, subject_alternative_name_critical, ) kwargs = {} for opt in ["path", "default_hostname"]: if options[opt] is not None: kwargs[opt] = options[opt] if ca_settings.CA_ENABLE_ACME: # pragma: no branch; never False because parser throws error already # These settings are only there if ACME is enabled for opt in ["acme_enabled", "acme_requires_contact"]: if options[opt] is not None: kwargs[opt] = options[opt] if acme_profile := options["acme_profile"]: if acme_profile not in ca_settings.CA_PROFILES: raise CommandError(f"{acme_profile}: Profile is not defined.") kwargs["acme_profile"] = acme_profile try: > ca = CertificateAuthority.objects.init( name=name, subject=subject, expires=expires_datetime, algorithm=algorithm, parent=parent, path_length=path_length, issuer_url=sign_ca_issuer, issuer_alt_name=sign_issuer_alternative_name, crl_url=sign_crl_full_name, ocsp_url=sign_ocsp_responder, password=password, parent_password=parent_password, elliptic_curve=elliptic_curve, key_type=key_type, key_size=key_size, caa=caa, website=website, terms_of_service=tos, extensions=extensions.values(), **kwargs, ) django_ca/management/commands/init_ca.py:461: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:101: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:101: in wrapper return func(*args, **kwargs) django_ca/managers.py:497: in init builder = get_cert_builder(expires, serial=serial) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expires = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) serial = 564671825340900565...8097939863498092866 def get_cert_builder(expires: datetime, serial: Optional[int] = None) -> x509.CertificateBuilder: """Get a basic X.509 certificate builder object. Parameters ---------- expires : datetime When this certificate is supposed to expire, as a timezone-aware datetime object. serial : int, optional Serial for the certificate. If not passed, a serial will be randomly generated using :py:func:`~cg:cryptography.x509.random_serial_number`. """ now = datetime.now(tz.utc).replace(second=0, microsecond=0) # NOTE: Explicitly passing a serial is used when creating a CA, where we want to add extensions where the # value references the serial. if serial is None: serial = x509.random_serial_number() if timezone.is_naive(expires): raise ValueError("expires must not be a naive datetime") if expires <= now: > raise ValueError("expires must be in the future") E ValueError: expires must be in the future django_ca/utils.py:1081: ValueError The above exception was the direct cause of the following exception: self = argv = ['manage.py', 'init_ca', 'extensions_with_formatting', '/CN=extensions_with_formatting.example.com', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ocsp-responder=https://example.com/ocsp/{OCSP_PATH}', ...] def run_from_argv(self, argv): """ Set up any environment changes requested (e.g., Python path and Django settings), then run this command. If the command raises a ``CommandError``, intercept it and print it sensibly to stderr. If the ``--traceback`` option is present or the raised ``Exception`` is not ``CommandError``, raise it. """ self._called_from_command_line = True parser = self.create_parser(argv[0], argv[1]) options = parser.parse_args(argv[2:]) cmd_options = vars(options) # Move positional args out of options to mimic legacy optparse args = cmd_options.pop("args", ()) handle_default_options(options) try: > self.execute(*args, **cmd_options) /usr/lib/python3/dist-packages/django/core/management/base.py:412: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/django/core/management/base.py:458: in execute output = self.handle(*args, **options) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = name = 'extensions_with_formatting' subject = parent = , expires = datetime.timedelta(days=3650) key_size = 1024, key_type = 'RSA', elliptic_curve = None algorithm = password = None, parent_password = None, sign_crl_full_name = [] sign_ocsp_responder = None, sign_ca_issuer = None sign_issuer_alternative_name = None authority_information_access = , a...e=caIssuers)>, access_location=)>])> path_length = 0, certificate_policies = None certificate_policies_critical = False crl_full_names = [, ] crl_distribution_points_critical = False, extended_key_usage = None extended_key_usage_critical = False, inhibit_any_policy = None issuer_alternative_name = None key_usage = key_usage_critical = True, permit_name = None, exclude_name = None require_explicit_policy = None, inhibit_policy_mapping = None subject_alternative_name = None, subject_alternative_name_critical = False caa = '', website = '', tos = '' options = {'acme_enabled': None, 'acme_profile': None, 'acme_requires_contact': None, 'default_hostname': None, ...} expires_datetime = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) common_name = 'extensions_with_formatting.example.com' extensions = {: , cr...ourceIdentifier(value='http://example.net/crl/{CRL_PATH}')>], relative_name=None, reasons=None, crl_issuer=None)>])>)>} def handle( # pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements self, name: str, subject: x509.Name, parent: Optional[CertificateAuthority], expires: timedelta, key_size: Optional[int], key_type: ParsableKeyType, elliptic_curve: Optional[ec.EllipticCurve], algorithm: Optional[AllowedHashTypes], password: Optional[bytes], parent_password: Optional[bytes], sign_crl_full_name: List[str], sign_ocsp_responder: Optional[str], sign_ca_issuer: Optional[str], sign_issuer_alternative_name: Optional[x509.Extension[x509.IssuerAlternativeName]], # Authority Information Access extension authority_information_access: x509.AuthorityInformationAccess, # Basic Constraints extension path_length: Optional[int], # Certificate Policies extension certificate_policies: Optional[x509.CertificatePolicies], certificate_policies_critical: bool, # CRL Distribution Points extension crl_full_names: Optional[List[x509.GeneralName]], crl_distribution_points_critical: bool, # Extended Key Usage extension extended_key_usage: Optional[x509.ExtendedKeyUsage], extended_key_usage_critical: bool, # Inhibit anyPolicy extension: inhibit_any_policy: Optional[int], # Issuer Alternative Name extension: issuer_alternative_name: Optional[x509.IssuerAlternativeName], # Key Usage extension: key_usage: x509.KeyUsage, key_usage_critical: bool, # Name Constraints extension: permit_name: Optional[Iterable[x509.GeneralName]], exclude_name: Optional[Iterable[x509.GeneralName]], # Policy Constraints extension: require_explicit_policy: Optional[int], inhibit_policy_mapping: Optional[int], # Subject Alternative Name extension subject_alternative_name: Optional[x509.SubjectAlternativeName], subject_alternative_name_critical: bool, # ACMEv2 related options caa: str, website: str, tos: str, **options: Any, ) -> None: if not os.path.exists(ca_settings.CA_DIR): # pragma: no cover # TODO: set permissions os.makedirs(ca_settings.CA_DIR) # NOTE: When removing this in 1.26.0, don't forget to remove choices in the --key-type action. if key_type == "ECC": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=ECC is deprecated, use --key-type=EC instead.", RemovedInDjangoCA126Warning ) key_type = "EC" if key_type == "EdDSA": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=EdDSA is deprecated, use --key-type=Ed25519 instead.", RemovedInDjangoCA126Warning ) key_type = "Ed25519" # Validate private key parameters early so that we can return better feedback to the user. try: key_size, elliptic_curve = validate_private_key_parameters(key_type, key_size, elliptic_curve) except ValueError as ex: raise CommandError(*ex.args) from ex # Get/validate signature hash algorithm algorithm = self.get_hash_algorithm(key_type, algorithm) # In case of CAs, we silently set the expiry date to that of the parent CA if the user specified a # number of days that would make the CA expire after the parent CA. # # The reasoning is simple: When issuing the child CA, the default is automatically after that of the # parent if it wasn't issued on the same day. if parent and timezone.now() + expires > parent.expires: expires_datetime = parent.expires # Make sure expires_datetime is tz-aware, even if USE_TZ=False. if timezone.is_naive(expires_datetime): expires_datetime = timezone.make_aware(expires_datetime) else: expires_datetime = datetime.now(tz=tz.utc) + expires if parent and not parent.allows_intermediate_ca: raise CommandError("Parent CA cannot create intermediate CA due to path length restrictions.") if not parent and crl_full_names: raise CommandError("CRLs cannot be used to revoke root CAs.") if not parent and authority_information_access: if ocsp_responder := next( ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.OCSP ), None, ): responder_value = format_general_name(ocsp_responder.access_location) raise CommandError(f"{responder_value}: OCSP responder cannot be added to root CAs.") # No if check necessary here, authority_information_access contains either ocsp or ca_issuer # COVERAGE NOTE: next() will always return, so it's not a branch ca_issuer = next( # pragma: no branch ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.CA_ISSUERS ) ) responder_value = format_general_name(ca_issuer.access_location) raise CommandError(f"{responder_value}: CA issuer cannot be added to root CAs.") # We require a valid common name common_name = next((attr.value for attr in subject if attr.oid == NameOID.COMMON_NAME), False) if not common_name: raise CommandError("Subject must contain a common name (/CN=...).") # See if we can work with the private key if parent: self.test_private_key(parent, parent_password) subject = sort_name(subject) extensions: ExtensionMapping = { ExtensionOID.KEY_USAGE: x509.Extension( oid=ExtensionOID.KEY_USAGE, critical=key_usage_critical, value=key_usage ) } # Add the Authority Information Access extension if authority_information_access is not None: self._add_extension( extensions, authority_information_access, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.AUTHORITY_INFORMATION_ACCESS], ) # Add the Certificate Policies extension if certificate_policies is not None: self._add_extension(extensions, certificate_policies, certificate_policies_critical) # Add the CRL Distribution Points extension if crl_full_names is not None: distribution_point = x509.DistributionPoint( full_name=crl_full_names, relative_name=None, crl_issuer=None, reasons=None ) self._add_extension( extensions, x509.CRLDistributionPoints([distribution_point]), crl_distribution_points_critical ) # Add the Extended Key Usage extension if extended_key_usage is not None: self._add_extension(extensions, extended_key_usage, extended_key_usage_critical) # Add the inhibitAnyPolicy extension if inhibit_any_policy is not None: self._add_extension( extensions, x509.InhibitAnyPolicy(skip_certs=inhibit_any_policy), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.INHIBIT_ANY_POLICY], ) # Add the Issuer Alternative Name extension if issuer_alternative_name is not None: self._add_extension( extensions, issuer_alternative_name, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.ISSUER_ALTERNATIVE_NAME], ) # Add the NameConstraints extension if permit_name or exclude_name: self._add_extension( extensions, x509.NameConstraints(excluded_subtrees=exclude_name, permitted_subtrees=permit_name), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.NAME_CONSTRAINTS], ) # Add the Policy Constraints extension if require_explicit_policy is not None or inhibit_policy_mapping is not None: self._add_extension( extensions, x509.PolicyConstraints( require_explicit_policy=require_explicit_policy, inhibit_policy_mapping=inhibit_policy_mapping, ), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.POLICY_CONSTRAINTS], ) # Add the Subject Alternative Name extension if subject_alternative_name is not None: self._add_extension( extensions, subject_alternative_name, subject_alternative_name_critical, ) kwargs = {} for opt in ["path", "default_hostname"]: if options[opt] is not None: kwargs[opt] = options[opt] if ca_settings.CA_ENABLE_ACME: # pragma: no branch; never False because parser throws error already # These settings are only there if ACME is enabled for opt in ["acme_enabled", "acme_requires_contact"]: if options[opt] is not None: kwargs[opt] = options[opt] if acme_profile := options["acme_profile"]: if acme_profile not in ca_settings.CA_PROFILES: raise CommandError(f"{acme_profile}: Profile is not defined.") kwargs["acme_profile"] = acme_profile try: ca = CertificateAuthority.objects.init( name=name, subject=subject, expires=expires_datetime, algorithm=algorithm, parent=parent, path_length=path_length, issuer_url=sign_ca_issuer, issuer_alt_name=sign_issuer_alternative_name, crl_url=sign_crl_full_name, ocsp_url=sign_ocsp_responder, password=password, parent_password=parent_password, elliptic_curve=elliptic_curve, key_type=key_type, key_size=key_size, caa=caa, website=website, terms_of_service=tos, extensions=extensions.values(), **kwargs, ) except Exception as ex: # pragma: no cover > raise CommandError(ex) from ex E django.core.management.base.CommandError: expires must be in the future django_ca/management/commands/init_ca.py:484: CommandError During handling of the above exception, another exception occurred: self = name = 'extensions_with_formatting', chain = [] args = ('/CN=extensions_with_formatting.example.com', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ocsp-responder=...SSUER_PATH}', '--crl-full-name=http://example.com/crl/{CRL_PATH}', '--crl-full-name=http://example.net/crl/{CRL_PATH}') kwargs = {}, pre = post = def init_ca_e2e( self, name: str, *args: str, chain: Optional[List[CertificateAuthority]] = None, **kwargs: Any ) -> CertificateAuthority: """Run a init_ca command via cmd_e2e().""" if chain is None: chain = [] with self.assertCreateCASignals() as (pre, post): > out, err = self.cmd_e2e(["init_ca", name] + list(args)) django_ca/tests/commands/test_init_ca.py:72: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/base/mixins.py:771: in cmd_e2e util.execute() /usr/lib/python3/dist-packages/django/core/management/__init__.py:436: in execute self.fetch_command(subcommand).run_from_argv(self.argv) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = argv = ['manage.py', 'init_ca', 'extensions_with_formatting', '/CN=extensions_with_formatting.example.com', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ocsp-responder=https://example.com/ocsp/{OCSP_PATH}', ...] def run_from_argv(self, argv): """ Set up any environment changes requested (e.g., Python path and Django settings), then run this command. If the command raises a ``CommandError``, intercept it and print it sensibly to stderr. If the ``--traceback`` option is present or the raised ``Exception`` is not ``CommandError``, raise it. """ self._called_from_command_line = True parser = self.create_parser(argv[0], argv[1]) options = parser.parse_args(argv[2:]) cmd_options = vars(options) # Move positional args out of options to mimic legacy optparse args = cmd_options.pop("args", ()) handle_default_options(options) try: self.execute(*args, **cmd_options) except CommandError as e: if options.traceback: raise # SystemCheckError takes care of its own formatting. if isinstance(e, SystemCheckError): self.stderr.write(str(e), lambda x: x) else: self.stderr.write("%s: %s" % (e.__class__.__name__, e)) > sys.exit(e.returncode) E SystemExit: 1 /usr/lib/python3/dist-packages/django/core/management/base.py:422: SystemExit During handling of the above exception, another exception occurred: self = @override_tmpcadir(CA_MIN_KEY_SIZE=1024) def test_add_extensions_with_formatting(self) -> None: """Test adding various extensions.""" root = self.load_ca("root") > ca = self.init_ca_e2e( "extensions_with_formatting", "/CN=extensions_with_formatting.example.com", f"--parent={root.serial}", "--ocsp-responder=https://example.com/ocsp/{OCSP_PATH}", "--ca-issuer=https://example.com/ca-issuer/{CA_ISSUER_PATH}", "--crl-full-name=http://example.com/crl/{CRL_PATH}", "--crl-full-name=http://example.net/crl/{CRL_PATH}", chain=[root], ) django_ca/tests/commands/test_init_ca.py:446: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/commands/test_init_ca.py:71: in init_ca_e2e with self.assertCreateCASignals() as (pre, post): /usr/lib/python3.12/contextlib.py:158: in __exit__ self.gen.throw(value) django_ca/tests/base/mixins.py:291: in assertCreateCASignals self.assertTrue(post_sig.called is post) E AssertionError: False is not true __________ InitCATest.test_add_extensions_with_formatting_without_uri __________ self = name = 'extensions_with_formatting' subject = parent = , expires = datetime.timedelta(days=3650) key_size = 1024, key_type = 'RSA', elliptic_curve = None algorithm = password = None, parent_password = None, sign_crl_full_name = [] sign_ocsp_responder = None, sign_ca_issuer = None sign_issuer_alternative_name = None authority_information_access = , a..._method=, access_location=)>])> path_length = 0, certificate_policies = None certificate_policies_critical = False crl_full_names = [, ] crl_distribution_points_critical = False, extended_key_usage = None extended_key_usage_critical = False, inhibit_any_policy = None issuer_alternative_name = None key_usage = key_usage_critical = True, permit_name = None, exclude_name = None require_explicit_policy = None, inhibit_policy_mapping = None subject_alternative_name = None, subject_alternative_name_critical = False caa = '', website = '', tos = '' options = {'acme_enabled': None, 'acme_profile': None, 'acme_requires_contact': None, 'default_hostname': None, ...} expires_datetime = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) common_name = 'extensions_with_formatting.example.com' extensions = {: , cr...lue='crl.example.com')>, ], relative_name=None, reasons=None, crl_issuer=None)>])>)>} def handle( # pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements self, name: str, subject: x509.Name, parent: Optional[CertificateAuthority], expires: timedelta, key_size: Optional[int], key_type: ParsableKeyType, elliptic_curve: Optional[ec.EllipticCurve], algorithm: Optional[AllowedHashTypes], password: Optional[bytes], parent_password: Optional[bytes], sign_crl_full_name: List[str], sign_ocsp_responder: Optional[str], sign_ca_issuer: Optional[str], sign_issuer_alternative_name: Optional[x509.Extension[x509.IssuerAlternativeName]], # Authority Information Access extension authority_information_access: x509.AuthorityInformationAccess, # Basic Constraints extension path_length: Optional[int], # Certificate Policies extension certificate_policies: Optional[x509.CertificatePolicies], certificate_policies_critical: bool, # CRL Distribution Points extension crl_full_names: Optional[List[x509.GeneralName]], crl_distribution_points_critical: bool, # Extended Key Usage extension extended_key_usage: Optional[x509.ExtendedKeyUsage], extended_key_usage_critical: bool, # Inhibit anyPolicy extension: inhibit_any_policy: Optional[int], # Issuer Alternative Name extension: issuer_alternative_name: Optional[x509.IssuerAlternativeName], # Key Usage extension: key_usage: x509.KeyUsage, key_usage_critical: bool, # Name Constraints extension: permit_name: Optional[Iterable[x509.GeneralName]], exclude_name: Optional[Iterable[x509.GeneralName]], # Policy Constraints extension: require_explicit_policy: Optional[int], inhibit_policy_mapping: Optional[int], # Subject Alternative Name extension subject_alternative_name: Optional[x509.SubjectAlternativeName], subject_alternative_name_critical: bool, # ACMEv2 related options caa: str, website: str, tos: str, **options: Any, ) -> None: if not os.path.exists(ca_settings.CA_DIR): # pragma: no cover # TODO: set permissions os.makedirs(ca_settings.CA_DIR) # NOTE: When removing this in 1.26.0, don't forget to remove choices in the --key-type action. if key_type == "ECC": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=ECC is deprecated, use --key-type=EC instead.", RemovedInDjangoCA126Warning ) key_type = "EC" if key_type == "EdDSA": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=EdDSA is deprecated, use --key-type=Ed25519 instead.", RemovedInDjangoCA126Warning ) key_type = "Ed25519" # Validate private key parameters early so that we can return better feedback to the user. try: key_size, elliptic_curve = validate_private_key_parameters(key_type, key_size, elliptic_curve) except ValueError as ex: raise CommandError(*ex.args) from ex # Get/validate signature hash algorithm algorithm = self.get_hash_algorithm(key_type, algorithm) # In case of CAs, we silently set the expiry date to that of the parent CA if the user specified a # number of days that would make the CA expire after the parent CA. # # The reasoning is simple: When issuing the child CA, the default is automatically after that of the # parent if it wasn't issued on the same day. if parent and timezone.now() + expires > parent.expires: expires_datetime = parent.expires # Make sure expires_datetime is tz-aware, even if USE_TZ=False. if timezone.is_naive(expires_datetime): expires_datetime = timezone.make_aware(expires_datetime) else: expires_datetime = datetime.now(tz=tz.utc) + expires if parent and not parent.allows_intermediate_ca: raise CommandError("Parent CA cannot create intermediate CA due to path length restrictions.") if not parent and crl_full_names: raise CommandError("CRLs cannot be used to revoke root CAs.") if not parent and authority_information_access: if ocsp_responder := next( ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.OCSP ), None, ): responder_value = format_general_name(ocsp_responder.access_location) raise CommandError(f"{responder_value}: OCSP responder cannot be added to root CAs.") # No if check necessary here, authority_information_access contains either ocsp or ca_issuer # COVERAGE NOTE: next() will always return, so it's not a branch ca_issuer = next( # pragma: no branch ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.CA_ISSUERS ) ) responder_value = format_general_name(ca_issuer.access_location) raise CommandError(f"{responder_value}: CA issuer cannot be added to root CAs.") # We require a valid common name common_name = next((attr.value for attr in subject if attr.oid == NameOID.COMMON_NAME), False) if not common_name: raise CommandError("Subject must contain a common name (/CN=...).") # See if we can work with the private key if parent: self.test_private_key(parent, parent_password) subject = sort_name(subject) extensions: ExtensionMapping = { ExtensionOID.KEY_USAGE: x509.Extension( oid=ExtensionOID.KEY_USAGE, critical=key_usage_critical, value=key_usage ) } # Add the Authority Information Access extension if authority_information_access is not None: self._add_extension( extensions, authority_information_access, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.AUTHORITY_INFORMATION_ACCESS], ) # Add the Certificate Policies extension if certificate_policies is not None: self._add_extension(extensions, certificate_policies, certificate_policies_critical) # Add the CRL Distribution Points extension if crl_full_names is not None: distribution_point = x509.DistributionPoint( full_name=crl_full_names, relative_name=None, crl_issuer=None, reasons=None ) self._add_extension( extensions, x509.CRLDistributionPoints([distribution_point]), crl_distribution_points_critical ) # Add the Extended Key Usage extension if extended_key_usage is not None: self._add_extension(extensions, extended_key_usage, extended_key_usage_critical) # Add the inhibitAnyPolicy extension if inhibit_any_policy is not None: self._add_extension( extensions, x509.InhibitAnyPolicy(skip_certs=inhibit_any_policy), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.INHIBIT_ANY_POLICY], ) # Add the Issuer Alternative Name extension if issuer_alternative_name is not None: self._add_extension( extensions, issuer_alternative_name, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.ISSUER_ALTERNATIVE_NAME], ) # Add the NameConstraints extension if permit_name or exclude_name: self._add_extension( extensions, x509.NameConstraints(excluded_subtrees=exclude_name, permitted_subtrees=permit_name), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.NAME_CONSTRAINTS], ) # Add the Policy Constraints extension if require_explicit_policy is not None or inhibit_policy_mapping is not None: self._add_extension( extensions, x509.PolicyConstraints( require_explicit_policy=require_explicit_policy, inhibit_policy_mapping=inhibit_policy_mapping, ), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.POLICY_CONSTRAINTS], ) # Add the Subject Alternative Name extension if subject_alternative_name is not None: self._add_extension( extensions, subject_alternative_name, subject_alternative_name_critical, ) kwargs = {} for opt in ["path", "default_hostname"]: if options[opt] is not None: kwargs[opt] = options[opt] if ca_settings.CA_ENABLE_ACME: # pragma: no branch; never False because parser throws error already # These settings are only there if ACME is enabled for opt in ["acme_enabled", "acme_requires_contact"]: if options[opt] is not None: kwargs[opt] = options[opt] if acme_profile := options["acme_profile"]: if acme_profile not in ca_settings.CA_PROFILES: raise CommandError(f"{acme_profile}: Profile is not defined.") kwargs["acme_profile"] = acme_profile try: > ca = CertificateAuthority.objects.init( name=name, subject=subject, expires=expires_datetime, algorithm=algorithm, parent=parent, path_length=path_length, issuer_url=sign_ca_issuer, issuer_alt_name=sign_issuer_alternative_name, crl_url=sign_crl_full_name, ocsp_url=sign_ocsp_responder, password=password, parent_password=parent_password, elliptic_curve=elliptic_curve, key_type=key_type, key_size=key_size, caa=caa, website=website, terms_of_service=tos, extensions=extensions.values(), **kwargs, ) django_ca/management/commands/init_ca.py:461: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:101: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:101: in wrapper return func(*args, **kwargs) django_ca/managers.py:497: in init builder = get_cert_builder(expires, serial=serial) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expires = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) serial = 708809546002794786...3043451922252531329 def get_cert_builder(expires: datetime, serial: Optional[int] = None) -> x509.CertificateBuilder: """Get a basic X.509 certificate builder object. Parameters ---------- expires : datetime When this certificate is supposed to expire, as a timezone-aware datetime object. serial : int, optional Serial for the certificate. If not passed, a serial will be randomly generated using :py:func:`~cg:cryptography.x509.random_serial_number`. """ now = datetime.now(tz.utc).replace(second=0, microsecond=0) # NOTE: Explicitly passing a serial is used when creating a CA, where we want to add extensions where the # value references the serial. if serial is None: serial = x509.random_serial_number() if timezone.is_naive(expires): raise ValueError("expires must not be a naive datetime") if expires <= now: > raise ValueError("expires must be in the future") E ValueError: expires must be in the future django_ca/utils.py:1081: ValueError The above exception was the direct cause of the following exception: self = argv = ['manage.py', 'init_ca', 'extensions_with_formatting', '/CN=extensions_with_formatting.example.com', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ocsp-responder=DNS:example.com', ...] def run_from_argv(self, argv): """ Set up any environment changes requested (e.g., Python path and Django settings), then run this command. If the command raises a ``CommandError``, intercept it and print it sensibly to stderr. If the ``--traceback`` option is present or the raised ``Exception`` is not ``CommandError``, raise it. """ self._called_from_command_line = True parser = self.create_parser(argv[0], argv[1]) options = parser.parse_args(argv[2:]) cmd_options = vars(options) # Move positional args out of options to mimic legacy optparse args = cmd_options.pop("args", ()) handle_default_options(options) try: > self.execute(*args, **cmd_options) /usr/lib/python3/dist-packages/django/core/management/base.py:412: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/django/core/management/base.py:458: in execute output = self.handle(*args, **options) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = name = 'extensions_with_formatting' subject = parent = , expires = datetime.timedelta(days=3650) key_size = 1024, key_type = 'RSA', elliptic_curve = None algorithm = password = None, parent_password = None, sign_crl_full_name = [] sign_ocsp_responder = None, sign_ca_issuer = None sign_issuer_alternative_name = None authority_information_access = , a..._method=, access_location=)>])> path_length = 0, certificate_policies = None certificate_policies_critical = False crl_full_names = [, ] crl_distribution_points_critical = False, extended_key_usage = None extended_key_usage_critical = False, inhibit_any_policy = None issuer_alternative_name = None key_usage = key_usage_critical = True, permit_name = None, exclude_name = None require_explicit_policy = None, inhibit_policy_mapping = None subject_alternative_name = None, subject_alternative_name_critical = False caa = '', website = '', tos = '' options = {'acme_enabled': None, 'acme_profile': None, 'acme_requires_contact': None, 'default_hostname': None, ...} expires_datetime = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) common_name = 'extensions_with_formatting.example.com' extensions = {: , cr...lue='crl.example.com')>, ], relative_name=None, reasons=None, crl_issuer=None)>])>)>} def handle( # pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements self, name: str, subject: x509.Name, parent: Optional[CertificateAuthority], expires: timedelta, key_size: Optional[int], key_type: ParsableKeyType, elliptic_curve: Optional[ec.EllipticCurve], algorithm: Optional[AllowedHashTypes], password: Optional[bytes], parent_password: Optional[bytes], sign_crl_full_name: List[str], sign_ocsp_responder: Optional[str], sign_ca_issuer: Optional[str], sign_issuer_alternative_name: Optional[x509.Extension[x509.IssuerAlternativeName]], # Authority Information Access extension authority_information_access: x509.AuthorityInformationAccess, # Basic Constraints extension path_length: Optional[int], # Certificate Policies extension certificate_policies: Optional[x509.CertificatePolicies], certificate_policies_critical: bool, # CRL Distribution Points extension crl_full_names: Optional[List[x509.GeneralName]], crl_distribution_points_critical: bool, # Extended Key Usage extension extended_key_usage: Optional[x509.ExtendedKeyUsage], extended_key_usage_critical: bool, # Inhibit anyPolicy extension: inhibit_any_policy: Optional[int], # Issuer Alternative Name extension: issuer_alternative_name: Optional[x509.IssuerAlternativeName], # Key Usage extension: key_usage: x509.KeyUsage, key_usage_critical: bool, # Name Constraints extension: permit_name: Optional[Iterable[x509.GeneralName]], exclude_name: Optional[Iterable[x509.GeneralName]], # Policy Constraints extension: require_explicit_policy: Optional[int], inhibit_policy_mapping: Optional[int], # Subject Alternative Name extension subject_alternative_name: Optional[x509.SubjectAlternativeName], subject_alternative_name_critical: bool, # ACMEv2 related options caa: str, website: str, tos: str, **options: Any, ) -> None: if not os.path.exists(ca_settings.CA_DIR): # pragma: no cover # TODO: set permissions os.makedirs(ca_settings.CA_DIR) # NOTE: When removing this in 1.26.0, don't forget to remove choices in the --key-type action. if key_type == "ECC": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=ECC is deprecated, use --key-type=EC instead.", RemovedInDjangoCA126Warning ) key_type = "EC" if key_type == "EdDSA": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=EdDSA is deprecated, use --key-type=Ed25519 instead.", RemovedInDjangoCA126Warning ) key_type = "Ed25519" # Validate private key parameters early so that we can return better feedback to the user. try: key_size, elliptic_curve = validate_private_key_parameters(key_type, key_size, elliptic_curve) except ValueError as ex: raise CommandError(*ex.args) from ex # Get/validate signature hash algorithm algorithm = self.get_hash_algorithm(key_type, algorithm) # In case of CAs, we silently set the expiry date to that of the parent CA if the user specified a # number of days that would make the CA expire after the parent CA. # # The reasoning is simple: When issuing the child CA, the default is automatically after that of the # parent if it wasn't issued on the same day. if parent and timezone.now() + expires > parent.expires: expires_datetime = parent.expires # Make sure expires_datetime is tz-aware, even if USE_TZ=False. if timezone.is_naive(expires_datetime): expires_datetime = timezone.make_aware(expires_datetime) else: expires_datetime = datetime.now(tz=tz.utc) + expires if parent and not parent.allows_intermediate_ca: raise CommandError("Parent CA cannot create intermediate CA due to path length restrictions.") if not parent and crl_full_names: raise CommandError("CRLs cannot be used to revoke root CAs.") if not parent and authority_information_access: if ocsp_responder := next( ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.OCSP ), None, ): responder_value = format_general_name(ocsp_responder.access_location) raise CommandError(f"{responder_value}: OCSP responder cannot be added to root CAs.") # No if check necessary here, authority_information_access contains either ocsp or ca_issuer # COVERAGE NOTE: next() will always return, so it's not a branch ca_issuer = next( # pragma: no branch ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.CA_ISSUERS ) ) responder_value = format_general_name(ca_issuer.access_location) raise CommandError(f"{responder_value}: CA issuer cannot be added to root CAs.") # We require a valid common name common_name = next((attr.value for attr in subject if attr.oid == NameOID.COMMON_NAME), False) if not common_name: raise CommandError("Subject must contain a common name (/CN=...).") # See if we can work with the private key if parent: self.test_private_key(parent, parent_password) subject = sort_name(subject) extensions: ExtensionMapping = { ExtensionOID.KEY_USAGE: x509.Extension( oid=ExtensionOID.KEY_USAGE, critical=key_usage_critical, value=key_usage ) } # Add the Authority Information Access extension if authority_information_access is not None: self._add_extension( extensions, authority_information_access, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.AUTHORITY_INFORMATION_ACCESS], ) # Add the Certificate Policies extension if certificate_policies is not None: self._add_extension(extensions, certificate_policies, certificate_policies_critical) # Add the CRL Distribution Points extension if crl_full_names is not None: distribution_point = x509.DistributionPoint( full_name=crl_full_names, relative_name=None, crl_issuer=None, reasons=None ) self._add_extension( extensions, x509.CRLDistributionPoints([distribution_point]), crl_distribution_points_critical ) # Add the Extended Key Usage extension if extended_key_usage is not None: self._add_extension(extensions, extended_key_usage, extended_key_usage_critical) # Add the inhibitAnyPolicy extension if inhibit_any_policy is not None: self._add_extension( extensions, x509.InhibitAnyPolicy(skip_certs=inhibit_any_policy), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.INHIBIT_ANY_POLICY], ) # Add the Issuer Alternative Name extension if issuer_alternative_name is not None: self._add_extension( extensions, issuer_alternative_name, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.ISSUER_ALTERNATIVE_NAME], ) # Add the NameConstraints extension if permit_name or exclude_name: self._add_extension( extensions, x509.NameConstraints(excluded_subtrees=exclude_name, permitted_subtrees=permit_name), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.NAME_CONSTRAINTS], ) # Add the Policy Constraints extension if require_explicit_policy is not None or inhibit_policy_mapping is not None: self._add_extension( extensions, x509.PolicyConstraints( require_explicit_policy=require_explicit_policy, inhibit_policy_mapping=inhibit_policy_mapping, ), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.POLICY_CONSTRAINTS], ) # Add the Subject Alternative Name extension if subject_alternative_name is not None: self._add_extension( extensions, subject_alternative_name, subject_alternative_name_critical, ) kwargs = {} for opt in ["path", "default_hostname"]: if options[opt] is not None: kwargs[opt] = options[opt] if ca_settings.CA_ENABLE_ACME: # pragma: no branch; never False because parser throws error already # These settings are only there if ACME is enabled for opt in ["acme_enabled", "acme_requires_contact"]: if options[opt] is not None: kwargs[opt] = options[opt] if acme_profile := options["acme_profile"]: if acme_profile not in ca_settings.CA_PROFILES: raise CommandError(f"{acme_profile}: Profile is not defined.") kwargs["acme_profile"] = acme_profile try: ca = CertificateAuthority.objects.init( name=name, subject=subject, expires=expires_datetime, algorithm=algorithm, parent=parent, path_length=path_length, issuer_url=sign_ca_issuer, issuer_alt_name=sign_issuer_alternative_name, crl_url=sign_crl_full_name, ocsp_url=sign_ocsp_responder, password=password, parent_password=parent_password, elliptic_curve=elliptic_curve, key_type=key_type, key_size=key_size, caa=caa, website=website, terms_of_service=tos, extensions=extensions.values(), **kwargs, ) except Exception as ex: # pragma: no cover > raise CommandError(ex) from ex E django.core.management.base.CommandError: expires must be in the future django_ca/management/commands/init_ca.py:484: CommandError During handling of the above exception, another exception occurred: self = name = 'extensions_with_formatting', chain = [] args = ('/CN=extensions_with_formatting.example.com', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ocsp-responder=...mple.com', '--ca-issuer=DNS:example.net', '--crl-full-name=DNS:crl.example.com', '--crl-full-name=DNS:crl.example.net') kwargs = {}, pre = post = def init_ca_e2e( self, name: str, *args: str, chain: Optional[List[CertificateAuthority]] = None, **kwargs: Any ) -> CertificateAuthority: """Run a init_ca command via cmd_e2e().""" if chain is None: chain = [] with self.assertCreateCASignals() as (pre, post): > out, err = self.cmd_e2e(["init_ca", name] + list(args)) django_ca/tests/commands/test_init_ca.py:72: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/base/mixins.py:771: in cmd_e2e util.execute() /usr/lib/python3/dist-packages/django/core/management/__init__.py:436: in execute self.fetch_command(subcommand).run_from_argv(self.argv) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = argv = ['manage.py', 'init_ca', 'extensions_with_formatting', '/CN=extensions_with_formatting.example.com', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ocsp-responder=DNS:example.com', ...] def run_from_argv(self, argv): """ Set up any environment changes requested (e.g., Python path and Django settings), then run this command. If the command raises a ``CommandError``, intercept it and print it sensibly to stderr. If the ``--traceback`` option is present or the raised ``Exception`` is not ``CommandError``, raise it. """ self._called_from_command_line = True parser = self.create_parser(argv[0], argv[1]) options = parser.parse_args(argv[2:]) cmd_options = vars(options) # Move positional args out of options to mimic legacy optparse args = cmd_options.pop("args", ()) handle_default_options(options) try: self.execute(*args, **cmd_options) except CommandError as e: if options.traceback: raise # SystemCheckError takes care of its own formatting. if isinstance(e, SystemCheckError): self.stderr.write(str(e), lambda x: x) else: self.stderr.write("%s: %s" % (e.__class__.__name__, e)) > sys.exit(e.returncode) E SystemExit: 1 /usr/lib/python3/dist-packages/django/core/management/base.py:422: SystemExit During handling of the above exception, another exception occurred: self = @override_tmpcadir(CA_MIN_KEY_SIZE=1024) def test_add_extensions_with_formatting_without_uri(self) -> None: """Test adding various extensions.""" root = self.load_ca("root") > ca = self.init_ca_e2e( "extensions_with_formatting", "/CN=extensions_with_formatting.example.com", f"--parent={root.serial}", "--ocsp-responder=DNS:example.com", "--ca-issuer=DNS:example.net", "--crl-full-name=DNS:crl.example.com", "--crl-full-name=DNS:crl.example.net", chain=[root], ) django_ca/tests/commands/test_init_ca.py:484: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/commands/test_init_ca.py:71: in init_ca_e2e with self.assertCreateCASignals() as (pre, post): /usr/lib/python3.12/contextlib.py:158: in __exit__ self.gen.throw(value) django_ca/tests/base/mixins.py:291: in assertCreateCASignals self.assertTrue(post_sig.called is post) E AssertionError: False is not true _________________ InitCATest.test_multiple_ocsp_and_ca_issuers _________________ self = name = 'test_multiple_ocsp_and_ca_issuer' subject = parent = , expires = datetime.timedelta(days=3650) key_size = 1024, key_type = 'RSA', elliptic_curve = None algorithm = password = None, parent_password = None, sign_crl_full_name = [] sign_ocsp_responder = None, sign_ca_issuer = None sign_issuer_alternative_name = None authority_information_access = , a...1.5.5.7.48.2, name=caIssuers)>, access_location=)>])> path_length = 0, certificate_policies = None certificate_policies_critical = False, crl_full_names = None crl_distribution_points_critical = False, extended_key_usage = None extended_key_usage_critical = False, inhibit_any_policy = None issuer_alternative_name = None key_usage = key_usage_critical = True, permit_name = None, exclude_name = None require_explicit_policy = None, inhibit_policy_mapping = None subject_alternative_name = None, subject_alternative_name_critical = False caa = '', website = '', tos = '' options = {'acme_enabled': None, 'acme_profile': None, 'acme_requires_contact': None, 'default_hostname': None, ...} expires_datetime = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) common_name = 'test_multiple_ocsp_and_ca_issuer' extensions = {: , cr....5.7.48.2, name=caIssuers)>, access_location=)>])>)>} def handle( # pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements self, name: str, subject: x509.Name, parent: Optional[CertificateAuthority], expires: timedelta, key_size: Optional[int], key_type: ParsableKeyType, elliptic_curve: Optional[ec.EllipticCurve], algorithm: Optional[AllowedHashTypes], password: Optional[bytes], parent_password: Optional[bytes], sign_crl_full_name: List[str], sign_ocsp_responder: Optional[str], sign_ca_issuer: Optional[str], sign_issuer_alternative_name: Optional[x509.Extension[x509.IssuerAlternativeName]], # Authority Information Access extension authority_information_access: x509.AuthorityInformationAccess, # Basic Constraints extension path_length: Optional[int], # Certificate Policies extension certificate_policies: Optional[x509.CertificatePolicies], certificate_policies_critical: bool, # CRL Distribution Points extension crl_full_names: Optional[List[x509.GeneralName]], crl_distribution_points_critical: bool, # Extended Key Usage extension extended_key_usage: Optional[x509.ExtendedKeyUsage], extended_key_usage_critical: bool, # Inhibit anyPolicy extension: inhibit_any_policy: Optional[int], # Issuer Alternative Name extension: issuer_alternative_name: Optional[x509.IssuerAlternativeName], # Key Usage extension: key_usage: x509.KeyUsage, key_usage_critical: bool, # Name Constraints extension: permit_name: Optional[Iterable[x509.GeneralName]], exclude_name: Optional[Iterable[x509.GeneralName]], # Policy Constraints extension: require_explicit_policy: Optional[int], inhibit_policy_mapping: Optional[int], # Subject Alternative Name extension subject_alternative_name: Optional[x509.SubjectAlternativeName], subject_alternative_name_critical: bool, # ACMEv2 related options caa: str, website: str, tos: str, **options: Any, ) -> None: if not os.path.exists(ca_settings.CA_DIR): # pragma: no cover # TODO: set permissions os.makedirs(ca_settings.CA_DIR) # NOTE: When removing this in 1.26.0, don't forget to remove choices in the --key-type action. if key_type == "ECC": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=ECC is deprecated, use --key-type=EC instead.", RemovedInDjangoCA126Warning ) key_type = "EC" if key_type == "EdDSA": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=EdDSA is deprecated, use --key-type=Ed25519 instead.", RemovedInDjangoCA126Warning ) key_type = "Ed25519" # Validate private key parameters early so that we can return better feedback to the user. try: key_size, elliptic_curve = validate_private_key_parameters(key_type, key_size, elliptic_curve) except ValueError as ex: raise CommandError(*ex.args) from ex # Get/validate signature hash algorithm algorithm = self.get_hash_algorithm(key_type, algorithm) # In case of CAs, we silently set the expiry date to that of the parent CA if the user specified a # number of days that would make the CA expire after the parent CA. # # The reasoning is simple: When issuing the child CA, the default is automatically after that of the # parent if it wasn't issued on the same day. if parent and timezone.now() + expires > parent.expires: expires_datetime = parent.expires # Make sure expires_datetime is tz-aware, even if USE_TZ=False. if timezone.is_naive(expires_datetime): expires_datetime = timezone.make_aware(expires_datetime) else: expires_datetime = datetime.now(tz=tz.utc) + expires if parent and not parent.allows_intermediate_ca: raise CommandError("Parent CA cannot create intermediate CA due to path length restrictions.") if not parent and crl_full_names: raise CommandError("CRLs cannot be used to revoke root CAs.") if not parent and authority_information_access: if ocsp_responder := next( ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.OCSP ), None, ): responder_value = format_general_name(ocsp_responder.access_location) raise CommandError(f"{responder_value}: OCSP responder cannot be added to root CAs.") # No if check necessary here, authority_information_access contains either ocsp or ca_issuer # COVERAGE NOTE: next() will always return, so it's not a branch ca_issuer = next( # pragma: no branch ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.CA_ISSUERS ) ) responder_value = format_general_name(ca_issuer.access_location) raise CommandError(f"{responder_value}: CA issuer cannot be added to root CAs.") # We require a valid common name common_name = next((attr.value for attr in subject if attr.oid == NameOID.COMMON_NAME), False) if not common_name: raise CommandError("Subject must contain a common name (/CN=...).") # See if we can work with the private key if parent: self.test_private_key(parent, parent_password) subject = sort_name(subject) extensions: ExtensionMapping = { ExtensionOID.KEY_USAGE: x509.Extension( oid=ExtensionOID.KEY_USAGE, critical=key_usage_critical, value=key_usage ) } # Add the Authority Information Access extension if authority_information_access is not None: self._add_extension( extensions, authority_information_access, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.AUTHORITY_INFORMATION_ACCESS], ) # Add the Certificate Policies extension if certificate_policies is not None: self._add_extension(extensions, certificate_policies, certificate_policies_critical) # Add the CRL Distribution Points extension if crl_full_names is not None: distribution_point = x509.DistributionPoint( full_name=crl_full_names, relative_name=None, crl_issuer=None, reasons=None ) self._add_extension( extensions, x509.CRLDistributionPoints([distribution_point]), crl_distribution_points_critical ) # Add the Extended Key Usage extension if extended_key_usage is not None: self._add_extension(extensions, extended_key_usage, extended_key_usage_critical) # Add the inhibitAnyPolicy extension if inhibit_any_policy is not None: self._add_extension( extensions, x509.InhibitAnyPolicy(skip_certs=inhibit_any_policy), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.INHIBIT_ANY_POLICY], ) # Add the Issuer Alternative Name extension if issuer_alternative_name is not None: self._add_extension( extensions, issuer_alternative_name, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.ISSUER_ALTERNATIVE_NAME], ) # Add the NameConstraints extension if permit_name or exclude_name: self._add_extension( extensions, x509.NameConstraints(excluded_subtrees=exclude_name, permitted_subtrees=permit_name), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.NAME_CONSTRAINTS], ) # Add the Policy Constraints extension if require_explicit_policy is not None or inhibit_policy_mapping is not None: self._add_extension( extensions, x509.PolicyConstraints( require_explicit_policy=require_explicit_policy, inhibit_policy_mapping=inhibit_policy_mapping, ), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.POLICY_CONSTRAINTS], ) # Add the Subject Alternative Name extension if subject_alternative_name is not None: self._add_extension( extensions, subject_alternative_name, subject_alternative_name_critical, ) kwargs = {} for opt in ["path", "default_hostname"]: if options[opt] is not None: kwargs[opt] = options[opt] if ca_settings.CA_ENABLE_ACME: # pragma: no branch; never False because parser throws error already # These settings are only there if ACME is enabled for opt in ["acme_enabled", "acme_requires_contact"]: if options[opt] is not None: kwargs[opt] = options[opt] if acme_profile := options["acme_profile"]: if acme_profile not in ca_settings.CA_PROFILES: raise CommandError(f"{acme_profile}: Profile is not defined.") kwargs["acme_profile"] = acme_profile try: > ca = CertificateAuthority.objects.init( name=name, subject=subject, expires=expires_datetime, algorithm=algorithm, parent=parent, path_length=path_length, issuer_url=sign_ca_issuer, issuer_alt_name=sign_issuer_alternative_name, crl_url=sign_crl_full_name, ocsp_url=sign_ocsp_responder, password=password, parent_password=parent_password, elliptic_curve=elliptic_curve, key_type=key_type, key_size=key_size, caa=caa, website=website, terms_of_service=tos, extensions=extensions.values(), **kwargs, ) django_ca/management/commands/init_ca.py:461: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:101: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:101: in wrapper return func(*args, **kwargs) django_ca/managers.py:497: in init builder = get_cert_builder(expires, serial=serial) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expires = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) serial = 183258621483481827...3174513237884014336 def get_cert_builder(expires: datetime, serial: Optional[int] = None) -> x509.CertificateBuilder: """Get a basic X.509 certificate builder object. Parameters ---------- expires : datetime When this certificate is supposed to expire, as a timezone-aware datetime object. serial : int, optional Serial for the certificate. If not passed, a serial will be randomly generated using :py:func:`~cg:cryptography.x509.random_serial_number`. """ now = datetime.now(tz.utc).replace(second=0, microsecond=0) # NOTE: Explicitly passing a serial is used when creating a CA, where we want to add extensions where the # value references the serial. if serial is None: serial = x509.random_serial_number() if timezone.is_naive(expires): raise ValueError("expires must not be a naive datetime") if expires <= now: > raise ValueError("expires must be in the future") E ValueError: expires must be in the future django_ca/utils.py:1081: ValueError The above exception was the direct cause of the following exception: self = argv = ['manage.py', 'init_ca', 'test_multiple_ocsp_and_ca_issuer', '/CN=test_multiple_ocsp_and_ca_issuer', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ca-ocsp-url=http://ocsp.example.com/one', ...] def run_from_argv(self, argv): """ Set up any environment changes requested (e.g., Python path and Django settings), then run this command. If the command raises a ``CommandError``, intercept it and print it sensibly to stderr. If the ``--traceback`` option is present or the raised ``Exception`` is not ``CommandError``, raise it. """ self._called_from_command_line = True parser = self.create_parser(argv[0], argv[1]) options = parser.parse_args(argv[2:]) cmd_options = vars(options) # Move positional args out of options to mimic legacy optparse args = cmd_options.pop("args", ()) handle_default_options(options) try: > self.execute(*args, **cmd_options) /usr/lib/python3/dist-packages/django/core/management/base.py:412: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/django/core/management/base.py:458: in execute output = self.handle(*args, **options) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = name = 'test_multiple_ocsp_and_ca_issuer' subject = parent = , expires = datetime.timedelta(days=3650) key_size = 1024, key_type = 'RSA', elliptic_curve = None algorithm = password = None, parent_password = None, sign_crl_full_name = [] sign_ocsp_responder = None, sign_ca_issuer = None sign_issuer_alternative_name = None authority_information_access = , a...1.5.5.7.48.2, name=caIssuers)>, access_location=)>])> path_length = 0, certificate_policies = None certificate_policies_critical = False, crl_full_names = None crl_distribution_points_critical = False, extended_key_usage = None extended_key_usage_critical = False, inhibit_any_policy = None issuer_alternative_name = None key_usage = key_usage_critical = True, permit_name = None, exclude_name = None require_explicit_policy = None, inhibit_policy_mapping = None subject_alternative_name = None, subject_alternative_name_critical = False caa = '', website = '', tos = '' options = {'acme_enabled': None, 'acme_profile': None, 'acme_requires_contact': None, 'default_hostname': None, ...} expires_datetime = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) common_name = 'test_multiple_ocsp_and_ca_issuer' extensions = {: , cr....5.7.48.2, name=caIssuers)>, access_location=)>])>)>} def handle( # pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements self, name: str, subject: x509.Name, parent: Optional[CertificateAuthority], expires: timedelta, key_size: Optional[int], key_type: ParsableKeyType, elliptic_curve: Optional[ec.EllipticCurve], algorithm: Optional[AllowedHashTypes], password: Optional[bytes], parent_password: Optional[bytes], sign_crl_full_name: List[str], sign_ocsp_responder: Optional[str], sign_ca_issuer: Optional[str], sign_issuer_alternative_name: Optional[x509.Extension[x509.IssuerAlternativeName]], # Authority Information Access extension authority_information_access: x509.AuthorityInformationAccess, # Basic Constraints extension path_length: Optional[int], # Certificate Policies extension certificate_policies: Optional[x509.CertificatePolicies], certificate_policies_critical: bool, # CRL Distribution Points extension crl_full_names: Optional[List[x509.GeneralName]], crl_distribution_points_critical: bool, # Extended Key Usage extension extended_key_usage: Optional[x509.ExtendedKeyUsage], extended_key_usage_critical: bool, # Inhibit anyPolicy extension: inhibit_any_policy: Optional[int], # Issuer Alternative Name extension: issuer_alternative_name: Optional[x509.IssuerAlternativeName], # Key Usage extension: key_usage: x509.KeyUsage, key_usage_critical: bool, # Name Constraints extension: permit_name: Optional[Iterable[x509.GeneralName]], exclude_name: Optional[Iterable[x509.GeneralName]], # Policy Constraints extension: require_explicit_policy: Optional[int], inhibit_policy_mapping: Optional[int], # Subject Alternative Name extension subject_alternative_name: Optional[x509.SubjectAlternativeName], subject_alternative_name_critical: bool, # ACMEv2 related options caa: str, website: str, tos: str, **options: Any, ) -> None: if not os.path.exists(ca_settings.CA_DIR): # pragma: no cover # TODO: set permissions os.makedirs(ca_settings.CA_DIR) # NOTE: When removing this in 1.26.0, don't forget to remove choices in the --key-type action. if key_type == "ECC": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=ECC is deprecated, use --key-type=EC instead.", RemovedInDjangoCA126Warning ) key_type = "EC" if key_type == "EdDSA": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=EdDSA is deprecated, use --key-type=Ed25519 instead.", RemovedInDjangoCA126Warning ) key_type = "Ed25519" # Validate private key parameters early so that we can return better feedback to the user. try: key_size, elliptic_curve = validate_private_key_parameters(key_type, key_size, elliptic_curve) except ValueError as ex: raise CommandError(*ex.args) from ex # Get/validate signature hash algorithm algorithm = self.get_hash_algorithm(key_type, algorithm) # In case of CAs, we silently set the expiry date to that of the parent CA if the user specified a # number of days that would make the CA expire after the parent CA. # # The reasoning is simple: When issuing the child CA, the default is automatically after that of the # parent if it wasn't issued on the same day. if parent and timezone.now() + expires > parent.expires: expires_datetime = parent.expires # Make sure expires_datetime is tz-aware, even if USE_TZ=False. if timezone.is_naive(expires_datetime): expires_datetime = timezone.make_aware(expires_datetime) else: expires_datetime = datetime.now(tz=tz.utc) + expires if parent and not parent.allows_intermediate_ca: raise CommandError("Parent CA cannot create intermediate CA due to path length restrictions.") if not parent and crl_full_names: raise CommandError("CRLs cannot be used to revoke root CAs.") if not parent and authority_information_access: if ocsp_responder := next( ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.OCSP ), None, ): responder_value = format_general_name(ocsp_responder.access_location) raise CommandError(f"{responder_value}: OCSP responder cannot be added to root CAs.") # No if check necessary here, authority_information_access contains either ocsp or ca_issuer # COVERAGE NOTE: next() will always return, so it's not a branch ca_issuer = next( # pragma: no branch ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.CA_ISSUERS ) ) responder_value = format_general_name(ca_issuer.access_location) raise CommandError(f"{responder_value}: CA issuer cannot be added to root CAs.") # We require a valid common name common_name = next((attr.value for attr in subject if attr.oid == NameOID.COMMON_NAME), False) if not common_name: raise CommandError("Subject must contain a common name (/CN=...).") # See if we can work with the private key if parent: self.test_private_key(parent, parent_password) subject = sort_name(subject) extensions: ExtensionMapping = { ExtensionOID.KEY_USAGE: x509.Extension( oid=ExtensionOID.KEY_USAGE, critical=key_usage_critical, value=key_usage ) } # Add the Authority Information Access extension if authority_information_access is not None: self._add_extension( extensions, authority_information_access, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.AUTHORITY_INFORMATION_ACCESS], ) # Add the Certificate Policies extension if certificate_policies is not None: self._add_extension(extensions, certificate_policies, certificate_policies_critical) # Add the CRL Distribution Points extension if crl_full_names is not None: distribution_point = x509.DistributionPoint( full_name=crl_full_names, relative_name=None, crl_issuer=None, reasons=None ) self._add_extension( extensions, x509.CRLDistributionPoints([distribution_point]), crl_distribution_points_critical ) # Add the Extended Key Usage extension if extended_key_usage is not None: self._add_extension(extensions, extended_key_usage, extended_key_usage_critical) # Add the inhibitAnyPolicy extension if inhibit_any_policy is not None: self._add_extension( extensions, x509.InhibitAnyPolicy(skip_certs=inhibit_any_policy), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.INHIBIT_ANY_POLICY], ) # Add the Issuer Alternative Name extension if issuer_alternative_name is not None: self._add_extension( extensions, issuer_alternative_name, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.ISSUER_ALTERNATIVE_NAME], ) # Add the NameConstraints extension if permit_name or exclude_name: self._add_extension( extensions, x509.NameConstraints(excluded_subtrees=exclude_name, permitted_subtrees=permit_name), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.NAME_CONSTRAINTS], ) # Add the Policy Constraints extension if require_explicit_policy is not None or inhibit_policy_mapping is not None: self._add_extension( extensions, x509.PolicyConstraints( require_explicit_policy=require_explicit_policy, inhibit_policy_mapping=inhibit_policy_mapping, ), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.POLICY_CONSTRAINTS], ) # Add the Subject Alternative Name extension if subject_alternative_name is not None: self._add_extension( extensions, subject_alternative_name, subject_alternative_name_critical, ) kwargs = {} for opt in ["path", "default_hostname"]: if options[opt] is not None: kwargs[opt] = options[opt] if ca_settings.CA_ENABLE_ACME: # pragma: no branch; never False because parser throws error already # These settings are only there if ACME is enabled for opt in ["acme_enabled", "acme_requires_contact"]: if options[opt] is not None: kwargs[opt] = options[opt] if acme_profile := options["acme_profile"]: if acme_profile not in ca_settings.CA_PROFILES: raise CommandError(f"{acme_profile}: Profile is not defined.") kwargs["acme_profile"] = acme_profile try: ca = CertificateAuthority.objects.init( name=name, subject=subject, expires=expires_datetime, algorithm=algorithm, parent=parent, path_length=path_length, issuer_url=sign_ca_issuer, issuer_alt_name=sign_issuer_alternative_name, crl_url=sign_crl_full_name, ocsp_url=sign_ocsp_responder, password=password, parent_password=parent_password, elliptic_curve=elliptic_curve, key_type=key_type, key_size=key_size, caa=caa, website=website, terms_of_service=tos, extensions=extensions.values(), **kwargs, ) except Exception as ex: # pragma: no cover > raise CommandError(ex) from ex E django.core.management.base.CommandError: expires must be in the future django_ca/management/commands/init_ca.py:484: CommandError During handling of the above exception, another exception occurred: self = name = 'test_multiple_ocsp_and_ca_issuer' chain = [] args = ('/CN=test_multiple_ocsp_and_ca_issuer', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ca-ocsp-url=http://oc.../issuer.example.com/one', '--ca-ocsp-url=http://ocsp.example.net/two', '--ca-issuer-url=http://issuer.example.com/two') kwargs = {}, pre = post = def init_ca_e2e( self, name: str, *args: str, chain: Optional[List[CertificateAuthority]] = None, **kwargs: Any ) -> CertificateAuthority: """Run a init_ca command via cmd_e2e().""" if chain is None: chain = [] with self.assertCreateCASignals() as (pre, post): > out, err = self.cmd_e2e(["init_ca", name] + list(args)) django_ca/tests/commands/test_init_ca.py:72: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/base/mixins.py:771: in cmd_e2e util.execute() /usr/lib/python3/dist-packages/django/core/management/__init__.py:436: in execute self.fetch_command(subcommand).run_from_argv(self.argv) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = argv = ['manage.py', 'init_ca', 'test_multiple_ocsp_and_ca_issuer', '/CN=test_multiple_ocsp_and_ca_issuer', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ca-ocsp-url=http://ocsp.example.com/one', ...] def run_from_argv(self, argv): """ Set up any environment changes requested (e.g., Python path and Django settings), then run this command. If the command raises a ``CommandError``, intercept it and print it sensibly to stderr. If the ``--traceback`` option is present or the raised ``Exception`` is not ``CommandError``, raise it. """ self._called_from_command_line = True parser = self.create_parser(argv[0], argv[1]) options = parser.parse_args(argv[2:]) cmd_options = vars(options) # Move positional args out of options to mimic legacy optparse args = cmd_options.pop("args", ()) handle_default_options(options) try: self.execute(*args, **cmd_options) except CommandError as e: if options.traceback: raise # SystemCheckError takes care of its own formatting. if isinstance(e, SystemCheckError): self.stderr.write(str(e), lambda x: x) else: self.stderr.write("%s: %s" % (e.__class__.__name__, e)) > sys.exit(e.returncode) E SystemExit: 1 /usr/lib/python3/dist-packages/django/core/management/base.py:422: SystemExit During handling of the above exception, another exception occurred: self = @override_tmpcadir(CA_MIN_KEY_SIZE=1024) def test_multiple_ocsp_and_ca_issuers(self) -> None: """Test using multiple OCSP responders and CA issuers.""" root = self.load_ca("root") name = self._testMethodName[:32] ocsp_uri_one = "http://ocsp.example.com/one" ocsp_uri_two = "http://ocsp.example.net/two" issuer_uri_one = "http://issuer.example.com/one" issuer_uri_two = "http://issuer.example.com/two" > ca = self.init_ca_e2e( name, f"/CN={name}", f"--parent={root.serial}", # NOTE: mixing the order of arguments here. This way we make sure that the values are properly # sorted (by method) in the assertion for the extension. f"--ca-ocsp-url={ocsp_uri_one}", f"--ca-issuer-url={issuer_uri_one}", f"--ca-ocsp-url={ocsp_uri_two}", f"--ca-issuer-url={issuer_uri_two}", chain=[root], ) django_ca/tests/commands/test_init_ca.py:1027: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/commands/test_init_ca.py:71: in init_ca_e2e with self.assertCreateCASignals() as (pre, post): /usr/lib/python3.12/contextlib.py:158: in __exit__ self.gen.throw(value) django_ca/tests/base/mixins.py:291: in assertCreateCASignals self.assertTrue(post_sig.called is post) E AssertionError: False is not true ______________________ ViewCATestCase.test_acme_disabled _______________________ self = @override_tmpcadir(CA_ENABLE_ACME=False) def test_acme_disabled(self) -> None: """Test viewing when ACME is disabled.""" stdout, stderr = self.cmd("view_ca", self.cas["root"].serial, wrap=False) self.assertEqual(stderr, "") data = self.get_cert_context("root") > self.assertMultiLineEqual(stdout, expected["root-acme-disabled"].format(**data)) E AssertionError: '* Na[250 chars]tus: Expired\n* HPKP pin: OfMQVNzWUTEbiU4y6hBS[2504 chars]--\n' != '* Na[250 chars]tus: Valid\n* HPKP pin: OfMQVNzWUTEbiU4y6hBSbq[2502 chars]--\n' E Diff is 2920 characters long. Set self.maxDiff to None to see it. django_ca/tests/commands/test_view_ca.py:1457: AssertionError _________________________ ViewCATestCase.test_all_cas __________________________ self = @override_tmpcadir() def test_all_cas(self) -> None: """Test viewing all CAs.""" for name, ca in sorted(self.cas.items(), key=lambda t: t[0]): stdout, stderr = self.cmd("view_ca", ca.serial, wrap=False) data = self.get_cert_context(name) > self.assertMultiLineEqual(stdout, expected[name].format(**data), name) E AssertionError: '* Na[252 chars]tus: Expired\n* HPKP pin: 47J9/gQZ1KaXn1TGcQeu[3391 chars]--\n' != '* Na[252 chars]tus: Valid\n* HPKP pin: 47J9/gQZ1KaXn1TGcQeurg[3389 chars]--\n' E Diff is 3827 characters long. Set self.maxDiff to None to see it. : child django_ca/tests/commands/test_view_ca.py:1411: AssertionError ______________________ ViewCATestCase.test_no_extensions _______________________ self = @override_tmpcadir() def test_no_extensions(self) -> None: """Test viewing a CA without extensions.""" stdout, stderr = self.cmd("view_ca", self.cas["root"].serial, extensions=False, wrap=False) self.assertEqual(stderr, "") data = self.get_cert_context("root") > self.assertMultiLineEqual(stdout, expected["root-no-extensions"].format(**data)) E AssertionError: '* Na[250 chars]tus: Expired\n* HPKP pin: OfMQVNzWUTEbiU4y6hBS[2224 chars]--\n' != '* Na[250 chars]tus: Valid\n* HPKP pin: OfMQVNzWUTEbiU4y6hBSbq[2222 chars]--\n' E Diff is 2632 characters long. Set self.maxDiff to None to see it. django_ca/tests/commands/test_view_ca.py:1465: AssertionError ____________________ ViewCATestCase.test_no_no_private_key _____________________ self = @override_tmpcadir() def test_no_no_private_key(self) -> None: """Test viewing when we have no private key.""" def side_effect(cls: Any) -> None: raise NotImplementedError ca_storage = "django_ca.management.commands.view_ca.ca_storage.%s" with self.patch(ca_storage % "path", side_effect=side_effect) as path_mock, self.patch( ca_storage % "exists", return_value=True ) as exists_mock: stdout, stderr = self.cmd("view_ca", self.cas["root"].serial, wrap=False) path_mock.assert_called_once_with(self.cas["root"].private_key_path) exists_mock.assert_called_once_with(self.cas["root"].private_key_path) data = self.get_cert_context("root") data["key_path"] = self.cas["root"].private_key_path > self.assertMultiLineEqual(stdout, expected["root"].format(**data)) E AssertionError: '* Na[250 chars]tus: Expired\n* HPKP pin: OfMQVNzWUTEbiU4y6hBS[2524 chars]--\n' != '* Na[250 chars]tus: Valid\n* HPKP pin: OfMQVNzWUTEbiU4y6hBSbq[2522 chars]--\n' E Diff is 2943 characters long. Set self.maxDiff to None to see it. django_ca/tests/commands/test_view_ca.py:1484: AssertionError ________________________ ViewCATestCase.test_properties ________________________ self = @override_tmpcadir() def test_properties(self) -> None: """Test viewing of various optional properties.""" ca = self.cas["root"] hostname = "ca.example.com" ca.website = f"https://website.{hostname}" ca.terms_of_service = f"{ca.website}/tos/" ca.caa_identity = hostname ca.acme_enabled = True ca.acme_requires_contact = False ca.save() stdout, stderr = self.cmd("view_ca", ca.serial, wrap=False) self.assertEqual(stderr, "") data = self.get_cert_context("root") > self.assertMultiLineEqual(stdout, expected["root-properties"].format(ca=ca, **data)) E AssertionError: '* Na[250 chars]tus: Expired\n* HPKP pin: OfMQVNzWUTEbiU4y6hBS[2699 chars]--\n' != '* Na[250 chars]tus: Valid\n* HPKP pin: OfMQVNzWUTEbiU4y6hBSbq[2697 chars]--\n' E Diff is 3122 characters long. Set self.maxDiff to None to see it. django_ca/tests/commands/test_view_ca.py:1449: AssertionError __________________ ViewCATestCase.test_with_timezone_support ___________________ self = @override_tmpcadir(USE_TZ=True) def test_with_timezone_support(self) -> None: """Test viewing certificate with USE_TZ=True""" self.assertTrue(settings.USE_TZ) stdout, stderr = self.cmd("view_ca", self.ca.serial, wrap=False) data = self.get_cert_context(self.ca.name) > self.assertMultiLineEqual(stdout, expected[self.ca.name].format(**data), self.ca.name) E AssertionError: '* Na[252 chars]tus: Expired\n* HPKP pin: 47J9/gQZ1KaXn1TGcQeu[3391 chars]--\n' != '* Na[252 chars]tus: Valid\n* HPKP pin: 47J9/gQZ1KaXn1TGcQeurg[3389 chars]--\n' E Diff is 3827 characters long. Set self.maxDiff to None to see it. : child django_ca/tests/commands/test_view_ca.py:1421: AssertionError ___________________ ViewCATestCase.test_with_use_tz_is_false ___________________ self = @override_tmpcadir(USE_TZ=False) def test_with_use_tz_is_false(self) -> None: """Test viewing certificate without timezone support.""" self.assertFalse(settings.USE_TZ) stdout, stderr = self.cmd("view_ca", self.ca.serial, wrap=False) data = self.get_cert_context(self.ca.name) > self.assertMultiLineEqual(stdout, expected[self.ca.name].format(**data), self.ca.name) E AssertionError: '* Na[252 chars]tus: Expired\n* HPKP pin: 47J9/gQZ1KaXn1TGcQeu[3391 chars]--\n' != '* Na[252 chars]tus: Valid\n* HPKP pin: 47J9/gQZ1KaXn1TGcQeurg[3389 chars]--\n' E Diff is 3827 characters long. Set self.maxDiff to None to see it. : child django_ca/tests/commands/test_view_ca.py:1431: AssertionError _______________________ ViewCATestCase.test_wrap_digest ________________________ self = def test_wrap_digest(self) -> None: """Test wrapping the digest.""" data = self.get_cert_context("root") sha256 = data["sha256"] sha512 = data["sha512"] with mock.patch("shutil.get_terminal_size", return_value=os.terminal_size((64, 0))) as shutil_mock: stdout, stderr = self.cmd("view_ca", self.cas["root"].serial, pem=False, extensions=False) # Django calls get_terminal_size as well, so the number of calls is unpredictable shutil_mock.assert_called_with(fallback=(107, 100)) self.assertEqual(stderr, "") data["sha256"] = self._wrap_hash(f" SHA-256: {sha256}", 62) data["sha512"] = self._wrap_hash(f" SHA-512: {sha512}", 62) > self.assertMultiLineEqual(stdout, expected["root-no-wrap"].format(**data)) E AssertionError: '* Na[250 chars]tus: Expired\n* HPKP pin: OfMQVNzWUTEbiU4y6hBS[1085 chars]5D\n' != '* Na[250 chars]tus: Valid\n* HPKP pin: OfMQVNzWUTEbiU4y6hBSbq[1083 chars]5D\n' E Diff is 1476 characters long. Set self.maxDiff to None to see it. django_ca/tests/commands/test_view_ca.py:1503: AssertionError ______________________ CompletenessTestCase.test_nameoid _______________________ self = def test_nameoid(self) -> None: """Test that we support all NameOID instances.""" known_oids = [v for v in vars(x509.NameOID).values() if isinstance(v, x509.ObjectIdentifier)] > self.assertCountEqual(known_oids, list(constants.NAME_OID_NAMES.keys())) E AssertionError: Element counts were not equal: E First has 1, Second has 0: django_ca/tests/test_constants.py:139: AssertionError _________________________ OCSPTestGenericView.test_get _________________________ self = @override_tmpcadir() def test_get(self) -> None: """Do a basic GET request.""" data = base64.b64encode(req1).decode("utf-8") url = reverse("django_ca:ocsp-get-child", kwargs={"data": data}) response = self.client.get(url) self.assertEqual(response.status_code, HTTPStatus.OK) > self.assertOCSP(response, requested=[self.cert], nonce=req1_nonce) django_ca/tests/test_views_ocsp.py:365: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/test_views_ocsp.py:262: in assertOCSP self.assertEqual(ocsp_response["response_status"].native, status) E AssertionError: 'internal_error' != 'successful' E - internal_error E + successful ------------------------------ Captured log call ------------------------------- ERROR django_ca.views:views.py:165 list index out of range Traceback (most recent call last): File "/build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/views.py", line 163, in get return self.process_ocsp_request(decoded_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/views.py", line 315, in process_ocsp_request response = builder.sign(responder_key, responder_cert.signature_hash_algorithm) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/cryptography/x509/ocsp.py", line 596, in sign return ocsp.create_ocsp_response( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/freezegun/api.py", line 388, in now result = tz.fromutc(now.replace(tzinfo=tz)) + cls._tz_offset() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/freezegun/api.py", line 420, in _tz_offset return tz_offsets[-1] ~~~~~~~~~~^^^^ IndexError: list index out of range ________________________ OCSPTestGenericView.test_post _________________________ self = @override_tmpcadir() def test_post(self) -> None: """Do a basic POST request.""" response = self.client.post( reverse("django_ca:ocsp-post-child"), req1, content_type="application/ocsp-request" ) self.assertEqual(response.status_code, HTTPStatus.OK) > self.assertOCSP(response, requested=[self.cert], nonce=req1_nonce) django_ca/tests/test_views_ocsp.py:374: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/test_views_ocsp.py:262: in assertOCSP self.assertEqual(ocsp_response["response_status"].native, status) E AssertionError: 'internal_error' != 'successful' E - internal_error E + successful ------------------------------ Captured log call ------------------------------- ERROR django_ca.views:views.py:173 list index out of range Traceback (most recent call last): File "/build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/views.py", line 171, in post return self.process_ocsp_request(request.body) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/views.py", line 315, in process_ocsp_request response = builder.sign(responder_key, responder_cert.signature_hash_algorithm) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/cryptography/x509/ocsp.py", line 596, in sign return ocsp.create_ocsp_response( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/freezegun/api.py", line 388, in now result = tz.fromutc(now.replace(tzinfo=tz)) + cls._tz_offset() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/freezegun/api.py", line 420, in _tz_offset return tz_offsets[-1] ~~~~~~~~~~^^^^ IndexError: list index out of range =============================== warnings summary =============================== ../../../../../../usr/lib/python3/dist-packages/django/conf/__init__.py:267 /usr/lib/python3/dist-packages/django/conf/__init__.py:267: RemovedInDjango50Warning: The USE_L10N setting is deprecated. Starting with Django 5.0, localized formatting of data will always be enabled. For example Django will display numbers and dates using the format of the current locale. warnings.warn(USE_L10N_DEPRECATED_MSG, RemovedInDjango50Warning) ../../../../../../usr/lib/python3/dist-packages/acme/crypto_util.py:372 /usr/lib/python3/dist-packages/acme/crypto_util.py:372: DeprecationWarning: X509Extension support in pyOpenSSL is deprecated. You should use the APIs in cryptography. extensions: Optional[List[crypto.X509Extension]] = None, django_ca/utils.py:1166 /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/utils.py:1166: RemovedInDjango51Warning: django.core.files.storage.get_storage_class is deprecated in favor of using django.core.files.storage.storages. ca_storage_cls = get_storage_class(ca_settings.CA_FILE_STORAGE) ../../../../../../usr/lib/python3.12/unittest/loader.py:63 /usr/lib/python3.12/unittest/loader.py:63: PytestCollectionWarning: cannot collect test class 'TestLoader' because it has a __init__ constructor (from: .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/extensions/test_doctests.py) class TestLoader(object): ../../../../../../usr/lib/python3.12/unittest/suite.py:92 /usr/lib/python3.12/unittest/suite.py:92: PytestCollectionWarning: cannot collect test class 'TestSuite' because it has a __init__ constructor (from: .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/extensions/test_doctests.py) class TestSuite(BaseTestSuite): django_ca/tests/extensions/test_extension_values.py:45 /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/tests/extensions/test_extension_values.py:45: PytestCollectionWarning: cannot collect test class 'TestValueDict' because it has a __init__ constructor (from: .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/extensions/test_extension_values.py) class TestValueDict(_TestValueDict, total=False): ../../../../../../usr/lib/python3.12/unittest/loader.py:63 /usr/lib/python3.12/unittest/loader.py:63: PytestCollectionWarning: cannot collect test class 'TestLoader' because it has a __init__ constructor (from: .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_management_actions.py) class TestLoader(object): ../../../../../../usr/lib/python3.12/unittest/suite.py:92 /usr/lib/python3.12/unittest/suite.py:92: PytestCollectionWarning: cannot collect test class 'TestSuite' because it has a __init__ constructor (from: .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_management_actions.py) class TestSuite(BaseTestSuite): .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_authorization.py: 22 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_directory.py: 9 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_new_account.py: 22 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_new_nonce.py: 3 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_new_order.py: 23 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_order.py: 25 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_revocation.py: 74 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_update_account.py: 22 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_view_cert.py: 21 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/admin/test_admin_ca.py: 8 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/admin/test_extra_views.py: 14 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/admin/test_views.py: 6 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_cache_crls.py: 2 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_cert_watchers.py: 1 warning .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_convert_timestamps.py: 4 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_dump_ca.py: 7 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_dump_cert.py: 6 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_dump_crl.py: 17 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_edit_ca.py: 6 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_import_ca.py: 6 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_import_cert.py: 3 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_init_ca.py: 26 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_list_cas.py: 5 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_list_certs.py: 5 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_notify.py: 4 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_regenerate_ocsp_keys.py: 11 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_resign_cert.py: 16 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_revoke_cert.py: 7 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_sign_cert.py: 27 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_view_ca.py: 8 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_view_cert.py: 17 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/extensions/test_admin_html.py: 2 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/extensions/test_extension_values.py: 2 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_admin_acme.py: 16 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_base.py: 2 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_docs.py: 2 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_management_actions.py: 11 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_managers.py: 24 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py: 93 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_profiles.py: 17 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_querysets.py: 20 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_tasks.py: 29 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_verification.py: 7 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_views.py: 17 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_views_ocsp.py: 42 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_challenge.py: 20 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_order_finalize.py: 33 warnings /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/models.py:443: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_after_utc. return self.pub.loaded.not_valid_after.replace(tzinfo=tz.utc) .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_authorization.py: 22 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_directory.py: 9 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_new_account.py: 22 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_new_nonce.py: 3 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_new_order.py: 23 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_order.py: 25 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_revocation.py: 74 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_update_account.py: 22 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_view_cert.py: 21 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/admin/test_admin_ca.py: 8 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/admin/test_extra_views.py: 14 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/admin/test_views.py: 6 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_cache_crls.py: 2 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_cert_watchers.py: 1 warning .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_convert_timestamps.py: 4 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_dump_ca.py: 7 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_dump_cert.py: 6 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_dump_crl.py: 17 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_edit_ca.py: 6 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_import_ca.py: 6 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_import_cert.py: 3 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_init_ca.py: 26 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_list_cas.py: 5 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_list_certs.py: 5 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_notify.py: 4 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_regenerate_ocsp_keys.py: 11 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_resign_cert.py: 16 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_revoke_cert.py: 7 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_sign_cert.py: 27 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_view_ca.py: 8 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_view_cert.py: 17 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/extensions/test_admin_html.py: 2 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/extensions/test_extension_values.py: 2 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_admin_acme.py: 16 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_base.py: 2 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_docs.py: 2 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_management_actions.py: 11 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_managers.py: 24 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py: 93 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_profiles.py: 17 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_querysets.py: 20 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_tasks.py: 29 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_verification.py: 7 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_views.py: 17 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_views_ocsp.py: 42 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_challenge.py: 20 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/acme/views/test_order_finalize.py: 33 warnings /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/models.py:438: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_before_utc. return self.pub.loaded.not_valid_before.replace(tzinfo=tz.utc) .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_dump_crl.py: 8 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_init_ca.py: 2 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py: 11 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_views.py: 16 warnings /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/tests/base/mixins.py:259: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to last_update_utc. self.assertEqual(parsed_crl.last_update, datetime.utcnow()) .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_dump_crl.py: 8 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_init_ca.py: 2 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py: 11 warnings .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_views.py: 16 warnings /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/tests/base/mixins.py:260: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to next_update_utc. self.assertEqual(parsed_crl.next_update, expires_timestamp) .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_init_ca.py: 20 warnings /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/tests/base/mixins.py:551: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). now = datetime.utcnow() .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_init_ca.py::InitCATest::test_arguments_without_timezone_support .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_init_ca.py::InitCATest::test_arguments_without_timezone_support .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_init_ca.py::InitCATest::test_expires_override_with_use_tz_false .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_init_ca.py::InitCATest::test_expires_override_with_use_tz_false .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_init_ca.py::InitCATest::test_expires_override_with_use_tz_false .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/commands/test_init_ca.py::InitCATest::test_expires_override_with_use_tz_false /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/models.py:1143: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). now_naive = now = datetime.utcnow() .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py::CertificateAuthorityTests::test_ca_crl .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py::CertificateAuthorityTests::test_full_crl .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py::CertificateAuthorityTests::test_full_crl_without_timezone_support .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py::CertificateAuthorityTests::test_intermediate_crl .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py::CertificateAuthorityTests::test_user_crl .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_views.py::GenericCRLViewTests::test_basic .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_views.py::GenericCRLViewTests::test_ca_crl .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_views.py::GenericCRLWithoutTimezoneSupportViewTests::test_basic .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_views.py::GenericCRLWithoutTimezoneSupportViewTests::test_ca_crl /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/tests/base/mixins.py:266: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to revocation_date_utc. self.assertEqual(entry.revocation_date, datetime.utcnow()) .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_append_cn_to_san .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_cn_already_in_san .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_cn_not_in_san .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_non_default_extensions .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_non_default_values .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_simple .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_unparsable_cn /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py:669: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_before_utc. self.assertEqual(cert.not_valid_before, datetime.utcnow()) .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_non_default_values /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py:723: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_after_utc. self.assertEqual(cert.not_valid_after, expires.replace(tzinfo=None)) .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_simple /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_models.py:693: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_after_utc. self.assertEqual(cert.not_valid_after, datetime.utcnow() + ca_settings.CA_DEFAULT_EXPIRES) .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_views_ocsp.py::OCSPTestGenericView::test_get .pybuild/cpython3_3.12_django-ca/build/django_ca/tests/test_views_ocsp.py::OCSPTestGenericView::test_post /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build/django_ca/views.py:288: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). now = datetime.utcnow() -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED django_ca/tests/commands/test_init_ca.py::InitCATest::test_add_extensions_with_formatting FAILED django_ca/tests/commands/test_init_ca.py::InitCATest::test_add_extensions_with_formatting_without_uri FAILED django_ca/tests/commands/test_init_ca.py::InitCATest::test_multiple_ocsp_and_ca_issuers FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_acme_disabled FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_all_cas FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_no_extensions FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_no_no_private_key FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_properties FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_with_timezone_support FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_with_use_tz_is_false FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_wrap_digest FAILED django_ca/tests/test_constants.py::CompletenessTestCase::test_nameoid FAILED django_ca/tests/test_views_ocsp.py::OCSPTestGenericView::test_get - As... FAILED django_ca/tests/test_views_ocsp.py::OCSPTestGenericView::test_post - A... = 14 failed, 1100 passed, 33 skipped, 21 deselected, 1656 warnings in 295.49s (0:04:55) = E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.12_django-ca/build; python3.12 -m pytest --ds=ca.test_settings -k "not test_permission_denied and not test_create_cadir_permission_denied and not test_permission_denied and not Dns01ValidationTestCase and not AcmeValidateDns01ChallengeTestCase" --ignore=django_ca/tests/admin/test_actions.py --ignore=django_ca/tests/admin/test_add_cert.py I: pybuild pybuild:308: ln -s /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/docs/source/django_ca_sphinx /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca_sphinx I: pybuild base:311: cd /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build; python3.11 -m pytest --ds=ca.test_settings -k "not test_permission_denied and not test_create_cadir_permission_denied and not test_permission_denied and not Dns01ValidationTestCase and not AcmeValidateDns01ChallengeTestCase" --ignore=django_ca/tests/admin/test_actions.py --ignore=django_ca/tests/admin/test_add_cert.py ============================= test session starts ============================== platform linux -- Python 3.11.9, pytest-8.1.1, pluggy-1.5.0 django: settings: ca.test_settings (from option) rootdir: /build/reproducible-path/python-django-ca-1.25.0 configfile: pyproject.toml plugins: requests-mock-1.11.0, django-4.5.2 collected 1168 items / 21 deselected / 1147 selected django_ca/tests/acme/views/test_authorization.py ...................... [ 1%] django_ca/tests/acme/views/test_directory.py ......... [ 2%] django_ca/tests/acme/views/test_new_account.py ...................... [ 4%] django_ca/tests/acme/views/test_new_nonce.py ... [ 4%] django_ca/tests/acme/views/test_new_order.py ....................... [ 6%] django_ca/tests/acme/views/test_order.py ......................... [ 9%] django_ca/tests/acme/views/test_revocation.py .......................... [ 11%] ...............................s.......s....ss..s.... [ 15%] django_ca/tests/acme/views/test_update_account.py .................s.... [ 17%] . [ 17%] django_ca/tests/acme/views/test_view_cert.py ..................... [ 19%] django_ca/tests/admin/test_admin_ca.py ........ [ 20%] django_ca/tests/admin/test_extra_views.py ....................... [ 22%] django_ca/tests/admin/test_views.py ...... [ 23%] django_ca/tests/commands/test_cache_crls.py .. [ 23%] django_ca/tests/commands/test_cert_watchers.py . [ 23%] django_ca/tests/commands/test_convert_timestamps.py .... [ 23%] django_ca/tests/commands/test_dump_ca.py ....... [ 24%] django_ca/tests/commands/test_dump_cert.py ...... [ 24%] django_ca/tests/commands/test_dump_crl.py ................. [ 26%] django_ca/tests/commands/test_edit_ca.py ...... [ 26%] django_ca/tests/commands/test_import_ca.py ....... [ 27%] django_ca/tests/commands/test_import_cert.py ... [ 27%] django_ca/tests/commands/test_init_ca.py ..FF..................F........ [ 30%] ..... [ 30%] django_ca/tests/commands/test_list_cas.py ..... [ 31%] django_ca/tests/commands/test_list_certs.py ..... [ 31%] django_ca/tests/commands/test_notify.py .... [ 31%] django_ca/tests/commands/test_regenerate_ocsp_keys.py ........... [ 32%] django_ca/tests/commands/test_resign_cert.py ................ [ 34%] django_ca/tests/commands/test_revoke_cert.py ....... [ 34%] django_ca/tests/commands/test_sign_cert.py ........................... [ 37%] django_ca/tests/commands/test_view_ca.py FFFFFFFF [ 38%] django_ca/tests/commands/test_view_cert.py .......... [ 38%] django_ca/tests/extensions/test_admin_html.py .. [ 39%] django_ca/tests/extensions/test_extension_values.py .................... [ 40%] .................................................. [ 45%] django_ca/tests/extensions/test_unknown_extension.py ...... [ 45%] django_ca/tests/test_acme.py .... [ 46%] django_ca/tests/test_admin_acme.py ................ [ 47%] django_ca/tests/test_base.py .......... [ 48%] django_ca/tests/test_checks.py .... [ 48%] django_ca/tests/test_constants.py .......F... [ 49%] django_ca/tests/test_deprecation.py .. [ 49%] django_ca/tests/test_docs.py .. [ 49%] django_ca/tests/test_fields.py ................ [ 51%] django_ca/tests/test_management_actions.py ............................. [ 53%] ............................................ [ 57%] django_ca/tests/test_managers.py ............................. [ 60%] django_ca/tests/test_models.py ......................................... [ 63%] ......................................................... [ 68%] django_ca/tests/test_profiles.py ss............................... [ 71%] django_ca/tests/test_querysets.py ........ [ 72%] django_ca/tests/test_settings.py .......................... [ 74%] django_ca/tests/test_tasks.py ............................... [ 77%] django_ca/tests/test_utils.py .......................................... [ 80%] .............................................................. [ 86%] django_ca/tests/test_verification.py ..... [ 86%] django_ca/tests/test_views.py ................. [ 88%] django_ca/tests/test_views_ocsp.py FF................................... [ 91%] ..... [ 91%] django_ca/tests/acme/views/test_challenge.py .................... [ 93%] django_ca/tests/acme/views/test_order_finalize.py ...................... [ 95%] ........... [ 96%] django_ca/tests/test_querysets.py ............ [ 97%] django_ca/tests/test_managers.py sssssssssssssssssssssssss [ 99%] django_ca/tests/test_sphinx_extensions.py .. [100%] =================================== FAILURES =================================== ________________ InitCATest.test_add_extensions_with_formatting ________________ self = name = 'extensions_with_formatting' subject = parent = , expires = datetime.timedelta(days=3650) key_size = 1024, key_type = 'RSA', elliptic_curve = None algorithm = password = None, parent_password = None, sign_crl_full_name = [] sign_ocsp_responder = None, sign_ca_issuer = None sign_issuer_alternative_name = None authority_information_access = , a...e=caIssuers)>, access_location=)>])> path_length = 0, certificate_policies = None certificate_policies_critical = False crl_full_names = [, ] crl_distribution_points_critical = False, extended_key_usage = None extended_key_usage_critical = False, inhibit_any_policy = None issuer_alternative_name = None key_usage = key_usage_critical = True, permit_name = None, exclude_name = None require_explicit_policy = None, inhibit_policy_mapping = None subject_alternative_name = None, subject_alternative_name_critical = False caa = '', website = '', tos = '' options = {'acme_enabled': None, 'acme_profile': None, 'acme_requires_contact': None, 'default_hostname': None, ...} expires_datetime = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) common_name = 'extensions_with_formatting.example.com' extensions = {: , cr...ourceIdentifier(value='http://example.net/crl/{CRL_PATH}')>], relative_name=None, reasons=None, crl_issuer=None)>])>)>} def handle( # pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements self, name: str, subject: x509.Name, parent: Optional[CertificateAuthority], expires: timedelta, key_size: Optional[int], key_type: ParsableKeyType, elliptic_curve: Optional[ec.EllipticCurve], algorithm: Optional[AllowedHashTypes], password: Optional[bytes], parent_password: Optional[bytes], sign_crl_full_name: List[str], sign_ocsp_responder: Optional[str], sign_ca_issuer: Optional[str], sign_issuer_alternative_name: Optional[x509.Extension[x509.IssuerAlternativeName]], # Authority Information Access extension authority_information_access: x509.AuthorityInformationAccess, # Basic Constraints extension path_length: Optional[int], # Certificate Policies extension certificate_policies: Optional[x509.CertificatePolicies], certificate_policies_critical: bool, # CRL Distribution Points extension crl_full_names: Optional[List[x509.GeneralName]], crl_distribution_points_critical: bool, # Extended Key Usage extension extended_key_usage: Optional[x509.ExtendedKeyUsage], extended_key_usage_critical: bool, # Inhibit anyPolicy extension: inhibit_any_policy: Optional[int], # Issuer Alternative Name extension: issuer_alternative_name: Optional[x509.IssuerAlternativeName], # Key Usage extension: key_usage: x509.KeyUsage, key_usage_critical: bool, # Name Constraints extension: permit_name: Optional[Iterable[x509.GeneralName]], exclude_name: Optional[Iterable[x509.GeneralName]], # Policy Constraints extension: require_explicit_policy: Optional[int], inhibit_policy_mapping: Optional[int], # Subject Alternative Name extension subject_alternative_name: Optional[x509.SubjectAlternativeName], subject_alternative_name_critical: bool, # ACMEv2 related options caa: str, website: str, tos: str, **options: Any, ) -> None: if not os.path.exists(ca_settings.CA_DIR): # pragma: no cover # TODO: set permissions os.makedirs(ca_settings.CA_DIR) # NOTE: When removing this in 1.26.0, don't forget to remove choices in the --key-type action. if key_type == "ECC": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=ECC is deprecated, use --key-type=EC instead.", RemovedInDjangoCA126Warning ) key_type = "EC" if key_type == "EdDSA": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=EdDSA is deprecated, use --key-type=Ed25519 instead.", RemovedInDjangoCA126Warning ) key_type = "Ed25519" # Validate private key parameters early so that we can return better feedback to the user. try: key_size, elliptic_curve = validate_private_key_parameters(key_type, key_size, elliptic_curve) except ValueError as ex: raise CommandError(*ex.args) from ex # Get/validate signature hash algorithm algorithm = self.get_hash_algorithm(key_type, algorithm) # In case of CAs, we silently set the expiry date to that of the parent CA if the user specified a # number of days that would make the CA expire after the parent CA. # # The reasoning is simple: When issuing the child CA, the default is automatically after that of the # parent if it wasn't issued on the same day. if parent and timezone.now() + expires > parent.expires: expires_datetime = parent.expires # Make sure expires_datetime is tz-aware, even if USE_TZ=False. if timezone.is_naive(expires_datetime): expires_datetime = timezone.make_aware(expires_datetime) else: expires_datetime = datetime.now(tz=tz.utc) + expires if parent and not parent.allows_intermediate_ca: raise CommandError("Parent CA cannot create intermediate CA due to path length restrictions.") if not parent and crl_full_names: raise CommandError("CRLs cannot be used to revoke root CAs.") if not parent and authority_information_access: if ocsp_responder := next( ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.OCSP ), None, ): responder_value = format_general_name(ocsp_responder.access_location) raise CommandError(f"{responder_value}: OCSP responder cannot be added to root CAs.") # No if check necessary here, authority_information_access contains either ocsp or ca_issuer # COVERAGE NOTE: next() will always return, so it's not a branch ca_issuer = next( # pragma: no branch ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.CA_ISSUERS ) ) responder_value = format_general_name(ca_issuer.access_location) raise CommandError(f"{responder_value}: CA issuer cannot be added to root CAs.") # We require a valid common name common_name = next((attr.value for attr in subject if attr.oid == NameOID.COMMON_NAME), False) if not common_name: raise CommandError("Subject must contain a common name (/CN=...).") # See if we can work with the private key if parent: self.test_private_key(parent, parent_password) subject = sort_name(subject) extensions: ExtensionMapping = { ExtensionOID.KEY_USAGE: x509.Extension( oid=ExtensionOID.KEY_USAGE, critical=key_usage_critical, value=key_usage ) } # Add the Authority Information Access extension if authority_information_access is not None: self._add_extension( extensions, authority_information_access, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.AUTHORITY_INFORMATION_ACCESS], ) # Add the Certificate Policies extension if certificate_policies is not None: self._add_extension(extensions, certificate_policies, certificate_policies_critical) # Add the CRL Distribution Points extension if crl_full_names is not None: distribution_point = x509.DistributionPoint( full_name=crl_full_names, relative_name=None, crl_issuer=None, reasons=None ) self._add_extension( extensions, x509.CRLDistributionPoints([distribution_point]), crl_distribution_points_critical ) # Add the Extended Key Usage extension if extended_key_usage is not None: self._add_extension(extensions, extended_key_usage, extended_key_usage_critical) # Add the inhibitAnyPolicy extension if inhibit_any_policy is not None: self._add_extension( extensions, x509.InhibitAnyPolicy(skip_certs=inhibit_any_policy), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.INHIBIT_ANY_POLICY], ) # Add the Issuer Alternative Name extension if issuer_alternative_name is not None: self._add_extension( extensions, issuer_alternative_name, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.ISSUER_ALTERNATIVE_NAME], ) # Add the NameConstraints extension if permit_name or exclude_name: self._add_extension( extensions, x509.NameConstraints(excluded_subtrees=exclude_name, permitted_subtrees=permit_name), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.NAME_CONSTRAINTS], ) # Add the Policy Constraints extension if require_explicit_policy is not None or inhibit_policy_mapping is not None: self._add_extension( extensions, x509.PolicyConstraints( require_explicit_policy=require_explicit_policy, inhibit_policy_mapping=inhibit_policy_mapping, ), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.POLICY_CONSTRAINTS], ) # Add the Subject Alternative Name extension if subject_alternative_name is not None: self._add_extension( extensions, subject_alternative_name, subject_alternative_name_critical, ) kwargs = {} for opt in ["path", "default_hostname"]: if options[opt] is not None: kwargs[opt] = options[opt] if ca_settings.CA_ENABLE_ACME: # pragma: no branch; never False because parser throws error already # These settings are only there if ACME is enabled for opt in ["acme_enabled", "acme_requires_contact"]: if options[opt] is not None: kwargs[opt] = options[opt] if acme_profile := options["acme_profile"]: if acme_profile not in ca_settings.CA_PROFILES: raise CommandError(f"{acme_profile}: Profile is not defined.") kwargs["acme_profile"] = acme_profile try: > ca = CertificateAuthority.objects.init( name=name, subject=subject, expires=expires_datetime, algorithm=algorithm, parent=parent, path_length=path_length, issuer_url=sign_ca_issuer, issuer_alt_name=sign_issuer_alternative_name, crl_url=sign_crl_full_name, ocsp_url=sign_ocsp_responder, password=password, parent_password=parent_password, elliptic_curve=elliptic_curve, key_type=key_type, key_size=key_size, caa=caa, website=website, terms_of_service=tos, extensions=extensions.values(), **kwargs, ) django_ca/management/commands/init_ca.py:461: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:101: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:101: in wrapper return func(*args, **kwargs) django_ca/managers.py:497: in init builder = get_cert_builder(expires, serial=serial) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expires = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) serial = 712515775611255244...1116308314873754098 def get_cert_builder(expires: datetime, serial: Optional[int] = None) -> x509.CertificateBuilder: """Get a basic X.509 certificate builder object. Parameters ---------- expires : datetime When this certificate is supposed to expire, as a timezone-aware datetime object. serial : int, optional Serial for the certificate. If not passed, a serial will be randomly generated using :py:func:`~cg:cryptography.x509.random_serial_number`. """ now = datetime.now(tz.utc).replace(second=0, microsecond=0) # NOTE: Explicitly passing a serial is used when creating a CA, where we want to add extensions where the # value references the serial. if serial is None: serial = x509.random_serial_number() if timezone.is_naive(expires): raise ValueError("expires must not be a naive datetime") if expires <= now: > raise ValueError("expires must be in the future") E ValueError: expires must be in the future django_ca/utils.py:1081: ValueError The above exception was the direct cause of the following exception: self = argv = ['manage.py', 'init_ca', 'extensions_with_formatting', '/CN=extensions_with_formatting.example.com', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ocsp-responder=https://example.com/ocsp/{OCSP_PATH}', ...] def run_from_argv(self, argv): """ Set up any environment changes requested (e.g., Python path and Django settings), then run this command. If the command raises a ``CommandError``, intercept it and print it sensibly to stderr. If the ``--traceback`` option is present or the raised ``Exception`` is not ``CommandError``, raise it. """ self._called_from_command_line = True parser = self.create_parser(argv[0], argv[1]) options = parser.parse_args(argv[2:]) cmd_options = vars(options) # Move positional args out of options to mimic legacy optparse args = cmd_options.pop("args", ()) handle_default_options(options) try: > self.execute(*args, **cmd_options) /usr/lib/python3/dist-packages/django/core/management/base.py:412: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/django/core/management/base.py:458: in execute output = self.handle(*args, **options) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = name = 'extensions_with_formatting' subject = parent = , expires = datetime.timedelta(days=3650) key_size = 1024, key_type = 'RSA', elliptic_curve = None algorithm = password = None, parent_password = None, sign_crl_full_name = [] sign_ocsp_responder = None, sign_ca_issuer = None sign_issuer_alternative_name = None authority_information_access = , a...e=caIssuers)>, access_location=)>])> path_length = 0, certificate_policies = None certificate_policies_critical = False crl_full_names = [, ] crl_distribution_points_critical = False, extended_key_usage = None extended_key_usage_critical = False, inhibit_any_policy = None issuer_alternative_name = None key_usage = key_usage_critical = True, permit_name = None, exclude_name = None require_explicit_policy = None, inhibit_policy_mapping = None subject_alternative_name = None, subject_alternative_name_critical = False caa = '', website = '', tos = '' options = {'acme_enabled': None, 'acme_profile': None, 'acme_requires_contact': None, 'default_hostname': None, ...} expires_datetime = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) common_name = 'extensions_with_formatting.example.com' extensions = {: , cr...ourceIdentifier(value='http://example.net/crl/{CRL_PATH}')>], relative_name=None, reasons=None, crl_issuer=None)>])>)>} def handle( # pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements self, name: str, subject: x509.Name, parent: Optional[CertificateAuthority], expires: timedelta, key_size: Optional[int], key_type: ParsableKeyType, elliptic_curve: Optional[ec.EllipticCurve], algorithm: Optional[AllowedHashTypes], password: Optional[bytes], parent_password: Optional[bytes], sign_crl_full_name: List[str], sign_ocsp_responder: Optional[str], sign_ca_issuer: Optional[str], sign_issuer_alternative_name: Optional[x509.Extension[x509.IssuerAlternativeName]], # Authority Information Access extension authority_information_access: x509.AuthorityInformationAccess, # Basic Constraints extension path_length: Optional[int], # Certificate Policies extension certificate_policies: Optional[x509.CertificatePolicies], certificate_policies_critical: bool, # CRL Distribution Points extension crl_full_names: Optional[List[x509.GeneralName]], crl_distribution_points_critical: bool, # Extended Key Usage extension extended_key_usage: Optional[x509.ExtendedKeyUsage], extended_key_usage_critical: bool, # Inhibit anyPolicy extension: inhibit_any_policy: Optional[int], # Issuer Alternative Name extension: issuer_alternative_name: Optional[x509.IssuerAlternativeName], # Key Usage extension: key_usage: x509.KeyUsage, key_usage_critical: bool, # Name Constraints extension: permit_name: Optional[Iterable[x509.GeneralName]], exclude_name: Optional[Iterable[x509.GeneralName]], # Policy Constraints extension: require_explicit_policy: Optional[int], inhibit_policy_mapping: Optional[int], # Subject Alternative Name extension subject_alternative_name: Optional[x509.SubjectAlternativeName], subject_alternative_name_critical: bool, # ACMEv2 related options caa: str, website: str, tos: str, **options: Any, ) -> None: if not os.path.exists(ca_settings.CA_DIR): # pragma: no cover # TODO: set permissions os.makedirs(ca_settings.CA_DIR) # NOTE: When removing this in 1.26.0, don't forget to remove choices in the --key-type action. if key_type == "ECC": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=ECC is deprecated, use --key-type=EC instead.", RemovedInDjangoCA126Warning ) key_type = "EC" if key_type == "EdDSA": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=EdDSA is deprecated, use --key-type=Ed25519 instead.", RemovedInDjangoCA126Warning ) key_type = "Ed25519" # Validate private key parameters early so that we can return better feedback to the user. try: key_size, elliptic_curve = validate_private_key_parameters(key_type, key_size, elliptic_curve) except ValueError as ex: raise CommandError(*ex.args) from ex # Get/validate signature hash algorithm algorithm = self.get_hash_algorithm(key_type, algorithm) # In case of CAs, we silently set the expiry date to that of the parent CA if the user specified a # number of days that would make the CA expire after the parent CA. # # The reasoning is simple: When issuing the child CA, the default is automatically after that of the # parent if it wasn't issued on the same day. if parent and timezone.now() + expires > parent.expires: expires_datetime = parent.expires # Make sure expires_datetime is tz-aware, even if USE_TZ=False. if timezone.is_naive(expires_datetime): expires_datetime = timezone.make_aware(expires_datetime) else: expires_datetime = datetime.now(tz=tz.utc) + expires if parent and not parent.allows_intermediate_ca: raise CommandError("Parent CA cannot create intermediate CA due to path length restrictions.") if not parent and crl_full_names: raise CommandError("CRLs cannot be used to revoke root CAs.") if not parent and authority_information_access: if ocsp_responder := next( ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.OCSP ), None, ): responder_value = format_general_name(ocsp_responder.access_location) raise CommandError(f"{responder_value}: OCSP responder cannot be added to root CAs.") # No if check necessary here, authority_information_access contains either ocsp or ca_issuer # COVERAGE NOTE: next() will always return, so it's not a branch ca_issuer = next( # pragma: no branch ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.CA_ISSUERS ) ) responder_value = format_general_name(ca_issuer.access_location) raise CommandError(f"{responder_value}: CA issuer cannot be added to root CAs.") # We require a valid common name common_name = next((attr.value for attr in subject if attr.oid == NameOID.COMMON_NAME), False) if not common_name: raise CommandError("Subject must contain a common name (/CN=...).") # See if we can work with the private key if parent: self.test_private_key(parent, parent_password) subject = sort_name(subject) extensions: ExtensionMapping = { ExtensionOID.KEY_USAGE: x509.Extension( oid=ExtensionOID.KEY_USAGE, critical=key_usage_critical, value=key_usage ) } # Add the Authority Information Access extension if authority_information_access is not None: self._add_extension( extensions, authority_information_access, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.AUTHORITY_INFORMATION_ACCESS], ) # Add the Certificate Policies extension if certificate_policies is not None: self._add_extension(extensions, certificate_policies, certificate_policies_critical) # Add the CRL Distribution Points extension if crl_full_names is not None: distribution_point = x509.DistributionPoint( full_name=crl_full_names, relative_name=None, crl_issuer=None, reasons=None ) self._add_extension( extensions, x509.CRLDistributionPoints([distribution_point]), crl_distribution_points_critical ) # Add the Extended Key Usage extension if extended_key_usage is not None: self._add_extension(extensions, extended_key_usage, extended_key_usage_critical) # Add the inhibitAnyPolicy extension if inhibit_any_policy is not None: self._add_extension( extensions, x509.InhibitAnyPolicy(skip_certs=inhibit_any_policy), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.INHIBIT_ANY_POLICY], ) # Add the Issuer Alternative Name extension if issuer_alternative_name is not None: self._add_extension( extensions, issuer_alternative_name, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.ISSUER_ALTERNATIVE_NAME], ) # Add the NameConstraints extension if permit_name or exclude_name: self._add_extension( extensions, x509.NameConstraints(excluded_subtrees=exclude_name, permitted_subtrees=permit_name), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.NAME_CONSTRAINTS], ) # Add the Policy Constraints extension if require_explicit_policy is not None or inhibit_policy_mapping is not None: self._add_extension( extensions, x509.PolicyConstraints( require_explicit_policy=require_explicit_policy, inhibit_policy_mapping=inhibit_policy_mapping, ), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.POLICY_CONSTRAINTS], ) # Add the Subject Alternative Name extension if subject_alternative_name is not None: self._add_extension( extensions, subject_alternative_name, subject_alternative_name_critical, ) kwargs = {} for opt in ["path", "default_hostname"]: if options[opt] is not None: kwargs[opt] = options[opt] if ca_settings.CA_ENABLE_ACME: # pragma: no branch; never False because parser throws error already # These settings are only there if ACME is enabled for opt in ["acme_enabled", "acme_requires_contact"]: if options[opt] is not None: kwargs[opt] = options[opt] if acme_profile := options["acme_profile"]: if acme_profile not in ca_settings.CA_PROFILES: raise CommandError(f"{acme_profile}: Profile is not defined.") kwargs["acme_profile"] = acme_profile try: ca = CertificateAuthority.objects.init( name=name, subject=subject, expires=expires_datetime, algorithm=algorithm, parent=parent, path_length=path_length, issuer_url=sign_ca_issuer, issuer_alt_name=sign_issuer_alternative_name, crl_url=sign_crl_full_name, ocsp_url=sign_ocsp_responder, password=password, parent_password=parent_password, elliptic_curve=elliptic_curve, key_type=key_type, key_size=key_size, caa=caa, website=website, terms_of_service=tos, extensions=extensions.values(), **kwargs, ) except Exception as ex: # pragma: no cover > raise CommandError(ex) from ex E django.core.management.base.CommandError: expires must be in the future django_ca/management/commands/init_ca.py:484: CommandError During handling of the above exception, another exception occurred: self = name = 'extensions_with_formatting', chain = [] args = ('/CN=extensions_with_formatting.example.com', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ocsp-responder=...SSUER_PATH}', '--crl-full-name=http://example.com/crl/{CRL_PATH}', '--crl-full-name=http://example.net/crl/{CRL_PATH}') kwargs = {}, pre = post = def init_ca_e2e( self, name: str, *args: str, chain: Optional[List[CertificateAuthority]] = None, **kwargs: Any ) -> CertificateAuthority: """Run a init_ca command via cmd_e2e().""" if chain is None: chain = [] with self.assertCreateCASignals() as (pre, post): > out, err = self.cmd_e2e(["init_ca", name] + list(args)) django_ca/tests/commands/test_init_ca.py:72: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/base/mixins.py:771: in cmd_e2e util.execute() /usr/lib/python3/dist-packages/django/core/management/__init__.py:436: in execute self.fetch_command(subcommand).run_from_argv(self.argv) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = argv = ['manage.py', 'init_ca', 'extensions_with_formatting', '/CN=extensions_with_formatting.example.com', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ocsp-responder=https://example.com/ocsp/{OCSP_PATH}', ...] def run_from_argv(self, argv): """ Set up any environment changes requested (e.g., Python path and Django settings), then run this command. If the command raises a ``CommandError``, intercept it and print it sensibly to stderr. If the ``--traceback`` option is present or the raised ``Exception`` is not ``CommandError``, raise it. """ self._called_from_command_line = True parser = self.create_parser(argv[0], argv[1]) options = parser.parse_args(argv[2:]) cmd_options = vars(options) # Move positional args out of options to mimic legacy optparse args = cmd_options.pop("args", ()) handle_default_options(options) try: self.execute(*args, **cmd_options) except CommandError as e: if options.traceback: raise # SystemCheckError takes care of its own formatting. if isinstance(e, SystemCheckError): self.stderr.write(str(e), lambda x: x) else: self.stderr.write("%s: %s" % (e.__class__.__name__, e)) > sys.exit(e.returncode) E SystemExit: 1 /usr/lib/python3/dist-packages/django/core/management/base.py:422: SystemExit During handling of the above exception, another exception occurred: self = @override_tmpcadir(CA_MIN_KEY_SIZE=1024) def test_add_extensions_with_formatting(self) -> None: """Test adding various extensions.""" root = self.load_ca("root") > ca = self.init_ca_e2e( "extensions_with_formatting", "/CN=extensions_with_formatting.example.com", f"--parent={root.serial}", "--ocsp-responder=https://example.com/ocsp/{OCSP_PATH}", "--ca-issuer=https://example.com/ca-issuer/{CA_ISSUER_PATH}", "--crl-full-name=http://example.com/crl/{CRL_PATH}", "--crl-full-name=http://example.net/crl/{CRL_PATH}", chain=[root], ) django_ca/tests/commands/test_init_ca.py:446: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/commands/test_init_ca.py:71: in init_ca_e2e with self.assertCreateCASignals() as (pre, post): /usr/lib/python3.11/contextlib.py:158: in __exit__ self.gen.throw(typ, value, traceback) django_ca/tests/base/mixins.py:291: in assertCreateCASignals self.assertTrue(post_sig.called is post) E AssertionError: False is not true __________ InitCATest.test_add_extensions_with_formatting_without_uri __________ self = name = 'extensions_with_formatting' subject = parent = , expires = datetime.timedelta(days=3650) key_size = 1024, key_type = 'RSA', elliptic_curve = None algorithm = password = None, parent_password = None, sign_crl_full_name = [] sign_ocsp_responder = None, sign_ca_issuer = None sign_issuer_alternative_name = None authority_information_access = , a..._method=, access_location=)>])> path_length = 0, certificate_policies = None certificate_policies_critical = False crl_full_names = [, ] crl_distribution_points_critical = False, extended_key_usage = None extended_key_usage_critical = False, inhibit_any_policy = None issuer_alternative_name = None key_usage = key_usage_critical = True, permit_name = None, exclude_name = None require_explicit_policy = None, inhibit_policy_mapping = None subject_alternative_name = None, subject_alternative_name_critical = False caa = '', website = '', tos = '' options = {'acme_enabled': None, 'acme_profile': None, 'acme_requires_contact': None, 'default_hostname': None, ...} expires_datetime = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) common_name = 'extensions_with_formatting.example.com' extensions = {: , cr...lue='crl.example.com')>, ], relative_name=None, reasons=None, crl_issuer=None)>])>)>} def handle( # pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements self, name: str, subject: x509.Name, parent: Optional[CertificateAuthority], expires: timedelta, key_size: Optional[int], key_type: ParsableKeyType, elliptic_curve: Optional[ec.EllipticCurve], algorithm: Optional[AllowedHashTypes], password: Optional[bytes], parent_password: Optional[bytes], sign_crl_full_name: List[str], sign_ocsp_responder: Optional[str], sign_ca_issuer: Optional[str], sign_issuer_alternative_name: Optional[x509.Extension[x509.IssuerAlternativeName]], # Authority Information Access extension authority_information_access: x509.AuthorityInformationAccess, # Basic Constraints extension path_length: Optional[int], # Certificate Policies extension certificate_policies: Optional[x509.CertificatePolicies], certificate_policies_critical: bool, # CRL Distribution Points extension crl_full_names: Optional[List[x509.GeneralName]], crl_distribution_points_critical: bool, # Extended Key Usage extension extended_key_usage: Optional[x509.ExtendedKeyUsage], extended_key_usage_critical: bool, # Inhibit anyPolicy extension: inhibit_any_policy: Optional[int], # Issuer Alternative Name extension: issuer_alternative_name: Optional[x509.IssuerAlternativeName], # Key Usage extension: key_usage: x509.KeyUsage, key_usage_critical: bool, # Name Constraints extension: permit_name: Optional[Iterable[x509.GeneralName]], exclude_name: Optional[Iterable[x509.GeneralName]], # Policy Constraints extension: require_explicit_policy: Optional[int], inhibit_policy_mapping: Optional[int], # Subject Alternative Name extension subject_alternative_name: Optional[x509.SubjectAlternativeName], subject_alternative_name_critical: bool, # ACMEv2 related options caa: str, website: str, tos: str, **options: Any, ) -> None: if not os.path.exists(ca_settings.CA_DIR): # pragma: no cover # TODO: set permissions os.makedirs(ca_settings.CA_DIR) # NOTE: When removing this in 1.26.0, don't forget to remove choices in the --key-type action. if key_type == "ECC": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=ECC is deprecated, use --key-type=EC instead.", RemovedInDjangoCA126Warning ) key_type = "EC" if key_type == "EdDSA": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=EdDSA is deprecated, use --key-type=Ed25519 instead.", RemovedInDjangoCA126Warning ) key_type = "Ed25519" # Validate private key parameters early so that we can return better feedback to the user. try: key_size, elliptic_curve = validate_private_key_parameters(key_type, key_size, elliptic_curve) except ValueError as ex: raise CommandError(*ex.args) from ex # Get/validate signature hash algorithm algorithm = self.get_hash_algorithm(key_type, algorithm) # In case of CAs, we silently set the expiry date to that of the parent CA if the user specified a # number of days that would make the CA expire after the parent CA. # # The reasoning is simple: When issuing the child CA, the default is automatically after that of the # parent if it wasn't issued on the same day. if parent and timezone.now() + expires > parent.expires: expires_datetime = parent.expires # Make sure expires_datetime is tz-aware, even if USE_TZ=False. if timezone.is_naive(expires_datetime): expires_datetime = timezone.make_aware(expires_datetime) else: expires_datetime = datetime.now(tz=tz.utc) + expires if parent and not parent.allows_intermediate_ca: raise CommandError("Parent CA cannot create intermediate CA due to path length restrictions.") if not parent and crl_full_names: raise CommandError("CRLs cannot be used to revoke root CAs.") if not parent and authority_information_access: if ocsp_responder := next( ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.OCSP ), None, ): responder_value = format_general_name(ocsp_responder.access_location) raise CommandError(f"{responder_value}: OCSP responder cannot be added to root CAs.") # No if check necessary here, authority_information_access contains either ocsp or ca_issuer # COVERAGE NOTE: next() will always return, so it's not a branch ca_issuer = next( # pragma: no branch ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.CA_ISSUERS ) ) responder_value = format_general_name(ca_issuer.access_location) raise CommandError(f"{responder_value}: CA issuer cannot be added to root CAs.") # We require a valid common name common_name = next((attr.value for attr in subject if attr.oid == NameOID.COMMON_NAME), False) if not common_name: raise CommandError("Subject must contain a common name (/CN=...).") # See if we can work with the private key if parent: self.test_private_key(parent, parent_password) subject = sort_name(subject) extensions: ExtensionMapping = { ExtensionOID.KEY_USAGE: x509.Extension( oid=ExtensionOID.KEY_USAGE, critical=key_usage_critical, value=key_usage ) } # Add the Authority Information Access extension if authority_information_access is not None: self._add_extension( extensions, authority_information_access, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.AUTHORITY_INFORMATION_ACCESS], ) # Add the Certificate Policies extension if certificate_policies is not None: self._add_extension(extensions, certificate_policies, certificate_policies_critical) # Add the CRL Distribution Points extension if crl_full_names is not None: distribution_point = x509.DistributionPoint( full_name=crl_full_names, relative_name=None, crl_issuer=None, reasons=None ) self._add_extension( extensions, x509.CRLDistributionPoints([distribution_point]), crl_distribution_points_critical ) # Add the Extended Key Usage extension if extended_key_usage is not None: self._add_extension(extensions, extended_key_usage, extended_key_usage_critical) # Add the inhibitAnyPolicy extension if inhibit_any_policy is not None: self._add_extension( extensions, x509.InhibitAnyPolicy(skip_certs=inhibit_any_policy), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.INHIBIT_ANY_POLICY], ) # Add the Issuer Alternative Name extension if issuer_alternative_name is not None: self._add_extension( extensions, issuer_alternative_name, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.ISSUER_ALTERNATIVE_NAME], ) # Add the NameConstraints extension if permit_name or exclude_name: self._add_extension( extensions, x509.NameConstraints(excluded_subtrees=exclude_name, permitted_subtrees=permit_name), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.NAME_CONSTRAINTS], ) # Add the Policy Constraints extension if require_explicit_policy is not None or inhibit_policy_mapping is not None: self._add_extension( extensions, x509.PolicyConstraints( require_explicit_policy=require_explicit_policy, inhibit_policy_mapping=inhibit_policy_mapping, ), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.POLICY_CONSTRAINTS], ) # Add the Subject Alternative Name extension if subject_alternative_name is not None: self._add_extension( extensions, subject_alternative_name, subject_alternative_name_critical, ) kwargs = {} for opt in ["path", "default_hostname"]: if options[opt] is not None: kwargs[opt] = options[opt] if ca_settings.CA_ENABLE_ACME: # pragma: no branch; never False because parser throws error already # These settings are only there if ACME is enabled for opt in ["acme_enabled", "acme_requires_contact"]: if options[opt] is not None: kwargs[opt] = options[opt] if acme_profile := options["acme_profile"]: if acme_profile not in ca_settings.CA_PROFILES: raise CommandError(f"{acme_profile}: Profile is not defined.") kwargs["acme_profile"] = acme_profile try: > ca = CertificateAuthority.objects.init( name=name, subject=subject, expires=expires_datetime, algorithm=algorithm, parent=parent, path_length=path_length, issuer_url=sign_ca_issuer, issuer_alt_name=sign_issuer_alternative_name, crl_url=sign_crl_full_name, ocsp_url=sign_ocsp_responder, password=password, parent_password=parent_password, elliptic_curve=elliptic_curve, key_type=key_type, key_size=key_size, caa=caa, website=website, terms_of_service=tos, extensions=extensions.values(), **kwargs, ) django_ca/management/commands/init_ca.py:461: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:101: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:101: in wrapper return func(*args, **kwargs) django_ca/managers.py:497: in init builder = get_cert_builder(expires, serial=serial) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expires = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) serial = 622181620015839641...1790192811300479801 def get_cert_builder(expires: datetime, serial: Optional[int] = None) -> x509.CertificateBuilder: """Get a basic X.509 certificate builder object. Parameters ---------- expires : datetime When this certificate is supposed to expire, as a timezone-aware datetime object. serial : int, optional Serial for the certificate. If not passed, a serial will be randomly generated using :py:func:`~cg:cryptography.x509.random_serial_number`. """ now = datetime.now(tz.utc).replace(second=0, microsecond=0) # NOTE: Explicitly passing a serial is used when creating a CA, where we want to add extensions where the # value references the serial. if serial is None: serial = x509.random_serial_number() if timezone.is_naive(expires): raise ValueError("expires must not be a naive datetime") if expires <= now: > raise ValueError("expires must be in the future") E ValueError: expires must be in the future django_ca/utils.py:1081: ValueError The above exception was the direct cause of the following exception: self = argv = ['manage.py', 'init_ca', 'extensions_with_formatting', '/CN=extensions_with_formatting.example.com', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ocsp-responder=DNS:example.com', ...] def run_from_argv(self, argv): """ Set up any environment changes requested (e.g., Python path and Django settings), then run this command. If the command raises a ``CommandError``, intercept it and print it sensibly to stderr. If the ``--traceback`` option is present or the raised ``Exception`` is not ``CommandError``, raise it. """ self._called_from_command_line = True parser = self.create_parser(argv[0], argv[1]) options = parser.parse_args(argv[2:]) cmd_options = vars(options) # Move positional args out of options to mimic legacy optparse args = cmd_options.pop("args", ()) handle_default_options(options) try: > self.execute(*args, **cmd_options) /usr/lib/python3/dist-packages/django/core/management/base.py:412: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/django/core/management/base.py:458: in execute output = self.handle(*args, **options) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = name = 'extensions_with_formatting' subject = parent = , expires = datetime.timedelta(days=3650) key_size = 1024, key_type = 'RSA', elliptic_curve = None algorithm = password = None, parent_password = None, sign_crl_full_name = [] sign_ocsp_responder = None, sign_ca_issuer = None sign_issuer_alternative_name = None authority_information_access = , a..._method=, access_location=)>])> path_length = 0, certificate_policies = None certificate_policies_critical = False crl_full_names = [, ] crl_distribution_points_critical = False, extended_key_usage = None extended_key_usage_critical = False, inhibit_any_policy = None issuer_alternative_name = None key_usage = key_usage_critical = True, permit_name = None, exclude_name = None require_explicit_policy = None, inhibit_policy_mapping = None subject_alternative_name = None, subject_alternative_name_critical = False caa = '', website = '', tos = '' options = {'acme_enabled': None, 'acme_profile': None, 'acme_requires_contact': None, 'default_hostname': None, ...} expires_datetime = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) common_name = 'extensions_with_formatting.example.com' extensions = {: , cr...lue='crl.example.com')>, ], relative_name=None, reasons=None, crl_issuer=None)>])>)>} def handle( # pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements self, name: str, subject: x509.Name, parent: Optional[CertificateAuthority], expires: timedelta, key_size: Optional[int], key_type: ParsableKeyType, elliptic_curve: Optional[ec.EllipticCurve], algorithm: Optional[AllowedHashTypes], password: Optional[bytes], parent_password: Optional[bytes], sign_crl_full_name: List[str], sign_ocsp_responder: Optional[str], sign_ca_issuer: Optional[str], sign_issuer_alternative_name: Optional[x509.Extension[x509.IssuerAlternativeName]], # Authority Information Access extension authority_information_access: x509.AuthorityInformationAccess, # Basic Constraints extension path_length: Optional[int], # Certificate Policies extension certificate_policies: Optional[x509.CertificatePolicies], certificate_policies_critical: bool, # CRL Distribution Points extension crl_full_names: Optional[List[x509.GeneralName]], crl_distribution_points_critical: bool, # Extended Key Usage extension extended_key_usage: Optional[x509.ExtendedKeyUsage], extended_key_usage_critical: bool, # Inhibit anyPolicy extension: inhibit_any_policy: Optional[int], # Issuer Alternative Name extension: issuer_alternative_name: Optional[x509.IssuerAlternativeName], # Key Usage extension: key_usage: x509.KeyUsage, key_usage_critical: bool, # Name Constraints extension: permit_name: Optional[Iterable[x509.GeneralName]], exclude_name: Optional[Iterable[x509.GeneralName]], # Policy Constraints extension: require_explicit_policy: Optional[int], inhibit_policy_mapping: Optional[int], # Subject Alternative Name extension subject_alternative_name: Optional[x509.SubjectAlternativeName], subject_alternative_name_critical: bool, # ACMEv2 related options caa: str, website: str, tos: str, **options: Any, ) -> None: if not os.path.exists(ca_settings.CA_DIR): # pragma: no cover # TODO: set permissions os.makedirs(ca_settings.CA_DIR) # NOTE: When removing this in 1.26.0, don't forget to remove choices in the --key-type action. if key_type == "ECC": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=ECC is deprecated, use --key-type=EC instead.", RemovedInDjangoCA126Warning ) key_type = "EC" if key_type == "EdDSA": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=EdDSA is deprecated, use --key-type=Ed25519 instead.", RemovedInDjangoCA126Warning ) key_type = "Ed25519" # Validate private key parameters early so that we can return better feedback to the user. try: key_size, elliptic_curve = validate_private_key_parameters(key_type, key_size, elliptic_curve) except ValueError as ex: raise CommandError(*ex.args) from ex # Get/validate signature hash algorithm algorithm = self.get_hash_algorithm(key_type, algorithm) # In case of CAs, we silently set the expiry date to that of the parent CA if the user specified a # number of days that would make the CA expire after the parent CA. # # The reasoning is simple: When issuing the child CA, the default is automatically after that of the # parent if it wasn't issued on the same day. if parent and timezone.now() + expires > parent.expires: expires_datetime = parent.expires # Make sure expires_datetime is tz-aware, even if USE_TZ=False. if timezone.is_naive(expires_datetime): expires_datetime = timezone.make_aware(expires_datetime) else: expires_datetime = datetime.now(tz=tz.utc) + expires if parent and not parent.allows_intermediate_ca: raise CommandError("Parent CA cannot create intermediate CA due to path length restrictions.") if not parent and crl_full_names: raise CommandError("CRLs cannot be used to revoke root CAs.") if not parent and authority_information_access: if ocsp_responder := next( ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.OCSP ), None, ): responder_value = format_general_name(ocsp_responder.access_location) raise CommandError(f"{responder_value}: OCSP responder cannot be added to root CAs.") # No if check necessary here, authority_information_access contains either ocsp or ca_issuer # COVERAGE NOTE: next() will always return, so it's not a branch ca_issuer = next( # pragma: no branch ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.CA_ISSUERS ) ) responder_value = format_general_name(ca_issuer.access_location) raise CommandError(f"{responder_value}: CA issuer cannot be added to root CAs.") # We require a valid common name common_name = next((attr.value for attr in subject if attr.oid == NameOID.COMMON_NAME), False) if not common_name: raise CommandError("Subject must contain a common name (/CN=...).") # See if we can work with the private key if parent: self.test_private_key(parent, parent_password) subject = sort_name(subject) extensions: ExtensionMapping = { ExtensionOID.KEY_USAGE: x509.Extension( oid=ExtensionOID.KEY_USAGE, critical=key_usage_critical, value=key_usage ) } # Add the Authority Information Access extension if authority_information_access is not None: self._add_extension( extensions, authority_information_access, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.AUTHORITY_INFORMATION_ACCESS], ) # Add the Certificate Policies extension if certificate_policies is not None: self._add_extension(extensions, certificate_policies, certificate_policies_critical) # Add the CRL Distribution Points extension if crl_full_names is not None: distribution_point = x509.DistributionPoint( full_name=crl_full_names, relative_name=None, crl_issuer=None, reasons=None ) self._add_extension( extensions, x509.CRLDistributionPoints([distribution_point]), crl_distribution_points_critical ) # Add the Extended Key Usage extension if extended_key_usage is not None: self._add_extension(extensions, extended_key_usage, extended_key_usage_critical) # Add the inhibitAnyPolicy extension if inhibit_any_policy is not None: self._add_extension( extensions, x509.InhibitAnyPolicy(skip_certs=inhibit_any_policy), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.INHIBIT_ANY_POLICY], ) # Add the Issuer Alternative Name extension if issuer_alternative_name is not None: self._add_extension( extensions, issuer_alternative_name, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.ISSUER_ALTERNATIVE_NAME], ) # Add the NameConstraints extension if permit_name or exclude_name: self._add_extension( extensions, x509.NameConstraints(excluded_subtrees=exclude_name, permitted_subtrees=permit_name), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.NAME_CONSTRAINTS], ) # Add the Policy Constraints extension if require_explicit_policy is not None or inhibit_policy_mapping is not None: self._add_extension( extensions, x509.PolicyConstraints( require_explicit_policy=require_explicit_policy, inhibit_policy_mapping=inhibit_policy_mapping, ), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.POLICY_CONSTRAINTS], ) # Add the Subject Alternative Name extension if subject_alternative_name is not None: self._add_extension( extensions, subject_alternative_name, subject_alternative_name_critical, ) kwargs = {} for opt in ["path", "default_hostname"]: if options[opt] is not None: kwargs[opt] = options[opt] if ca_settings.CA_ENABLE_ACME: # pragma: no branch; never False because parser throws error already # These settings are only there if ACME is enabled for opt in ["acme_enabled", "acme_requires_contact"]: if options[opt] is not None: kwargs[opt] = options[opt] if acme_profile := options["acme_profile"]: if acme_profile not in ca_settings.CA_PROFILES: raise CommandError(f"{acme_profile}: Profile is not defined.") kwargs["acme_profile"] = acme_profile try: ca = CertificateAuthority.objects.init( name=name, subject=subject, expires=expires_datetime, algorithm=algorithm, parent=parent, path_length=path_length, issuer_url=sign_ca_issuer, issuer_alt_name=sign_issuer_alternative_name, crl_url=sign_crl_full_name, ocsp_url=sign_ocsp_responder, password=password, parent_password=parent_password, elliptic_curve=elliptic_curve, key_type=key_type, key_size=key_size, caa=caa, website=website, terms_of_service=tos, extensions=extensions.values(), **kwargs, ) except Exception as ex: # pragma: no cover > raise CommandError(ex) from ex E django.core.management.base.CommandError: expires must be in the future django_ca/management/commands/init_ca.py:484: CommandError During handling of the above exception, another exception occurred: self = name = 'extensions_with_formatting', chain = [] args = ('/CN=extensions_with_formatting.example.com', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ocsp-responder=...mple.com', '--ca-issuer=DNS:example.net', '--crl-full-name=DNS:crl.example.com', '--crl-full-name=DNS:crl.example.net') kwargs = {}, pre = post = def init_ca_e2e( self, name: str, *args: str, chain: Optional[List[CertificateAuthority]] = None, **kwargs: Any ) -> CertificateAuthority: """Run a init_ca command via cmd_e2e().""" if chain is None: chain = [] with self.assertCreateCASignals() as (pre, post): > out, err = self.cmd_e2e(["init_ca", name] + list(args)) django_ca/tests/commands/test_init_ca.py:72: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/base/mixins.py:771: in cmd_e2e util.execute() /usr/lib/python3/dist-packages/django/core/management/__init__.py:436: in execute self.fetch_command(subcommand).run_from_argv(self.argv) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = argv = ['manage.py', 'init_ca', 'extensions_with_formatting', '/CN=extensions_with_formatting.example.com', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ocsp-responder=DNS:example.com', ...] def run_from_argv(self, argv): """ Set up any environment changes requested (e.g., Python path and Django settings), then run this command. If the command raises a ``CommandError``, intercept it and print it sensibly to stderr. If the ``--traceback`` option is present or the raised ``Exception`` is not ``CommandError``, raise it. """ self._called_from_command_line = True parser = self.create_parser(argv[0], argv[1]) options = parser.parse_args(argv[2:]) cmd_options = vars(options) # Move positional args out of options to mimic legacy optparse args = cmd_options.pop("args", ()) handle_default_options(options) try: self.execute(*args, **cmd_options) except CommandError as e: if options.traceback: raise # SystemCheckError takes care of its own formatting. if isinstance(e, SystemCheckError): self.stderr.write(str(e), lambda x: x) else: self.stderr.write("%s: %s" % (e.__class__.__name__, e)) > sys.exit(e.returncode) E SystemExit: 1 /usr/lib/python3/dist-packages/django/core/management/base.py:422: SystemExit During handling of the above exception, another exception occurred: self = @override_tmpcadir(CA_MIN_KEY_SIZE=1024) def test_add_extensions_with_formatting_without_uri(self) -> None: """Test adding various extensions.""" root = self.load_ca("root") > ca = self.init_ca_e2e( "extensions_with_formatting", "/CN=extensions_with_formatting.example.com", f"--parent={root.serial}", "--ocsp-responder=DNS:example.com", "--ca-issuer=DNS:example.net", "--crl-full-name=DNS:crl.example.com", "--crl-full-name=DNS:crl.example.net", chain=[root], ) django_ca/tests/commands/test_init_ca.py:484: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/commands/test_init_ca.py:71: in init_ca_e2e with self.assertCreateCASignals() as (pre, post): /usr/lib/python3.11/contextlib.py:158: in __exit__ self.gen.throw(typ, value, traceback) django_ca/tests/base/mixins.py:291: in assertCreateCASignals self.assertTrue(post_sig.called is post) E AssertionError: False is not true _________________ InitCATest.test_multiple_ocsp_and_ca_issuers _________________ self = name = 'test_multiple_ocsp_and_ca_issuer' subject = parent = , expires = datetime.timedelta(days=3650) key_size = 1024, key_type = 'RSA', elliptic_curve = None algorithm = password = None, parent_password = None, sign_crl_full_name = [] sign_ocsp_responder = None, sign_ca_issuer = None sign_issuer_alternative_name = None authority_information_access = , a...1.5.5.7.48.2, name=caIssuers)>, access_location=)>])> path_length = 0, certificate_policies = None certificate_policies_critical = False, crl_full_names = None crl_distribution_points_critical = False, extended_key_usage = None extended_key_usage_critical = False, inhibit_any_policy = None issuer_alternative_name = None key_usage = key_usage_critical = True, permit_name = None, exclude_name = None require_explicit_policy = None, inhibit_policy_mapping = None subject_alternative_name = None, subject_alternative_name_critical = False caa = '', website = '', tos = '' options = {'acme_enabled': None, 'acme_profile': None, 'acme_requires_contact': None, 'default_hostname': None, ...} expires_datetime = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) common_name = 'test_multiple_ocsp_and_ca_issuer' extensions = {: , cr....5.7.48.2, name=caIssuers)>, access_location=)>])>)>} def handle( # pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements self, name: str, subject: x509.Name, parent: Optional[CertificateAuthority], expires: timedelta, key_size: Optional[int], key_type: ParsableKeyType, elliptic_curve: Optional[ec.EllipticCurve], algorithm: Optional[AllowedHashTypes], password: Optional[bytes], parent_password: Optional[bytes], sign_crl_full_name: List[str], sign_ocsp_responder: Optional[str], sign_ca_issuer: Optional[str], sign_issuer_alternative_name: Optional[x509.Extension[x509.IssuerAlternativeName]], # Authority Information Access extension authority_information_access: x509.AuthorityInformationAccess, # Basic Constraints extension path_length: Optional[int], # Certificate Policies extension certificate_policies: Optional[x509.CertificatePolicies], certificate_policies_critical: bool, # CRL Distribution Points extension crl_full_names: Optional[List[x509.GeneralName]], crl_distribution_points_critical: bool, # Extended Key Usage extension extended_key_usage: Optional[x509.ExtendedKeyUsage], extended_key_usage_critical: bool, # Inhibit anyPolicy extension: inhibit_any_policy: Optional[int], # Issuer Alternative Name extension: issuer_alternative_name: Optional[x509.IssuerAlternativeName], # Key Usage extension: key_usage: x509.KeyUsage, key_usage_critical: bool, # Name Constraints extension: permit_name: Optional[Iterable[x509.GeneralName]], exclude_name: Optional[Iterable[x509.GeneralName]], # Policy Constraints extension: require_explicit_policy: Optional[int], inhibit_policy_mapping: Optional[int], # Subject Alternative Name extension subject_alternative_name: Optional[x509.SubjectAlternativeName], subject_alternative_name_critical: bool, # ACMEv2 related options caa: str, website: str, tos: str, **options: Any, ) -> None: if not os.path.exists(ca_settings.CA_DIR): # pragma: no cover # TODO: set permissions os.makedirs(ca_settings.CA_DIR) # NOTE: When removing this in 1.26.0, don't forget to remove choices in the --key-type action. if key_type == "ECC": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=ECC is deprecated, use --key-type=EC instead.", RemovedInDjangoCA126Warning ) key_type = "EC" if key_type == "EdDSA": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=EdDSA is deprecated, use --key-type=Ed25519 instead.", RemovedInDjangoCA126Warning ) key_type = "Ed25519" # Validate private key parameters early so that we can return better feedback to the user. try: key_size, elliptic_curve = validate_private_key_parameters(key_type, key_size, elliptic_curve) except ValueError as ex: raise CommandError(*ex.args) from ex # Get/validate signature hash algorithm algorithm = self.get_hash_algorithm(key_type, algorithm) # In case of CAs, we silently set the expiry date to that of the parent CA if the user specified a # number of days that would make the CA expire after the parent CA. # # The reasoning is simple: When issuing the child CA, the default is automatically after that of the # parent if it wasn't issued on the same day. if parent and timezone.now() + expires > parent.expires: expires_datetime = parent.expires # Make sure expires_datetime is tz-aware, even if USE_TZ=False. if timezone.is_naive(expires_datetime): expires_datetime = timezone.make_aware(expires_datetime) else: expires_datetime = datetime.now(tz=tz.utc) + expires if parent and not parent.allows_intermediate_ca: raise CommandError("Parent CA cannot create intermediate CA due to path length restrictions.") if not parent and crl_full_names: raise CommandError("CRLs cannot be used to revoke root CAs.") if not parent and authority_information_access: if ocsp_responder := next( ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.OCSP ), None, ): responder_value = format_general_name(ocsp_responder.access_location) raise CommandError(f"{responder_value}: OCSP responder cannot be added to root CAs.") # No if check necessary here, authority_information_access contains either ocsp or ca_issuer # COVERAGE NOTE: next() will always return, so it's not a branch ca_issuer = next( # pragma: no branch ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.CA_ISSUERS ) ) responder_value = format_general_name(ca_issuer.access_location) raise CommandError(f"{responder_value}: CA issuer cannot be added to root CAs.") # We require a valid common name common_name = next((attr.value for attr in subject if attr.oid == NameOID.COMMON_NAME), False) if not common_name: raise CommandError("Subject must contain a common name (/CN=...).") # See if we can work with the private key if parent: self.test_private_key(parent, parent_password) subject = sort_name(subject) extensions: ExtensionMapping = { ExtensionOID.KEY_USAGE: x509.Extension( oid=ExtensionOID.KEY_USAGE, critical=key_usage_critical, value=key_usage ) } # Add the Authority Information Access extension if authority_information_access is not None: self._add_extension( extensions, authority_information_access, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.AUTHORITY_INFORMATION_ACCESS], ) # Add the Certificate Policies extension if certificate_policies is not None: self._add_extension(extensions, certificate_policies, certificate_policies_critical) # Add the CRL Distribution Points extension if crl_full_names is not None: distribution_point = x509.DistributionPoint( full_name=crl_full_names, relative_name=None, crl_issuer=None, reasons=None ) self._add_extension( extensions, x509.CRLDistributionPoints([distribution_point]), crl_distribution_points_critical ) # Add the Extended Key Usage extension if extended_key_usage is not None: self._add_extension(extensions, extended_key_usage, extended_key_usage_critical) # Add the inhibitAnyPolicy extension if inhibit_any_policy is not None: self._add_extension( extensions, x509.InhibitAnyPolicy(skip_certs=inhibit_any_policy), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.INHIBIT_ANY_POLICY], ) # Add the Issuer Alternative Name extension if issuer_alternative_name is not None: self._add_extension( extensions, issuer_alternative_name, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.ISSUER_ALTERNATIVE_NAME], ) # Add the NameConstraints extension if permit_name or exclude_name: self._add_extension( extensions, x509.NameConstraints(excluded_subtrees=exclude_name, permitted_subtrees=permit_name), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.NAME_CONSTRAINTS], ) # Add the Policy Constraints extension if require_explicit_policy is not None or inhibit_policy_mapping is not None: self._add_extension( extensions, x509.PolicyConstraints( require_explicit_policy=require_explicit_policy, inhibit_policy_mapping=inhibit_policy_mapping, ), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.POLICY_CONSTRAINTS], ) # Add the Subject Alternative Name extension if subject_alternative_name is not None: self._add_extension( extensions, subject_alternative_name, subject_alternative_name_critical, ) kwargs = {} for opt in ["path", "default_hostname"]: if options[opt] is not None: kwargs[opt] = options[opt] if ca_settings.CA_ENABLE_ACME: # pragma: no branch; never False because parser throws error already # These settings are only there if ACME is enabled for opt in ["acme_enabled", "acme_requires_contact"]: if options[opt] is not None: kwargs[opt] = options[opt] if acme_profile := options["acme_profile"]: if acme_profile not in ca_settings.CA_PROFILES: raise CommandError(f"{acme_profile}: Profile is not defined.") kwargs["acme_profile"] = acme_profile try: > ca = CertificateAuthority.objects.init( name=name, subject=subject, expires=expires_datetime, algorithm=algorithm, parent=parent, path_length=path_length, issuer_url=sign_ca_issuer, issuer_alt_name=sign_issuer_alternative_name, crl_url=sign_crl_full_name, ocsp_url=sign_ocsp_responder, password=password, parent_password=parent_password, elliptic_curve=elliptic_curve, key_type=key_type, key_size=key_size, caa=caa, website=website, terms_of_service=tos, extensions=extensions.values(), **kwargs, ) django_ca/management/commands/init_ca.py:461: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:73: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:101: in wrapper return func(*args, **kwargs) django_ca/deprecation.py:101: in wrapper return func(*args, **kwargs) django_ca/managers.py:497: in init builder = get_cert_builder(expires, serial=serial) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expires = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) serial = 689381380917696779...3257151399175180262 def get_cert_builder(expires: datetime, serial: Optional[int] = None) -> x509.CertificateBuilder: """Get a basic X.509 certificate builder object. Parameters ---------- expires : datetime When this certificate is supposed to expire, as a timezone-aware datetime object. serial : int, optional Serial for the certificate. If not passed, a serial will be randomly generated using :py:func:`~cg:cryptography.x509.random_serial_number`. """ now = datetime.now(tz.utc).replace(second=0, microsecond=0) # NOTE: Explicitly passing a serial is used when creating a CA, where we want to add extensions where the # value references the serial. if serial is None: serial = x509.random_serial_number() if timezone.is_naive(expires): raise ValueError("expires must not be a naive datetime") if expires <= now: > raise ValueError("expires must be in the future") E ValueError: expires must be in the future django_ca/utils.py:1081: ValueError The above exception was the direct cause of the following exception: self = argv = ['manage.py', 'init_ca', 'test_multiple_ocsp_and_ca_issuer', '/CN=test_multiple_ocsp_and_ca_issuer', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ca-ocsp-url=http://ocsp.example.com/one', ...] def run_from_argv(self, argv): """ Set up any environment changes requested (e.g., Python path and Django settings), then run this command. If the command raises a ``CommandError``, intercept it and print it sensibly to stderr. If the ``--traceback`` option is present or the raised ``Exception`` is not ``CommandError``, raise it. """ self._called_from_command_line = True parser = self.create_parser(argv[0], argv[1]) options = parser.parse_args(argv[2:]) cmd_options = vars(options) # Move positional args out of options to mimic legacy optparse args = cmd_options.pop("args", ()) handle_default_options(options) try: > self.execute(*args, **cmd_options) /usr/lib/python3/dist-packages/django/core/management/base.py:412: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/django/core/management/base.py:458: in execute output = self.handle(*args, **options) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = name = 'test_multiple_ocsp_and_ca_issuer' subject = parent = , expires = datetime.timedelta(days=3650) key_size = 1024, key_type = 'RSA', elliptic_curve = None algorithm = password = None, parent_password = None, sign_crl_full_name = [] sign_ocsp_responder = None, sign_ca_issuer = None sign_issuer_alternative_name = None authority_information_access = , a...1.5.5.7.48.2, name=caIssuers)>, access_location=)>])> path_length = 0, certificate_policies = None certificate_policies_critical = False, crl_full_names = None crl_distribution_points_critical = False, extended_key_usage = None extended_key_usage_critical = False, inhibit_any_policy = None issuer_alternative_name = None key_usage = key_usage_critical = True, permit_name = None, exclude_name = None require_explicit_policy = None, inhibit_policy_mapping = None subject_alternative_name = None, subject_alternative_name_critical = False caa = '', website = '', tos = '' options = {'acme_enabled': None, 'acme_profile': None, 'acme_requires_contact': None, 'default_hostname': None, ...} expires_datetime = datetime.datetime(2024, 2, 13, 19, 0, tzinfo=datetime.timezone.utc) common_name = 'test_multiple_ocsp_and_ca_issuer' extensions = {: , cr....5.7.48.2, name=caIssuers)>, access_location=)>])>)>} def handle( # pylint: disable=too-many-arguments,too-many-locals,too-many-branches,too-many-statements self, name: str, subject: x509.Name, parent: Optional[CertificateAuthority], expires: timedelta, key_size: Optional[int], key_type: ParsableKeyType, elliptic_curve: Optional[ec.EllipticCurve], algorithm: Optional[AllowedHashTypes], password: Optional[bytes], parent_password: Optional[bytes], sign_crl_full_name: List[str], sign_ocsp_responder: Optional[str], sign_ca_issuer: Optional[str], sign_issuer_alternative_name: Optional[x509.Extension[x509.IssuerAlternativeName]], # Authority Information Access extension authority_information_access: x509.AuthorityInformationAccess, # Basic Constraints extension path_length: Optional[int], # Certificate Policies extension certificate_policies: Optional[x509.CertificatePolicies], certificate_policies_critical: bool, # CRL Distribution Points extension crl_full_names: Optional[List[x509.GeneralName]], crl_distribution_points_critical: bool, # Extended Key Usage extension extended_key_usage: Optional[x509.ExtendedKeyUsage], extended_key_usage_critical: bool, # Inhibit anyPolicy extension: inhibit_any_policy: Optional[int], # Issuer Alternative Name extension: issuer_alternative_name: Optional[x509.IssuerAlternativeName], # Key Usage extension: key_usage: x509.KeyUsage, key_usage_critical: bool, # Name Constraints extension: permit_name: Optional[Iterable[x509.GeneralName]], exclude_name: Optional[Iterable[x509.GeneralName]], # Policy Constraints extension: require_explicit_policy: Optional[int], inhibit_policy_mapping: Optional[int], # Subject Alternative Name extension subject_alternative_name: Optional[x509.SubjectAlternativeName], subject_alternative_name_critical: bool, # ACMEv2 related options caa: str, website: str, tos: str, **options: Any, ) -> None: if not os.path.exists(ca_settings.CA_DIR): # pragma: no cover # TODO: set permissions os.makedirs(ca_settings.CA_DIR) # NOTE: When removing this in 1.26.0, don't forget to remove choices in the --key-type action. if key_type == "ECC": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=ECC is deprecated, use --key-type=EC instead.", RemovedInDjangoCA126Warning ) key_type = "EC" if key_type == "EdDSA": # type: ignore[comparison-overlap] # that's a deprecated value warnings.warn( "--key-type=EdDSA is deprecated, use --key-type=Ed25519 instead.", RemovedInDjangoCA126Warning ) key_type = "Ed25519" # Validate private key parameters early so that we can return better feedback to the user. try: key_size, elliptic_curve = validate_private_key_parameters(key_type, key_size, elliptic_curve) except ValueError as ex: raise CommandError(*ex.args) from ex # Get/validate signature hash algorithm algorithm = self.get_hash_algorithm(key_type, algorithm) # In case of CAs, we silently set the expiry date to that of the parent CA if the user specified a # number of days that would make the CA expire after the parent CA. # # The reasoning is simple: When issuing the child CA, the default is automatically after that of the # parent if it wasn't issued on the same day. if parent and timezone.now() + expires > parent.expires: expires_datetime = parent.expires # Make sure expires_datetime is tz-aware, even if USE_TZ=False. if timezone.is_naive(expires_datetime): expires_datetime = timezone.make_aware(expires_datetime) else: expires_datetime = datetime.now(tz=tz.utc) + expires if parent and not parent.allows_intermediate_ca: raise CommandError("Parent CA cannot create intermediate CA due to path length restrictions.") if not parent and crl_full_names: raise CommandError("CRLs cannot be used to revoke root CAs.") if not parent and authority_information_access: if ocsp_responder := next( ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.OCSP ), None, ): responder_value = format_general_name(ocsp_responder.access_location) raise CommandError(f"{responder_value}: OCSP responder cannot be added to root CAs.") # No if check necessary here, authority_information_access contains either ocsp or ca_issuer # COVERAGE NOTE: next() will always return, so it's not a branch ca_issuer = next( # pragma: no branch ( ad for ad in authority_information_access if ad.access_method == AuthorityInformationAccessOID.CA_ISSUERS ) ) responder_value = format_general_name(ca_issuer.access_location) raise CommandError(f"{responder_value}: CA issuer cannot be added to root CAs.") # We require a valid common name common_name = next((attr.value for attr in subject if attr.oid == NameOID.COMMON_NAME), False) if not common_name: raise CommandError("Subject must contain a common name (/CN=...).") # See if we can work with the private key if parent: self.test_private_key(parent, parent_password) subject = sort_name(subject) extensions: ExtensionMapping = { ExtensionOID.KEY_USAGE: x509.Extension( oid=ExtensionOID.KEY_USAGE, critical=key_usage_critical, value=key_usage ) } # Add the Authority Information Access extension if authority_information_access is not None: self._add_extension( extensions, authority_information_access, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.AUTHORITY_INFORMATION_ACCESS], ) # Add the Certificate Policies extension if certificate_policies is not None: self._add_extension(extensions, certificate_policies, certificate_policies_critical) # Add the CRL Distribution Points extension if crl_full_names is not None: distribution_point = x509.DistributionPoint( full_name=crl_full_names, relative_name=None, crl_issuer=None, reasons=None ) self._add_extension( extensions, x509.CRLDistributionPoints([distribution_point]), crl_distribution_points_critical ) # Add the Extended Key Usage extension if extended_key_usage is not None: self._add_extension(extensions, extended_key_usage, extended_key_usage_critical) # Add the inhibitAnyPolicy extension if inhibit_any_policy is not None: self._add_extension( extensions, x509.InhibitAnyPolicy(skip_certs=inhibit_any_policy), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.INHIBIT_ANY_POLICY], ) # Add the Issuer Alternative Name extension if issuer_alternative_name is not None: self._add_extension( extensions, issuer_alternative_name, constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.ISSUER_ALTERNATIVE_NAME], ) # Add the NameConstraints extension if permit_name or exclude_name: self._add_extension( extensions, x509.NameConstraints(excluded_subtrees=exclude_name, permitted_subtrees=permit_name), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.NAME_CONSTRAINTS], ) # Add the Policy Constraints extension if require_explicit_policy is not None or inhibit_policy_mapping is not None: self._add_extension( extensions, x509.PolicyConstraints( require_explicit_policy=require_explicit_policy, inhibit_policy_mapping=inhibit_policy_mapping, ), constants.EXTENSION_DEFAULT_CRITICAL[ExtensionOID.POLICY_CONSTRAINTS], ) # Add the Subject Alternative Name extension if subject_alternative_name is not None: self._add_extension( extensions, subject_alternative_name, subject_alternative_name_critical, ) kwargs = {} for opt in ["path", "default_hostname"]: if options[opt] is not None: kwargs[opt] = options[opt] if ca_settings.CA_ENABLE_ACME: # pragma: no branch; never False because parser throws error already # These settings are only there if ACME is enabled for opt in ["acme_enabled", "acme_requires_contact"]: if options[opt] is not None: kwargs[opt] = options[opt] if acme_profile := options["acme_profile"]: if acme_profile not in ca_settings.CA_PROFILES: raise CommandError(f"{acme_profile}: Profile is not defined.") kwargs["acme_profile"] = acme_profile try: ca = CertificateAuthority.objects.init( name=name, subject=subject, expires=expires_datetime, algorithm=algorithm, parent=parent, path_length=path_length, issuer_url=sign_ca_issuer, issuer_alt_name=sign_issuer_alternative_name, crl_url=sign_crl_full_name, ocsp_url=sign_ocsp_responder, password=password, parent_password=parent_password, elliptic_curve=elliptic_curve, key_type=key_type, key_size=key_size, caa=caa, website=website, terms_of_service=tos, extensions=extensions.values(), **kwargs, ) except Exception as ex: # pragma: no cover > raise CommandError(ex) from ex E django.core.management.base.CommandError: expires must be in the future django_ca/management/commands/init_ca.py:484: CommandError During handling of the above exception, another exception occurred: self = name = 'test_multiple_ocsp_and_ca_issuer' chain = [] args = ('/CN=test_multiple_ocsp_and_ca_issuer', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ca-ocsp-url=http://oc.../issuer.example.com/one', '--ca-ocsp-url=http://ocsp.example.net/two', '--ca-issuer-url=http://issuer.example.com/two') kwargs = {}, pre = post = def init_ca_e2e( self, name: str, *args: str, chain: Optional[List[CertificateAuthority]] = None, **kwargs: Any ) -> CertificateAuthority: """Run a init_ca command via cmd_e2e().""" if chain is None: chain = [] with self.assertCreateCASignals() as (pre, post): > out, err = self.cmd_e2e(["init_ca", name] + list(args)) django_ca/tests/commands/test_init_ca.py:72: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/base/mixins.py:771: in cmd_e2e util.execute() /usr/lib/python3/dist-packages/django/core/management/__init__.py:436: in execute self.fetch_command(subcommand).run_from_argv(self.argv) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = argv = ['manage.py', 'init_ca', 'test_multiple_ocsp_and_ca_issuer', '/CN=test_multiple_ocsp_and_ca_issuer', '--parent=605C11DBA6C612F1687EDD04B7AC773DC02C3E8B', '--ca-ocsp-url=http://ocsp.example.com/one', ...] def run_from_argv(self, argv): """ Set up any environment changes requested (e.g., Python path and Django settings), then run this command. If the command raises a ``CommandError``, intercept it and print it sensibly to stderr. If the ``--traceback`` option is present or the raised ``Exception`` is not ``CommandError``, raise it. """ self._called_from_command_line = True parser = self.create_parser(argv[0], argv[1]) options = parser.parse_args(argv[2:]) cmd_options = vars(options) # Move positional args out of options to mimic legacy optparse args = cmd_options.pop("args", ()) handle_default_options(options) try: self.execute(*args, **cmd_options) except CommandError as e: if options.traceback: raise # SystemCheckError takes care of its own formatting. if isinstance(e, SystemCheckError): self.stderr.write(str(e), lambda x: x) else: self.stderr.write("%s: %s" % (e.__class__.__name__, e)) > sys.exit(e.returncode) E SystemExit: 1 /usr/lib/python3/dist-packages/django/core/management/base.py:422: SystemExit During handling of the above exception, another exception occurred: self = @override_tmpcadir(CA_MIN_KEY_SIZE=1024) def test_multiple_ocsp_and_ca_issuers(self) -> None: """Test using multiple OCSP responders and CA issuers.""" root = self.load_ca("root") name = self._testMethodName[:32] ocsp_uri_one = "http://ocsp.example.com/one" ocsp_uri_two = "http://ocsp.example.net/two" issuer_uri_one = "http://issuer.example.com/one" issuer_uri_two = "http://issuer.example.com/two" > ca = self.init_ca_e2e( name, f"/CN={name}", f"--parent={root.serial}", # NOTE: mixing the order of arguments here. This way we make sure that the values are properly # sorted (by method) in the assertion for the extension. f"--ca-ocsp-url={ocsp_uri_one}", f"--ca-issuer-url={issuer_uri_one}", f"--ca-ocsp-url={ocsp_uri_two}", f"--ca-issuer-url={issuer_uri_two}", chain=[root], ) django_ca/tests/commands/test_init_ca.py:1027: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/commands/test_init_ca.py:71: in init_ca_e2e with self.assertCreateCASignals() as (pre, post): /usr/lib/python3.11/contextlib.py:158: in __exit__ self.gen.throw(typ, value, traceback) django_ca/tests/base/mixins.py:291: in assertCreateCASignals self.assertTrue(post_sig.called is post) E AssertionError: False is not true ______________________ ViewCATestCase.test_acme_disabled _______________________ self = @override_tmpcadir(CA_ENABLE_ACME=False) def test_acme_disabled(self) -> None: """Test viewing when ACME is disabled.""" stdout, stderr = self.cmd("view_ca", self.cas["root"].serial, wrap=False) self.assertEqual(stderr, "") data = self.get_cert_context("root") > self.assertMultiLineEqual(stdout, expected["root-acme-disabled"].format(**data)) E AssertionError: '* Na[250 chars]tus: Expired\n* HPKP pin: OfMQVNzWUTEbiU4y6hBS[2504 chars]--\n' != '* Na[250 chars]tus: Valid\n* HPKP pin: OfMQVNzWUTEbiU4y6hBSbq[2502 chars]--\n' E Diff is 2920 characters long. Set self.maxDiff to None to see it. django_ca/tests/commands/test_view_ca.py:1457: AssertionError _________________________ ViewCATestCase.test_all_cas __________________________ self = @override_tmpcadir() def test_all_cas(self) -> None: """Test viewing all CAs.""" for name, ca in sorted(self.cas.items(), key=lambda t: t[0]): stdout, stderr = self.cmd("view_ca", ca.serial, wrap=False) data = self.get_cert_context(name) > self.assertMultiLineEqual(stdout, expected[name].format(**data), name) E AssertionError: '* Na[252 chars]tus: Expired\n* HPKP pin: 47J9/gQZ1KaXn1TGcQeu[3391 chars]--\n' != '* Na[252 chars]tus: Valid\n* HPKP pin: 47J9/gQZ1KaXn1TGcQeurg[3389 chars]--\n' E Diff is 3827 characters long. Set self.maxDiff to None to see it. : child django_ca/tests/commands/test_view_ca.py:1411: AssertionError ______________________ ViewCATestCase.test_no_extensions _______________________ self = @override_tmpcadir() def test_no_extensions(self) -> None: """Test viewing a CA without extensions.""" stdout, stderr = self.cmd("view_ca", self.cas["root"].serial, extensions=False, wrap=False) self.assertEqual(stderr, "") data = self.get_cert_context("root") > self.assertMultiLineEqual(stdout, expected["root-no-extensions"].format(**data)) E AssertionError: '* Na[250 chars]tus: Expired\n* HPKP pin: OfMQVNzWUTEbiU4y6hBS[2224 chars]--\n' != '* Na[250 chars]tus: Valid\n* HPKP pin: OfMQVNzWUTEbiU4y6hBSbq[2222 chars]--\n' E Diff is 2632 characters long. Set self.maxDiff to None to see it. django_ca/tests/commands/test_view_ca.py:1465: AssertionError ____________________ ViewCATestCase.test_no_no_private_key _____________________ self = @override_tmpcadir() def test_no_no_private_key(self) -> None: """Test viewing when we have no private key.""" def side_effect(cls: Any) -> None: raise NotImplementedError ca_storage = "django_ca.management.commands.view_ca.ca_storage.%s" with self.patch(ca_storage % "path", side_effect=side_effect) as path_mock, self.patch( ca_storage % "exists", return_value=True ) as exists_mock: stdout, stderr = self.cmd("view_ca", self.cas["root"].serial, wrap=False) path_mock.assert_called_once_with(self.cas["root"].private_key_path) exists_mock.assert_called_once_with(self.cas["root"].private_key_path) data = self.get_cert_context("root") data["key_path"] = self.cas["root"].private_key_path > self.assertMultiLineEqual(stdout, expected["root"].format(**data)) E AssertionError: '* Na[250 chars]tus: Expired\n* HPKP pin: OfMQVNzWUTEbiU4y6hBS[2524 chars]--\n' != '* Na[250 chars]tus: Valid\n* HPKP pin: OfMQVNzWUTEbiU4y6hBSbq[2522 chars]--\n' E Diff is 2943 characters long. Set self.maxDiff to None to see it. django_ca/tests/commands/test_view_ca.py:1484: AssertionError ________________________ ViewCATestCase.test_properties ________________________ self = @override_tmpcadir() def test_properties(self) -> None: """Test viewing of various optional properties.""" ca = self.cas["root"] hostname = "ca.example.com" ca.website = f"https://website.{hostname}" ca.terms_of_service = f"{ca.website}/tos/" ca.caa_identity = hostname ca.acme_enabled = True ca.acme_requires_contact = False ca.save() stdout, stderr = self.cmd("view_ca", ca.serial, wrap=False) self.assertEqual(stderr, "") data = self.get_cert_context("root") > self.assertMultiLineEqual(stdout, expected["root-properties"].format(ca=ca, **data)) E AssertionError: '* Na[250 chars]tus: Expired\n* HPKP pin: OfMQVNzWUTEbiU4y6hBS[2699 chars]--\n' != '* Na[250 chars]tus: Valid\n* HPKP pin: OfMQVNzWUTEbiU4y6hBSbq[2697 chars]--\n' E Diff is 3122 characters long. Set self.maxDiff to None to see it. django_ca/tests/commands/test_view_ca.py:1449: AssertionError __________________ ViewCATestCase.test_with_timezone_support ___________________ self = @override_tmpcadir(USE_TZ=True) def test_with_timezone_support(self) -> None: """Test viewing certificate with USE_TZ=True""" self.assertTrue(settings.USE_TZ) stdout, stderr = self.cmd("view_ca", self.ca.serial, wrap=False) data = self.get_cert_context(self.ca.name) > self.assertMultiLineEqual(stdout, expected[self.ca.name].format(**data), self.ca.name) E AssertionError: '* Na[252 chars]tus: Expired\n* HPKP pin: 47J9/gQZ1KaXn1TGcQeu[3391 chars]--\n' != '* Na[252 chars]tus: Valid\n* HPKP pin: 47J9/gQZ1KaXn1TGcQeurg[3389 chars]--\n' E Diff is 3827 characters long. Set self.maxDiff to None to see it. : child django_ca/tests/commands/test_view_ca.py:1421: AssertionError ___________________ ViewCATestCase.test_with_use_tz_is_false ___________________ self = @override_tmpcadir(USE_TZ=False) def test_with_use_tz_is_false(self) -> None: """Test viewing certificate without timezone support.""" self.assertFalse(settings.USE_TZ) stdout, stderr = self.cmd("view_ca", self.ca.serial, wrap=False) data = self.get_cert_context(self.ca.name) > self.assertMultiLineEqual(stdout, expected[self.ca.name].format(**data), self.ca.name) E AssertionError: '* Na[252 chars]tus: Expired\n* HPKP pin: 47J9/gQZ1KaXn1TGcQeu[3391 chars]--\n' != '* Na[252 chars]tus: Valid\n* HPKP pin: 47J9/gQZ1KaXn1TGcQeurg[3389 chars]--\n' E Diff is 3827 characters long. Set self.maxDiff to None to see it. : child django_ca/tests/commands/test_view_ca.py:1431: AssertionError _______________________ ViewCATestCase.test_wrap_digest ________________________ self = def test_wrap_digest(self) -> None: """Test wrapping the digest.""" data = self.get_cert_context("root") sha256 = data["sha256"] sha512 = data["sha512"] with mock.patch("shutil.get_terminal_size", return_value=os.terminal_size((64, 0))) as shutil_mock: stdout, stderr = self.cmd("view_ca", self.cas["root"].serial, pem=False, extensions=False) # Django calls get_terminal_size as well, so the number of calls is unpredictable shutil_mock.assert_called_with(fallback=(107, 100)) self.assertEqual(stderr, "") data["sha256"] = self._wrap_hash(f" SHA-256: {sha256}", 62) data["sha512"] = self._wrap_hash(f" SHA-512: {sha512}", 62) > self.assertMultiLineEqual(stdout, expected["root-no-wrap"].format(**data)) E AssertionError: '* Na[250 chars]tus: Expired\n* HPKP pin: OfMQVNzWUTEbiU4y6hBS[1085 chars]5D\n' != '* Na[250 chars]tus: Valid\n* HPKP pin: OfMQVNzWUTEbiU4y6hBSbq[1083 chars]5D\n' E Diff is 1476 characters long. Set self.maxDiff to None to see it. django_ca/tests/commands/test_view_ca.py:1503: AssertionError ______________________ CompletenessTestCase.test_nameoid _______________________ self = def test_nameoid(self) -> None: """Test that we support all NameOID instances.""" known_oids = [v for v in vars(x509.NameOID).values() if isinstance(v, x509.ObjectIdentifier)] > self.assertCountEqual(known_oids, list(constants.NAME_OID_NAMES.keys())) E AssertionError: Element counts were not equal: E First has 1, Second has 0: django_ca/tests/test_constants.py:139: AssertionError _________________________ OCSPTestGenericView.test_get _________________________ self = @override_tmpcadir() def test_get(self) -> None: """Do a basic GET request.""" data = base64.b64encode(req1).decode("utf-8") url = reverse("django_ca:ocsp-get-child", kwargs={"data": data}) response = self.client.get(url) self.assertEqual(response.status_code, HTTPStatus.OK) > self.assertOCSP(response, requested=[self.cert], nonce=req1_nonce) django_ca/tests/test_views_ocsp.py:365: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/test_views_ocsp.py:262: in assertOCSP self.assertEqual(ocsp_response["response_status"].native, status) E AssertionError: 'internal_error' != 'successful' E - internal_error E + successful ------------------------------ Captured log call ------------------------------- ERROR django_ca.views:views.py:165 list index out of range Traceback (most recent call last): File "/build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca/views.py", line 163, in get return self.process_ocsp_request(decoded_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca/views.py", line 315, in process_ocsp_request response = builder.sign(responder_key, responder_cert.signature_hash_algorithm) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/cryptography/x509/ocsp.py", line 596, in sign return ocsp.create_ocsp_response( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/freezegun/api.py", line 388, in now result = tz.fromutc(now.replace(tzinfo=tz)) + cls._tz_offset() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/freezegun/api.py", line 420, in _tz_offset return tz_offsets[-1] ~~~~~~~~~~^^^^ IndexError: list index out of range ________________________ OCSPTestGenericView.test_post _________________________ self = @override_tmpcadir() def test_post(self) -> None: """Do a basic POST request.""" response = self.client.post( reverse("django_ca:ocsp-post-child"), req1, content_type="application/ocsp-request" ) self.assertEqual(response.status_code, HTTPStatus.OK) > self.assertOCSP(response, requested=[self.cert], nonce=req1_nonce) django_ca/tests/test_views_ocsp.py:374: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ django_ca/tests/test_views_ocsp.py:262: in assertOCSP self.assertEqual(ocsp_response["response_status"].native, status) E AssertionError: 'internal_error' != 'successful' E - internal_error E + successful ------------------------------ Captured log call ------------------------------- ERROR django_ca.views:views.py:173 list index out of range Traceback (most recent call last): File "/build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca/views.py", line 171, in post return self.process_ocsp_request(request.body) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca/views.py", line 315, in process_ocsp_request response = builder.sign(responder_key, responder_cert.signature_hash_algorithm) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/cryptography/x509/ocsp.py", line 596, in sign return ocsp.create_ocsp_response( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/freezegun/api.py", line 388, in now result = tz.fromutc(now.replace(tzinfo=tz)) + cls._tz_offset() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/freezegun/api.py", line 420, in _tz_offset return tz_offsets[-1] ~~~~~~~~~~^^^^ IndexError: list index out of range =============================== warnings summary =============================== ../../../../../../usr/lib/python3/dist-packages/django/conf/__init__.py:267 /usr/lib/python3/dist-packages/django/conf/__init__.py:267: RemovedInDjango50Warning: The USE_L10N setting is deprecated. Starting with Django 5.0, localized formatting of data will always be enabled. For example Django will display numbers and dates using the format of the current locale. warnings.warn(USE_L10N_DEPRECATED_MSG, RemovedInDjango50Warning) ../../../../../../usr/lib/python3/dist-packages/acme/crypto_util.py:372 /usr/lib/python3/dist-packages/acme/crypto_util.py:372: DeprecationWarning: X509Extension support in pyOpenSSL is deprecated. You should use the APIs in cryptography. extensions: Optional[List[crypto.X509Extension]] = None, django_ca/utils.py:1166 /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca/utils.py:1166: RemovedInDjango51Warning: django.core.files.storage.get_storage_class is deprecated in favor of using django.core.files.storage.storages. ca_storage_cls = get_storage_class(ca_settings.CA_FILE_STORAGE) ../../../../../../usr/lib/python3.11/unittest/loader.py:66 /usr/lib/python3.11/unittest/loader.py:66: PytestCollectionWarning: cannot collect test class 'TestLoader' because it has a __init__ constructor (from: .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/extensions/test_doctests.py) class TestLoader(object): ../../../../../../usr/lib/python3.11/unittest/suite.py:92 /usr/lib/python3.11/unittest/suite.py:92: PytestCollectionWarning: cannot collect test class 'TestSuite' because it has a __init__ constructor (from: .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/extensions/test_doctests.py) class TestSuite(BaseTestSuite): django_ca/tests/extensions/test_extension_values.py:45 /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca/tests/extensions/test_extension_values.py:45: PytestCollectionWarning: cannot collect test class 'TestValueDict' because it has a __init__ constructor (from: .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/extensions/test_extension_values.py) class TestValueDict(_TestValueDict, total=False): ../../../../../../usr/lib/python3.11/unittest/loader.py:66 /usr/lib/python3.11/unittest/loader.py:66: PytestCollectionWarning: cannot collect test class 'TestLoader' because it has a __init__ constructor (from: .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_management_actions.py) class TestLoader(object): ../../../../../../usr/lib/python3.11/unittest/suite.py:92 /usr/lib/python3.11/unittest/suite.py:92: PytestCollectionWarning: cannot collect test class 'TestSuite' because it has a __init__ constructor (from: .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_management_actions.py) class TestSuite(BaseTestSuite): .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_authorization.py: 22 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_directory.py: 9 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_new_account.py: 22 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_new_nonce.py: 3 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_new_order.py: 23 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_order.py: 25 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_revocation.py: 74 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_update_account.py: 22 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_view_cert.py: 21 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/admin/test_admin_ca.py: 8 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/admin/test_extra_views.py: 14 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/admin/test_views.py: 6 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_cache_crls.py: 2 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_cert_watchers.py: 1 warning .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_convert_timestamps.py: 4 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_dump_ca.py: 7 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_dump_cert.py: 6 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_dump_crl.py: 17 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_edit_ca.py: 6 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_import_ca.py: 6 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_import_cert.py: 3 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_init_ca.py: 26 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_list_cas.py: 5 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_list_certs.py: 5 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_notify.py: 4 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_regenerate_ocsp_keys.py: 11 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_resign_cert.py: 16 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_revoke_cert.py: 7 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_sign_cert.py: 27 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_view_ca.py: 8 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_view_cert.py: 17 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/extensions/test_admin_html.py: 2 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/extensions/test_extension_values.py: 2 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_admin_acme.py: 16 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_base.py: 2 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_docs.py: 2 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_management_actions.py: 11 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_managers.py: 24 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py: 93 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_profiles.py: 17 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_querysets.py: 20 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_tasks.py: 29 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_verification.py: 7 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_views.py: 17 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_views_ocsp.py: 42 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_challenge.py: 20 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_order_finalize.py: 33 warnings /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca/models.py:443: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_after_utc. return self.pub.loaded.not_valid_after.replace(tzinfo=tz.utc) .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_authorization.py: 22 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_directory.py: 9 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_new_account.py: 22 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_new_nonce.py: 3 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_new_order.py: 23 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_order.py: 25 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_revocation.py: 74 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_update_account.py: 22 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_view_cert.py: 21 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/admin/test_admin_ca.py: 8 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/admin/test_extra_views.py: 14 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/admin/test_views.py: 6 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_cache_crls.py: 2 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_cert_watchers.py: 1 warning .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_convert_timestamps.py: 4 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_dump_ca.py: 7 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_dump_cert.py: 6 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_dump_crl.py: 17 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_edit_ca.py: 6 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_import_ca.py: 6 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_import_cert.py: 3 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_init_ca.py: 26 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_list_cas.py: 5 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_list_certs.py: 5 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_notify.py: 4 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_regenerate_ocsp_keys.py: 11 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_resign_cert.py: 16 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_revoke_cert.py: 7 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_sign_cert.py: 27 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_view_ca.py: 8 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_view_cert.py: 17 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/extensions/test_admin_html.py: 2 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/extensions/test_extension_values.py: 2 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_admin_acme.py: 16 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_base.py: 2 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_docs.py: 2 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_management_actions.py: 11 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_managers.py: 24 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py: 93 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_profiles.py: 17 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_querysets.py: 20 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_tasks.py: 29 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_verification.py: 7 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_views.py: 17 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_views_ocsp.py: 42 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_challenge.py: 20 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/acme/views/test_order_finalize.py: 33 warnings /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca/models.py:438: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_before_utc. return self.pub.loaded.not_valid_before.replace(tzinfo=tz.utc) .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_dump_crl.py: 8 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_init_ca.py: 2 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py: 11 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_views.py: 16 warnings /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca/tests/base/mixins.py:259: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to last_update_utc. self.assertEqual(parsed_crl.last_update, datetime.utcnow()) .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_dump_crl.py: 8 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/commands/test_init_ca.py: 2 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py: 11 warnings .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_views.py: 16 warnings /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca/tests/base/mixins.py:260: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to next_update_utc. self.assertEqual(parsed_crl.next_update, expires_timestamp) .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py::CertificateAuthorityTests::test_ca_crl .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py::CertificateAuthorityTests::test_full_crl .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py::CertificateAuthorityTests::test_full_crl_without_timezone_support .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py::CertificateAuthorityTests::test_intermediate_crl .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py::CertificateAuthorityTests::test_user_crl .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_views.py::GenericCRLViewTests::test_basic .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_views.py::GenericCRLViewTests::test_ca_crl .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_views.py::GenericCRLWithoutTimezoneSupportViewTests::test_basic .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_views.py::GenericCRLWithoutTimezoneSupportViewTests::test_ca_crl /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca/tests/base/mixins.py:266: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to revocation_date_utc. self.assertEqual(entry.revocation_date, datetime.utcnow()) .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_append_cn_to_san .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_cn_already_in_san .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_cn_not_in_san .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_non_default_extensions .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_non_default_values .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_simple .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_unparsable_cn /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py:669: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_before_utc. self.assertEqual(cert.not_valid_before, datetime.utcnow()) .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_non_default_values /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py:723: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_after_utc. self.assertEqual(cert.not_valid_after, expires.replace(tzinfo=None)) .pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py::CertificateAuthoritySignTests::test_simple /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build/django_ca/tests/test_models.py:693: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_after_utc. self.assertEqual(cert.not_valid_after, datetime.utcnow() + ca_settings.CA_DEFAULT_EXPIRES) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED django_ca/tests/commands/test_init_ca.py::InitCATest::test_add_extensions_with_formatting FAILED django_ca/tests/commands/test_init_ca.py::InitCATest::test_add_extensions_with_formatting_without_uri FAILED django_ca/tests/commands/test_init_ca.py::InitCATest::test_multiple_ocsp_and_ca_issuers FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_acme_disabled FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_all_cas FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_no_extensions FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_no_no_private_key FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_properties FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_with_timezone_support FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_with_use_tz_is_false FAILED django_ca/tests/commands/test_view_ca.py::ViewCATestCase::test_wrap_digest FAILED django_ca/tests/test_constants.py::CompletenessTestCase::test_nameoid FAILED django_ca/tests/test_views_ocsp.py::OCSPTestGenericView::test_get - As... FAILED django_ca/tests/test_views_ocsp.py::OCSPTestGenericView::test_post - A... = 14 failed, 1100 passed, 33 skipped, 21 deselected, 1628 warnings in 338.35s (0:05:38) = E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/python-django-ca-1.25.0/.pybuild/cpython3_3.11_django-ca/build; python3.11 -m pytest --ds=ca.test_settings -k "not test_permission_denied and not test_create_cadir_permission_denied and not test_permission_denied and not Dns01ValidationTestCase and not AcmeValidateDns01ChallengeTestCase" --ignore=django_ca/tests/admin/test_actions.py --ignore=django_ca/tests/admin/test_add_cert.py dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 3.11" returned exit code 13 make: *** [debian/rules:15: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 I: copying local configuration E: Failed autobuilding of package I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/32068 and its subdirectories Sat Apr 27 01:54:47 UTC 2024 W: No second build log, what happened?