Tue May 21 02:51:47 UTC 2024 I: starting to build python-django-ca/unstable/arm64 on jenkins on '2024-05-21 02:51' Tue May 21 02:51:47 UTC 2024 I: The jenkins build log is/was available at https://jenkins.debian.net/userContent/reproducible/debian/build_service/arm64_9/19295/console.log Tue May 21 02:51:47 UTC 2024 I: Downloading source for unstable/python-django-ca=1.25.0-2 --2024-05-21 02:51:48-- 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% 398M=0s 2024-05-21 02:51:48 (398 MB/s) - ‘python-django-ca_1.25.0-2.dsc’ saved [2828/2828] Tue May 21 02:51:48 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----- Tue May 21 02:51:48 UTC 2024 I: Checking whether the package is not for us Tue May 21 02:51:48 UTC 2024 I: Starting 1st build on remote node codethink03-arm64.debian.net. Tue May 21 02:51:48 UTC 2024 I: Preparing to do remote build '1' on codethink03-arm64.debian.net. Tue May 21 03:02:02 UTC 2024 I: Deleting $TMPDIR on codethink03-arm64.debian.net. I: pbuilder: network access will be disabled during build I: Current time: Sun Jun 22 21:14:49 -12 2025 I: pbuilder-time-stamp: 1750670089 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/2049292/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='arm64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' DISTRIBUTION='unstable' HOME='/root' HOST_ARCH='arm64' IFS=' ' INVOCATION_ID='8f0ed34fa4f3437f87569415cc66d88f' 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='2049292' 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.i2EKrAWB/pbuilderrc_KrI0 --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.i2EKrAWB/b1 --logfile b1/build.log python-django-ca_1.25.0-2.dsc' SUDO_GID='109' SUDO_UID='104' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://192.168.101.4:3128' I: uname -a Linux codethink03-arm64 6.1.0-21-cloud-arm64 #1 SMP Debian 6.1.90-1 (2024-05-03) aarch64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Jun 21 14:06 /bin -> usr/bin I: user script /srv/workspace/pbuilder/2049292/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: arm64 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 ... 19763 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} libdata-optlist-perl{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} libparams-util-perl{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-exporter-perl{a} libsub-install-perl{a} libsub-override-perl{a} libsub-prototype-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, 216 newly installed, 0 to remove and 0 not upgraded. Need to get 119 MB of archives. After unpacking 565 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main arm64 fonts-lato all 2.015-1 [2780 kB] Get: 2 http://deb.debian.org/debian unstable/main arm64 libpython3.11-minimal arm64 3.11.9-1 [813 kB] Get: 3 http://deb.debian.org/debian unstable/main arm64 libexpat1 arm64 2.6.2-1 [88.7 kB] Get: 4 http://deb.debian.org/debian unstable/main arm64 python3.11-minimal arm64 3.11.9-1 [1767 kB] Get: 5 http://deb.debian.org/debian unstable/main arm64 python3-minimal arm64 3.11.8-1 [26.3 kB] Get: 6 http://deb.debian.org/debian unstable/main arm64 media-types all 10.1.0 [26.9 kB] Get: 7 http://deb.debian.org/debian unstable/main arm64 netbase all 6.4 [12.8 kB] Get: 8 http://deb.debian.org/debian unstable/main arm64 tzdata all 2024a-4 [255 kB] Get: 9 http://deb.debian.org/debian unstable/main arm64 readline-common all 8.2-4 [69.3 kB] Get: 10 http://deb.debian.org/debian unstable/main arm64 libreadline8t64 arm64 8.2-4 [157 kB] Get: 11 http://deb.debian.org/debian unstable/main arm64 libpython3.11-stdlib arm64 3.11.9-1 [1775 kB] Get: 12 http://deb.debian.org/debian unstable/main arm64 python3.11 arm64 3.11.9-1 [602 kB] Get: 13 http://deb.debian.org/debian unstable/main arm64 libpython3-stdlib arm64 3.11.8-1 [9332 B] Get: 14 http://deb.debian.org/debian unstable/main arm64 python3 arm64 3.11.8-1 [27.4 kB] Get: 15 http://deb.debian.org/debian unstable/main arm64 libpython3.12-minimal arm64 3.12.3-1 [802 kB] Get: 16 http://deb.debian.org/debian unstable/main arm64 python3.12-minimal arm64 3.12.3-1 [1931 kB] Get: 17 http://deb.debian.org/debian unstable/main arm64 sgml-base all 1.31 [15.4 kB] Get: 18 http://deb.debian.org/debian unstable/main arm64 sensible-utils all 0.0.22 [22.4 kB] Get: 19 http://deb.debian.org/debian unstable/main arm64 openssl arm64 3.2.1-3 [1324 kB] Get: 20 http://deb.debian.org/debian unstable/main arm64 ca-certificates all 20240203 [158 kB] Get: 21 http://deb.debian.org/debian unstable/main arm64 libmagic-mgc arm64 1:5.45-3 [314 kB] Get: 22 http://deb.debian.org/debian unstable/main arm64 libmagic1t64 arm64 1:5.45-3 [100 kB] Get: 23 http://deb.debian.org/debian unstable/main arm64 file arm64 1:5.45-3 [43.0 kB] Get: 24 http://deb.debian.org/debian unstable/main arm64 gettext-base arm64 0.21-14+b1 [160 kB] Get: 25 http://deb.debian.org/debian unstable/main arm64 libuchardet0 arm64 0.0.8-1+b1 [69.0 kB] Get: 26 http://deb.debian.org/debian unstable/main arm64 groff-base arm64 1.23.0-4 [1130 kB] Get: 27 http://deb.debian.org/debian unstable/main arm64 bsdextrautils arm64 2.40.1-1 [93.2 kB] Get: 28 http://deb.debian.org/debian unstable/main arm64 libpipeline1 arm64 1.5.7-2 [36.5 kB] Get: 29 http://deb.debian.org/debian unstable/main arm64 man-db arm64 2.12.1-1 [1394 kB] Get: 30 http://deb.debian.org/debian unstable/main arm64 m4 arm64 1.4.19-4 [277 kB] Get: 31 http://deb.debian.org/debian unstable/main arm64 autoconf all 2.71-3 [332 kB] Get: 32 http://deb.debian.org/debian unstable/main arm64 autotools-dev all 20220109.1 [51.6 kB] Get: 33 http://deb.debian.org/debian unstable/main arm64 automake all 1:1.16.5-1.3 [823 kB] Get: 34 http://deb.debian.org/debian unstable/main arm64 autopoint all 0.21-14 [496 kB] Get: 35 http://deb.debian.org/debian unstable/main arm64 libdebhelper-perl all 13.15.3 [88.0 kB] Get: 36 http://deb.debian.org/debian unstable/main arm64 libtool all 2.4.7-7 [517 kB] Get: 37 http://deb.debian.org/debian unstable/main arm64 dh-autoreconf all 20 [17.1 kB] Get: 38 http://deb.debian.org/debian unstable/main arm64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 39 http://deb.debian.org/debian unstable/main arm64 libparams-util-perl arm64 1.102-3 [23.4 kB] Get: 40 http://deb.debian.org/debian unstable/main arm64 libsub-install-perl all 0.929-1 [10.5 kB] Get: 41 http://deb.debian.org/debian unstable/main arm64 libdata-optlist-perl all 0.114-1 [10.6 kB] Get: 42 http://deb.debian.org/debian unstable/main arm64 libsub-exporter-perl all 0.990-1 [50.6 kB] Get: 43 http://deb.debian.org/debian unstable/main arm64 libsub-prototype-perl arm64 0.03-2+b2 [9776 B] Get: 44 http://deb.debian.org/debian unstable/main arm64 libsub-override-perl all 0.11-1 [10.4 kB] Get: 45 http://deb.debian.org/debian unstable/main arm64 libfile-stripnondeterminism-perl all 1.13.1-1 [19.4 kB] Get: 46 http://deb.debian.org/debian unstable/main arm64 dh-strip-nondeterminism all 1.13.1-1 [8620 B] Get: 47 http://deb.debian.org/debian unstable/main arm64 libelf1t64 arm64 0.191-1+b1 [187 kB] Get: 48 http://deb.debian.org/debian unstable/main arm64 dwz arm64 0.15-1+b1 [102 kB] Get: 49 http://deb.debian.org/debian unstable/main arm64 libicu72 arm64 72.1-4+b1 [9224 kB] Get: 50 http://deb.debian.org/debian unstable/main arm64 libxml2 arm64 2.9.14+dfsg-1.3+b3 [624 kB] Get: 51 http://deb.debian.org/debian unstable/main arm64 gettext arm64 0.21-14+b1 [1249 kB] Get: 52 http://deb.debian.org/debian unstable/main arm64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 53 http://deb.debian.org/debian unstable/main arm64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 54 http://deb.debian.org/debian unstable/main arm64 debhelper all 13.15.3 [901 kB] Get: 55 http://deb.debian.org/debian unstable/main arm64 python3-pkg-resources all 68.1.2-2 [241 kB] Get: 56 http://deb.debian.org/debian unstable/main arm64 python3-lib2to3 all 3.12.3-1 [77.6 kB] Get: 57 http://deb.debian.org/debian unstable/main arm64 python3-distutils all 3.12.3-1 [131 kB] Get: 58 http://deb.debian.org/debian unstable/main arm64 python3-setuptools all 68.1.2-2 [468 kB] Get: 59 http://deb.debian.org/debian unstable/main arm64 dh-python all 6.20240422 [107 kB] Get: 60 http://deb.debian.org/debian unstable/main arm64 xml-core all 0.19 [20.1 kB] Get: 61 http://deb.debian.org/debian unstable/main arm64 docutils-common all 0.20.1+dfsg-3 [128 kB] Get: 62 http://deb.debian.org/debian unstable/main arm64 fonts-font-awesome all 5.0.10+really4.7.0~dfsg-4.1 [517 kB] Get: 63 http://deb.debian.org/debian unstable/main arm64 libbrotli1 arm64 1.1.0-2+b3 [295 kB] Get: 64 http://deb.debian.org/debian unstable/main arm64 libbsd0 arm64 0.12.2-1 [129 kB] Get: 65 http://deb.debian.org/debian unstable/main arm64 libdrm-common all 2.4.120-2 [7688 B] Get: 66 http://deb.debian.org/debian unstable/main arm64 libdrm2 arm64 2.4.120-2 [37.5 kB] Get: 67 http://deb.debian.org/debian unstable/main arm64 libdrm-amdgpu1 arm64 2.4.120-2 [21.0 kB] Get: 68 http://deb.debian.org/debian unstable/main arm64 libdrm-nouveau2 arm64 2.4.120-2 [18.7 kB] Get: 69 http://deb.debian.org/debian unstable/main arm64 libdrm-radeon1 arm64 2.4.120-2 [21.1 kB] Get: 70 http://deb.debian.org/debian unstable/main arm64 libedit2 arm64 3.1-20230828-1+b1 [89.1 kB] Get: 71 http://deb.debian.org/debian unstable/main arm64 libfontenc1 arm64 1:1.1.8-1 [22.2 kB] Get: 72 http://deb.debian.org/debian unstable/main arm64 libpng16-16t64 arm64 1.6.43-5 [272 kB] Get: 73 http://deb.debian.org/debian unstable/main arm64 libfreetype6 arm64 2.13.2+dfsg-1+b4 [408 kB] Get: 74 http://deb.debian.org/debian unstable/main arm64 libglvnd0 arm64 1.7.0-1+b1 [41.7 kB] Get: 75 http://deb.debian.org/debian unstable/main arm64 libxau6 arm64 1:1.0.9-1+b1 [18.1 kB] Get: 76 http://deb.debian.org/debian unstable/main arm64 libxdmcp6 arm64 1:1.1.2-3+b1 [24.3 kB] Get: 77 http://deb.debian.org/debian unstable/main arm64 libxcb1 arm64 1.17.0-1 [143 kB] Get: 78 http://deb.debian.org/debian unstable/main arm64 libx11-data all 2:1.8.7-1 [328 kB] Get: 79 http://deb.debian.org/debian unstable/main arm64 libx11-6 arm64 2:1.8.7-1+b1 [775 kB] Get: 80 http://deb.debian.org/debian unstable/main arm64 libglapi-mesa arm64 24.0.7-1 [46.0 kB] Get: 81 http://deb.debian.org/debian unstable/main arm64 libx11-xcb1 arm64 2:1.8.7-1+b1 [232 kB] Get: 82 http://deb.debian.org/debian unstable/main arm64 libxcb-dri2-0 arm64 1.17.0-1 [106 kB] Get: 83 http://deb.debian.org/debian unstable/main arm64 libxcb-dri3-0 arm64 1.17.0-1 [106 kB] Get: 84 http://deb.debian.org/debian unstable/main arm64 libxcb-glx0 arm64 1.17.0-1 [122 kB] Get: 85 http://deb.debian.org/debian unstable/main arm64 libxcb-present0 arm64 1.17.0-1 [105 kB] Get: 86 http://deb.debian.org/debian unstable/main arm64 libxcb-randr0 arm64 1.17.0-1 [116 kB] Get: 87 http://deb.debian.org/debian unstable/main arm64 libxcb-shm0 arm64 1.17.0-1 [105 kB] Get: 88 http://deb.debian.org/debian unstable/main arm64 libxcb-sync1 arm64 1.17.0-1 [108 kB] Get: 89 http://deb.debian.org/debian unstable/main arm64 libxcb-xfixes0 arm64 1.17.0-1 [109 kB] Get: 90 http://deb.debian.org/debian unstable/main arm64 libxext6 arm64 2:1.3.4-1+b1 [51.7 kB] Get: 91 http://deb.debian.org/debian unstable/main arm64 libxfixes3 arm64 1:6.0.0-2+b1 [20.5 kB] Get: 92 http://deb.debian.org/debian unstable/main arm64 libxshmfence1 arm64 1.3-1+b1 [9080 B] Get: 93 http://deb.debian.org/debian unstable/main arm64 libxxf86vm1 arm64 1:1.1.4-1+b2 [20.1 kB] Get: 94 http://deb.debian.org/debian unstable/main arm64 libvulkan1 arm64 1.3.280.0-1 [119 kB] Get: 95 http://deb.debian.org/debian unstable/main arm64 libz3-4 arm64 4.8.12-3.1+b2 [6508 kB] Get: 96 http://deb.debian.org/debian unstable/main arm64 libllvm17t64 arm64 1:17.0.6-12 [21.3 MB] Get: 97 http://deb.debian.org/debian unstable/main arm64 libsensors-config all 1:3.6.0-9 [14.6 kB] Get: 98 http://deb.debian.org/debian unstable/main arm64 libsensors5 arm64 1:3.6.0-9 [33.9 kB] Get: 99 http://deb.debian.org/debian unstable/main arm64 libgl1-mesa-dri arm64 24.0.7-1 [7018 kB] Get: 100 http://deb.debian.org/debian unstable/main arm64 libglx-mesa0 arm64 24.0.7-1 [150 kB] Get: 101 http://deb.debian.org/debian unstable/main arm64 libglx0 arm64 1.7.0-1+b1 [31.0 kB] Get: 102 http://deb.debian.org/debian unstable/main arm64 libgl1 arm64 1.7.0-1+b1 [90.9 kB] Get: 103 http://deb.debian.org/debian unstable/main arm64 x11-common all 1:7.7+23 [252 kB] Get: 104 http://deb.debian.org/debian unstable/main arm64 libice6 arm64 2:1.0.10-1+b1 [53.7 kB] Get: 105 http://deb.debian.org/debian unstable/main arm64 libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [326 kB] Get: 106 http://deb.debian.org/debian unstable/main arm64 libjs-underscore all 1.13.4~dfsg+~1.11.4-3 [116 kB] Get: 107 http://deb.debian.org/debian unstable/main arm64 libjs-sphinxdoc all 7.2.6-7 [150 kB] Get: 108 http://deb.debian.org/debian unstable/main arm64 libjson-perl all 4.10000-1 [87.5 kB] Get: 109 http://deb.debian.org/debian unstable/main arm64 libpixman-1-0 arm64 0.42.2-1+b1 [477 kB] Get: 110 http://deb.debian.org/debian unstable/main arm64 libpython3.12-stdlib arm64 3.12.3-1 [1889 kB] Get: 111 http://deb.debian.org/debian unstable/main arm64 libsm6 arm64 2:1.2.3-1+b1 [32.7 kB] Get: 112 http://deb.debian.org/debian unstable/main arm64 libunwind8 arm64 1.6.2-3+b1 [47.9 kB] Get: 113 http://deb.debian.org/debian unstable/main arm64 libxt6t64 arm64 1:1.2.1-1.2 [172 kB] Get: 114 http://deb.debian.org/debian unstable/main arm64 libxmu6 arm64 2:1.1.3-3+b2 [55.5 kB] Get: 115 http://deb.debian.org/debian unstable/main arm64 libxpm4 arm64 1:3.5.17-1+b1 [52.9 kB] Get: 116 http://deb.debian.org/debian unstable/main arm64 libxaw7 arm64 2:1.0.14-1+b2 [182 kB] Get: 117 http://deb.debian.org/debian unstable/main arm64 libxfont2 arm64 1:2.0.6-1+b1 [123 kB] Get: 118 http://deb.debian.org/debian unstable/main arm64 libxkbfile1 arm64 1:1.1.0-1+b1 [72.3 kB] Get: 119 http://deb.debian.org/debian unstable/main arm64 libxrender1 arm64 1:0.9.10-1.1+b1 [27.0 kB] Get: 120 http://deb.debian.org/debian unstable/main arm64 libxrandr2 arm64 2:1.5.4-1 [35.7 kB] Get: 121 http://deb.debian.org/debian unstable/main arm64 libyaml-0-2 arm64 0.2.5-1+b1 [49.0 kB] Get: 122 http://deb.debian.org/debian unstable/main arm64 python3-packaging all 24.0-1 [45.5 kB] Get: 123 http://deb.debian.org/debian unstable/main arm64 python3-pyproject-hooks all 1.0.0-2 [10.6 kB] Get: 124 http://deb.debian.org/debian unstable/main arm64 python3-toml all 0.10.2-1 [16.2 kB] Get: 125 http://deb.debian.org/debian unstable/main arm64 python3-wheel all 0.43.0-1 [52.5 kB] Get: 126 http://deb.debian.org/debian unstable/main arm64 python3-build all 1.2.1-1 [34.1 kB] Get: 127 http://deb.debian.org/debian unstable/main arm64 python3-installer all 0.7.0+dfsg1-3 [18.6 kB] Get: 128 http://deb.debian.org/debian unstable/main arm64 pybuild-plugin-pyproject all 6.20240422 [11.1 kB] Get: 129 http://deb.debian.org/debian unstable/main arm64 sphinx-rtd-theme-common all 2.0.0+dfsg-1 [1021 kB] Get: 130 http://deb.debian.org/debian unstable/main arm64 python-acme-doc all 2.9.0-1 [71.6 kB] Get: 131 http://deb.debian.org/debian unstable/main arm64 python-babel-localedata all 2.14.0-1 [5701 kB] Get: 132 http://deb.debian.org/debian unstable/main arm64 python-cryptography-doc all 42.0.5-2 [387 kB] Get: 133 http://deb.debian.org/debian unstable/main arm64 python-django-doc all 3:4.2.13-1 [3587 kB] Get: 134 http://deb.debian.org/debian unstable/main arm64 python3-cffi-backend arm64 1.16.0-2+b2 [109 kB] Get: 135 http://deb.debian.org/debian unstable/main arm64 python3-cryptography arm64 42.0.5-2 [1050 kB] Get: 136 http://deb.debian.org/debian unstable/main arm64 python3-openssl all 24.1.0-1 [51.9 kB] Get: 137 http://deb.debian.org/debian unstable/main arm64 python3-josepy all 1.14.0-1 [23.3 kB] Get: 138 http://deb.debian.org/debian unstable/main arm64 python3-certifi all 2023.11.17-1 [155 kB] Get: 139 http://deb.debian.org/debian unstable/main arm64 python3-charset-normalizer all 3.3.2-1 [51.6 kB] Get: 140 http://deb.debian.org/debian unstable/main arm64 python3-idna all 3.6-2 [37.0 kB] Get: 141 http://deb.debian.org/debian unstable/main arm64 python3-six all 1.16.0-6 [16.3 kB] Get: 142 http://deb.debian.org/debian unstable/main arm64 python3-urllib3 all 1.26.18-2 [116 kB] Get: 143 http://deb.debian.org/debian unstable/main arm64 python3-chardet all 5.2.0+dfsg-1 [107 kB] Get: 144 http://deb.debian.org/debian unstable/main arm64 python3-requests all 2.31.0+dfsg-2 [68.7 kB] Get: 145 http://deb.debian.org/debian unstable/main arm64 python3-tz all 2024.1-2 [30.9 kB] Get: 146 http://deb.debian.org/debian unstable/main arm64 python3-rfc3339 all 1.1-4 [7088 B] Get: 147 http://deb.debian.org/debian unstable/main arm64 python3-acme all 2.9.0-1 [48.0 kB] Get: 148 http://deb.debian.org/debian unstable/main arm64 python3-alabaster all 0.7.12-1 [20.8 kB] Get: 149 http://deb.debian.org/debian unstable/main arm64 python3.12 arm64 3.12.3-1 [659 kB] Get: 150 http://deb.debian.org/debian unstable/main arm64 python3-all arm64 3.11.8-1 [1056 B] Get: 151 http://deb.debian.org/debian unstable/main arm64 python3-vine all 5.1.0+dfsg-1 [15.6 kB] Get: 152 http://deb.debian.org/debian unstable/main arm64 python3-amqp all 5.2.0-2 [42.6 kB] Get: 153 http://deb.debian.org/debian unstable/main arm64 python3-typing-extensions all 4.11.0-1 [67.2 kB] Get: 154 http://deb.debian.org/debian unstable/main arm64 python3-asgiref all 3.8.1-1 [28.8 kB] Get: 155 http://deb.debian.org/debian unstable/main arm64 python3-asn1crypto all 1.5.1-3 [85.9 kB] Get: 156 http://deb.debian.org/debian unstable/main arm64 python3-attr all 23.2.0-2 [65.5 kB] Get: 157 http://deb.debian.org/debian unstable/main arm64 python3-babel all 2.14.0-1 [111 kB] Get: 158 http://deb.debian.org/debian unstable/main arm64 python3-billiard all 4.2.0-3 [73.6 kB] Get: 159 http://deb.debian.org/debian unstable/main arm64 python3-colorama all 0.4.6-4 [36.2 kB] Get: 160 http://deb.debian.org/debian unstable/main arm64 python3-click all 8.1.7-1 [94.0 kB] Get: 161 http://deb.debian.org/debian unstable/main arm64 python3-click-didyoumean all 0.3.0-2 [295 kB] Get: 162 http://deb.debian.org/debian unstable/main arm64 python3-wcwidth all 0.2.13+dfsg1-1 [24.9 kB] Get: 163 http://deb.debian.org/debian unstable/main arm64 python3-prompt-toolkit all 3.0.43-2 [276 kB] Get: 164 http://deb.debian.org/debian unstable/main arm64 python3-click-repl all 0.3.0-1 [10.2 kB] Get: 165 http://deb.debian.org/debian unstable/main arm64 python3-dateutil all 2.9.0-2 [79.4 kB] Get: 166 http://deb.debian.org/debian unstable/main arm64 python3-ephem arm64 4.1.5-1+b1 [1226 kB] Get: 167 http://deb.debian.org/debian unstable/main arm64 python3-kombu all 5.3.7-2 [186 kB] Get: 168 http://deb.debian.org/debian unstable/main arm64 python3-memcache all 1.62-1 [26.0 kB] Get: 169 http://deb.debian.org/debian unstable/main arm64 python3-pyparsing all 3.1.2-1 [146 kB] Get: 170 http://deb.debian.org/debian unstable/main arm64 python3-click-plugins all 1.1.1-4 [9852 B] Get: 171 http://deb.debian.org/debian unstable/main arm64 python3-celery all 5.4.0-1 [316 kB] Get: 172 http://deb.debian.org/debian unstable/main arm64 python3-sqlparse all 0.5.0-1 [38.9 kB] Get: 173 http://deb.debian.org/debian unstable/main arm64 python3-django all 3:4.2.13-1 [2736 kB] Get: 174 http://deb.debian.org/debian unstable/main arm64 python3-django-object-actions all 4.2.0-1 [36.2 kB] Get: 175 http://deb.debian.org/debian unstable/main arm64 python3-dnspython all 2.6.1-1 [161 kB] Get: 176 http://deb.debian.org/debian unstable/main arm64 python3.11-doc all 3.11.9-1 [12.6 MB] Get: 177 http://deb.debian.org/debian unstable/main arm64 python3-doc all 3.11.8-1 [9528 B] Get: 178 http://deb.debian.org/debian unstable/main arm64 python3-roman all 3.3-3 [9880 B] Get: 179 http://deb.debian.org/debian unstable/main arm64 python3-docutils all 0.20.1+dfsg-3 [389 kB] Get: 180 http://deb.debian.org/debian unstable/main arm64 python3-easyprocess all 1.1-1 [9952 B] Get: 181 http://deb.debian.org/debian unstable/main arm64 python3-exceptiongroup all 1.2.1-1 [19.6 kB] Get: 182 http://deb.debian.org/debian unstable/main arm64 python3-freezegun all 1.2.1+actually1.2.1-1 [15.5 kB] Get: 183 http://deb.debian.org/debian unstable/main arm64 python3-h11 all 0.14.0-1 [50.1 kB] Get: 184 http://deb.debian.org/debian unstable/main arm64 python3-imagesize all 1.4.1-1 [6688 B] Get: 185 http://deb.debian.org/debian unstable/main arm64 python3-iniconfig all 1.1.1-2 [6396 B] Get: 186 http://deb.debian.org/debian unstable/main arm64 python3-markupsafe arm64 2.1.5-1 [14.6 kB] Get: 187 http://deb.debian.org/debian unstable/main arm64 python3-jinja2 all 3.1.3-1 [119 kB] Get: 188 http://deb.debian.org/debian unstable/main arm64 sphinx-common all 7.2.6-7 [702 kB] Get: 189 http://deb.debian.org/debian unstable/main arm64 python3-pygments all 2.17.2+dfsg-1 [818 kB] Get: 190 http://deb.debian.org/debian unstable/main arm64 python3-snowballstemmer all 2.2.0-4 [58.0 kB] Get: 191 http://deb.debian.org/debian unstable/main arm64 python3-sphinx all 7.2.6-7 [552 kB] Get: 192 http://deb.debian.org/debian unstable/main arm64 python3-tabulate all 0.8.10-1 [38.8 kB] Get: 193 http://deb.debian.org/debian unstable/main arm64 python3-numpydoc all 1.6.0-2 [49.6 kB] Get: 194 http://deb.debian.org/debian unstable/main arm64 python3-oscrypto all 1.3.0-5 [128 kB] Get: 195 http://deb.debian.org/debian unstable/main arm64 python3-ocspbuilder all 0.10.2-3 [12.7 kB] Get: 196 http://deb.debian.org/debian unstable/main arm64 python3-outcome all 1.2.0-1.1 [5956 B] Get: 197 http://deb.debian.org/debian unstable/main arm64 python3-pluggy all 1.5.0-1 [26.9 kB] Get: 198 http://deb.debian.org/debian unstable/main arm64 python3-pytest all 8.1.2-1 [246 kB] Get: 199 http://deb.debian.org/debian unstable/main arm64 python3-pytest-django all 4.5.2-3 [27.0 kB] Get: 200 http://deb.debian.org/debian unstable/main arm64 xkb-data all 2.41-2 [795 kB] Get: 201 http://deb.debian.org/debian unstable/main arm64 x11-xkb-utils arm64 7.7+8+b1 [149 kB] Get: 202 http://deb.debian.org/debian unstable/main arm64 xserver-common all 2:21.1.12-1 [2391 kB] Get: 203 http://deb.debian.org/debian unstable/main arm64 xvfb arm64 2:21.1.12-1 [3095 kB] Get: 204 http://deb.debian.org/debian unstable/main arm64 python3-pyvirtualdisplay all 2.2-2 [13.7 kB] Get: 205 http://deb.debian.org/debian unstable/main arm64 python3-requests-mock all 1.11.0-1 [17.4 kB] Get: 206 http://deb.debian.org/debian unstable/main arm64 python3-sniffio all 1.3.0-2 [7076 B] Get: 207 http://deb.debian.org/debian unstable/main arm64 python3-sortedcontainers all 2.4.0-2 [31.9 kB] Get: 208 http://deb.debian.org/debian unstable/main arm64 python3-trio all 0.25.0-1 [308 kB] Get: 209 http://deb.debian.org/debian unstable/main arm64 python3-wsproto all 1.2.0-1 [25.4 kB] Get: 210 http://deb.debian.org/debian unstable/main arm64 python3-trio-websocket all 0.11.1-1 [21.5 kB] Get: 211 http://deb.debian.org/debian unstable/main arm64 python3-selenium all 4.20.0+dfsg-1 [119 kB] Get: 212 http://deb.debian.org/debian unstable/main arm64 python3-semantic-version all 2.10.0-2 [17.6 kB] Get: 213 http://deb.debian.org/debian unstable/main arm64 python3-sphinx-jinja all 2.0.2-3 [6788 B] Get: 214 http://deb.debian.org/debian unstable/main arm64 python3-sphinxcontrib.jquery all 4.1-5 [7348 B] Get: 215 http://deb.debian.org/debian unstable/main arm64 python3-sphinx-rtd-theme all 2.0.0+dfsg-1 [28.3 kB] Get: 216 http://deb.debian.org/debian unstable/main arm64 python3-yaml arm64 6.0.1-2 [153 kB] Fetched 119 MB in 1s (108 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 ... 19763 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:arm64. Preparing to unpack .../libpython3.11-minimal_3.11.9-1_arm64.deb ... Unpacking libpython3.11-minimal:arm64 (3.11.9-1) ... Selecting previously unselected package libexpat1:arm64. Preparing to unpack .../libexpat1_2.6.2-1_arm64.deb ... Unpacking libexpat1:arm64 (2.6.2-1) ... Selecting previously unselected package python3.11-minimal. Preparing to unpack .../python3.11-minimal_3.11.9-1_arm64.deb ... Unpacking python3.11-minimal (3.11.9-1) ... Setting up libpython3.11-minimal:arm64 (3.11.9-1) ... Setting up libexpat1:arm64 (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 ... 20105 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.11.8-1_arm64.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-4_all.deb ... Unpacking tzdata (2024a-4) ... 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:arm64. Preparing to unpack .../5-libreadline8t64_8.2-4_arm64.deb ... Adding 'diversion of /lib/aarch64-linux-gnu/libhistory.so.8 to /lib/aarch64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/aarch64-linux-gnu/libhistory.so.8.2 to /lib/aarch64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/aarch64-linux-gnu/libreadline.so.8 to /lib/aarch64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/aarch64-linux-gnu/libreadline.so.8.2 to /lib/aarch64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:arm64 (8.2-4) ... Selecting previously unselected package libpython3.11-stdlib:arm64. Preparing to unpack .../6-libpython3.11-stdlib_3.11.9-1_arm64.deb ... Unpacking libpython3.11-stdlib:arm64 (3.11.9-1) ... Selecting previously unselected package python3.11. Preparing to unpack .../7-python3.11_3.11.9-1_arm64.deb ... Unpacking python3.11 (3.11.9-1) ... Selecting previously unselected package libpython3-stdlib:arm64. Preparing to unpack .../8-libpython3-stdlib_3.11.8-1_arm64.deb ... Unpacking libpython3-stdlib:arm64 (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 ... 21097 files and directories currently installed.) Preparing to unpack .../000-python3_3.11.8-1_arm64.deb ... Unpacking python3 (3.11.8-1) ... Selecting previously unselected package libpython3.12-minimal:arm64. Preparing to unpack .../001-libpython3.12-minimal_3.12.3-1_arm64.deb ... Unpacking libpython3.12-minimal:arm64 (3.12.3-1) ... Selecting previously unselected package python3.12-minimal. Preparing to unpack .../002-python3.12-minimal_3.12.3-1_arm64.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_arm64.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_arm64.deb ... Unpacking libmagic-mgc (1:5.45-3) ... Selecting previously unselected package libmagic1t64:arm64. Preparing to unpack .../008-libmagic1t64_1%3a5.45-3_arm64.deb ... Unpacking libmagic1t64:arm64 (1:5.45-3) ... Selecting previously unselected package file. Preparing to unpack .../009-file_1%3a5.45-3_arm64.deb ... Unpacking file (1:5.45-3) ... Selecting previously unselected package gettext-base. Preparing to unpack .../010-gettext-base_0.21-14+b1_arm64.deb ... Unpacking gettext-base (0.21-14+b1) ... Selecting previously unselected package libuchardet0:arm64. Preparing to unpack .../011-libuchardet0_0.0.8-1+b1_arm64.deb ... Unpacking libuchardet0:arm64 (0.0.8-1+b1) ... Selecting previously unselected package groff-base. Preparing to unpack .../012-groff-base_1.23.0-4_arm64.deb ... Unpacking groff-base (1.23.0-4) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../013-bsdextrautils_2.40.1-1_arm64.deb ... Unpacking bsdextrautils (2.40.1-1) ... Selecting previously unselected package libpipeline1:arm64. Preparing to unpack .../014-libpipeline1_1.5.7-2_arm64.deb ... Unpacking libpipeline1:arm64 (1.5.7-2) ... Selecting previously unselected package man-db. Preparing to unpack .../015-man-db_2.12.1-1_arm64.deb ... Unpacking man-db (2.12.1-1) ... Selecting previously unselected package m4. Preparing to unpack .../016-m4_1.4.19-4_arm64.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 libparams-util-perl. Preparing to unpack .../025-libparams-util-perl_1.102-3_arm64.deb ... Unpacking libparams-util-perl (1.102-3) ... Selecting previously unselected package libsub-install-perl. Preparing to unpack .../026-libsub-install-perl_0.929-1_all.deb ... Unpacking libsub-install-perl (0.929-1) ... Selecting previously unselected package libdata-optlist-perl. Preparing to unpack .../027-libdata-optlist-perl_0.114-1_all.deb ... Unpacking libdata-optlist-perl (0.114-1) ... Selecting previously unselected package libsub-exporter-perl. Preparing to unpack .../028-libsub-exporter-perl_0.990-1_all.deb ... Unpacking libsub-exporter-perl (0.990-1) ... Selecting previously unselected package libsub-prototype-perl. Preparing to unpack .../029-libsub-prototype-perl_0.03-2+b2_arm64.deb ... Unpacking libsub-prototype-perl (0.03-2+b2) ... Selecting previously unselected package libsub-override-perl. Preparing to unpack .../030-libsub-override-perl_0.11-1_all.deb ... Unpacking libsub-override-perl (0.11-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../031-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 .../032-dh-strip-nondeterminism_1.13.1-1_all.deb ... Unpacking dh-strip-nondeterminism (1.13.1-1) ... Selecting previously unselected package libelf1t64:arm64. Preparing to unpack .../033-libelf1t64_0.191-1+b1_arm64.deb ... Unpacking libelf1t64:arm64 (0.191-1+b1) ... Selecting previously unselected package dwz. Preparing to unpack .../034-dwz_0.15-1+b1_arm64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libicu72:arm64. Preparing to unpack .../035-libicu72_72.1-4+b1_arm64.deb ... Unpacking libicu72:arm64 (72.1-4+b1) ... Selecting previously unselected package libxml2:arm64. Preparing to unpack .../036-libxml2_2.9.14+dfsg-1.3+b3_arm64.deb ... Unpacking libxml2:arm64 (2.9.14+dfsg-1.3+b3) ... Selecting previously unselected package gettext. Preparing to unpack .../037-gettext_0.21-14+b1_arm64.deb ... Unpacking gettext (0.21-14+b1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../038-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 .../039-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../040-debhelper_13.15.3_all.deb ... Unpacking debhelper (13.15.3) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../041-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 .../042-python3-lib2to3_3.12.3-1_all.deb ... Unpacking python3-lib2to3 (3.12.3-1) ... Selecting previously unselected package python3-distutils. Preparing to unpack .../043-python3-distutils_3.12.3-1_all.deb ... Unpacking python3-distutils (3.12.3-1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../044-python3-setuptools_68.1.2-2_all.deb ... Unpacking python3-setuptools (68.1.2-2) ... Selecting previously unselected package dh-python. Preparing to unpack .../045-dh-python_6.20240422_all.deb ... Unpacking dh-python (6.20240422) ... Selecting previously unselected package xml-core. Preparing to unpack .../046-xml-core_0.19_all.deb ... Unpacking xml-core (0.19) ... Selecting previously unselected package docutils-common. Preparing to unpack .../047-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 .../048-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:arm64. Preparing to unpack .../049-libbrotli1_1.1.0-2+b3_arm64.deb ... Unpacking libbrotli1:arm64 (1.1.0-2+b3) ... Selecting previously unselected package libbsd0:arm64. Preparing to unpack .../050-libbsd0_0.12.2-1_arm64.deb ... Unpacking libbsd0:arm64 (0.12.2-1) ... Selecting previously unselected package libdrm-common. Preparing to unpack .../051-libdrm-common_2.4.120-2_all.deb ... Unpacking libdrm-common (2.4.120-2) ... Selecting previously unselected package libdrm2:arm64. Preparing to unpack .../052-libdrm2_2.4.120-2_arm64.deb ... Unpacking libdrm2:arm64 (2.4.120-2) ... Selecting previously unselected package libdrm-amdgpu1:arm64. Preparing to unpack .../053-libdrm-amdgpu1_2.4.120-2_arm64.deb ... Unpacking libdrm-amdgpu1:arm64 (2.4.120-2) ... Selecting previously unselected package libdrm-nouveau2:arm64. Preparing to unpack .../054-libdrm-nouveau2_2.4.120-2_arm64.deb ... Unpacking libdrm-nouveau2:arm64 (2.4.120-2) ... Selecting previously unselected package libdrm-radeon1:arm64. Preparing to unpack .../055-libdrm-radeon1_2.4.120-2_arm64.deb ... Unpacking libdrm-radeon1:arm64 (2.4.120-2) ... Selecting previously unselected package libedit2:arm64. Preparing to unpack .../056-libedit2_3.1-20230828-1+b1_arm64.deb ... Unpacking libedit2:arm64 (3.1-20230828-1+b1) ... Selecting previously unselected package libfontenc1:arm64. Preparing to unpack .../057-libfontenc1_1%3a1.1.8-1_arm64.deb ... Unpacking libfontenc1:arm64 (1:1.1.8-1) ... Selecting previously unselected package libpng16-16t64:arm64. Preparing to unpack .../058-libpng16-16t64_1.6.43-5_arm64.deb ... Unpacking libpng16-16t64:arm64 (1.6.43-5) ... Selecting previously unselected package libfreetype6:arm64. Preparing to unpack .../059-libfreetype6_2.13.2+dfsg-1+b4_arm64.deb ... Unpacking libfreetype6:arm64 (2.13.2+dfsg-1+b4) ... Selecting previously unselected package libglvnd0:arm64. Preparing to unpack .../060-libglvnd0_1.7.0-1+b1_arm64.deb ... Unpacking libglvnd0:arm64 (1.7.0-1+b1) ... Selecting previously unselected package libxau6:arm64. Preparing to unpack .../061-libxau6_1%3a1.0.9-1+b1_arm64.deb ... Unpacking libxau6:arm64 (1:1.0.9-1+b1) ... Selecting previously unselected package libxdmcp6:arm64. Preparing to unpack .../062-libxdmcp6_1%3a1.1.2-3+b1_arm64.deb ... Unpacking libxdmcp6:arm64 (1:1.1.2-3+b1) ... Selecting previously unselected package libxcb1:arm64. Preparing to unpack .../063-libxcb1_1.17.0-1_arm64.deb ... Unpacking libxcb1:arm64 (1.17.0-1) ... Selecting previously unselected package libx11-data. Preparing to unpack .../064-libx11-data_2%3a1.8.7-1_all.deb ... Unpacking libx11-data (2:1.8.7-1) ... Selecting previously unselected package libx11-6:arm64. Preparing to unpack .../065-libx11-6_2%3a1.8.7-1+b1_arm64.deb ... Unpacking libx11-6:arm64 (2:1.8.7-1+b1) ... Selecting previously unselected package libglapi-mesa:arm64. Preparing to unpack .../066-libglapi-mesa_24.0.7-1_arm64.deb ... Unpacking libglapi-mesa:arm64 (24.0.7-1) ... Selecting previously unselected package libx11-xcb1:arm64. Preparing to unpack .../067-libx11-xcb1_2%3a1.8.7-1+b1_arm64.deb ... Unpacking libx11-xcb1:arm64 (2:1.8.7-1+b1) ... Selecting previously unselected package libxcb-dri2-0:arm64. Preparing to unpack .../068-libxcb-dri2-0_1.17.0-1_arm64.deb ... Unpacking libxcb-dri2-0:arm64 (1.17.0-1) ... Selecting previously unselected package libxcb-dri3-0:arm64. Preparing to unpack .../069-libxcb-dri3-0_1.17.0-1_arm64.deb ... Unpacking libxcb-dri3-0:arm64 (1.17.0-1) ... Selecting previously unselected package libxcb-glx0:arm64. Preparing to unpack .../070-libxcb-glx0_1.17.0-1_arm64.deb ... Unpacking libxcb-glx0:arm64 (1.17.0-1) ... Selecting previously unselected package libxcb-present0:arm64. Preparing to unpack .../071-libxcb-present0_1.17.0-1_arm64.deb ... Unpacking libxcb-present0:arm64 (1.17.0-1) ... Selecting previously unselected package libxcb-randr0:arm64. Preparing to unpack .../072-libxcb-randr0_1.17.0-1_arm64.deb ... Unpacking libxcb-randr0:arm64 (1.17.0-1) ... Selecting previously unselected package libxcb-shm0:arm64. Preparing to unpack .../073-libxcb-shm0_1.17.0-1_arm64.deb ... Unpacking libxcb-shm0:arm64 (1.17.0-1) ... Selecting previously unselected package libxcb-sync1:arm64. Preparing to unpack .../074-libxcb-sync1_1.17.0-1_arm64.deb ... Unpacking libxcb-sync1:arm64 (1.17.0-1) ... Selecting previously unselected package libxcb-xfixes0:arm64. Preparing to unpack .../075-libxcb-xfixes0_1.17.0-1_arm64.deb ... Unpacking libxcb-xfixes0:arm64 (1.17.0-1) ... Selecting previously unselected package libxext6:arm64. Preparing to unpack .../076-libxext6_2%3a1.3.4-1+b1_arm64.deb ... Unpacking libxext6:arm64 (2:1.3.4-1+b1) ... Selecting previously unselected package libxfixes3:arm64. Preparing to unpack .../077-libxfixes3_1%3a6.0.0-2+b1_arm64.deb ... Unpacking libxfixes3:arm64 (1:6.0.0-2+b1) ... Selecting previously unselected package libxshmfence1:arm64. Preparing to unpack .../078-libxshmfence1_1.3-1+b1_arm64.deb ... Unpacking libxshmfence1:arm64 (1.3-1+b1) ... Selecting previously unselected package libxxf86vm1:arm64. Preparing to unpack .../079-libxxf86vm1_1%3a1.1.4-1+b2_arm64.deb ... Unpacking libxxf86vm1:arm64 (1:1.1.4-1+b2) ... Selecting previously unselected package libvulkan1:arm64. Preparing to unpack .../080-libvulkan1_1.3.280.0-1_arm64.deb ... Unpacking libvulkan1:arm64 (1.3.280.0-1) ... Selecting previously unselected package libz3-4:arm64. Preparing to unpack .../081-libz3-4_4.8.12-3.1+b2_arm64.deb ... Unpacking libz3-4:arm64 (4.8.12-3.1+b2) ... Selecting previously unselected package libllvm17t64:arm64. Preparing to unpack .../082-libllvm17t64_1%3a17.0.6-12_arm64.deb ... Unpacking libllvm17t64:arm64 (1:17.0.6-12) ... Selecting previously unselected package libsensors-config. Preparing to unpack .../083-libsensors-config_1%3a3.6.0-9_all.deb ... Unpacking libsensors-config (1:3.6.0-9) ... Selecting previously unselected package libsensors5:arm64. Preparing to unpack .../084-libsensors5_1%3a3.6.0-9_arm64.deb ... Unpacking libsensors5:arm64 (1:3.6.0-9) ... Selecting previously unselected package libgl1-mesa-dri:arm64. Preparing to unpack .../085-libgl1-mesa-dri_24.0.7-1_arm64.deb ... Unpacking libgl1-mesa-dri:arm64 (24.0.7-1) ... Selecting previously unselected package libglx-mesa0:arm64. Preparing to unpack .../086-libglx-mesa0_24.0.7-1_arm64.deb ... Unpacking libglx-mesa0:arm64 (24.0.7-1) ... Selecting previously unselected package libglx0:arm64. Preparing to unpack .../087-libglx0_1.7.0-1+b1_arm64.deb ... Unpacking libglx0:arm64 (1.7.0-1+b1) ... Selecting previously unselected package libgl1:arm64. Preparing to unpack .../088-libgl1_1.7.0-1+b1_arm64.deb ... Unpacking libgl1:arm64 (1.7.0-1+b1) ... Selecting previously unselected package x11-common. Preparing to unpack .../089-x11-common_1%3a7.7+23_all.deb ... Unpacking x11-common (1:7.7+23) ... Selecting previously unselected package libice6:arm64. Preparing to unpack .../090-libice6_2%3a1.0.10-1+b1_arm64.deb ... Unpacking libice6:arm64 (2:1.0.10-1+b1) ... Selecting previously unselected package libjs-jquery. Preparing to unpack .../091-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 .../092-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 .../093-libjs-sphinxdoc_7.2.6-7_all.deb ... Unpacking libjs-sphinxdoc (7.2.6-7) ... Selecting previously unselected package libjson-perl. Preparing to unpack .../094-libjson-perl_4.10000-1_all.deb ... Unpacking libjson-perl (4.10000-1) ... Selecting previously unselected package libpixman-1-0:arm64. Preparing to unpack .../095-libpixman-1-0_0.42.2-1+b1_arm64.deb ... Unpacking libpixman-1-0:arm64 (0.42.2-1+b1) ... Selecting previously unselected package libpython3.12-stdlib:arm64. Preparing to unpack .../096-libpython3.12-stdlib_3.12.3-1_arm64.deb ... Unpacking libpython3.12-stdlib:arm64 (3.12.3-1) ... Selecting previously unselected package libsm6:arm64. Preparing to unpack .../097-libsm6_2%3a1.2.3-1+b1_arm64.deb ... Unpacking libsm6:arm64 (2:1.2.3-1+b1) ... Selecting previously unselected package libunwind8:arm64. Preparing to unpack .../098-libunwind8_1.6.2-3+b1_arm64.deb ... Unpacking libunwind8:arm64 (1.6.2-3+b1) ... Selecting previously unselected package libxt6t64:arm64. Preparing to unpack .../099-libxt6t64_1%3a1.2.1-1.2_arm64.deb ... Unpacking libxt6t64:arm64 (1:1.2.1-1.2) ... Selecting previously unselected package libxmu6:arm64. Preparing to unpack .../100-libxmu6_2%3a1.1.3-3+b2_arm64.deb ... Unpacking libxmu6:arm64 (2:1.1.3-3+b2) ... Selecting previously unselected package libxpm4:arm64. Preparing to unpack .../101-libxpm4_1%3a3.5.17-1+b1_arm64.deb ... Unpacking libxpm4:arm64 (1:3.5.17-1+b1) ... Selecting previously unselected package libxaw7:arm64. Preparing to unpack .../102-libxaw7_2%3a1.0.14-1+b2_arm64.deb ... Unpacking libxaw7:arm64 (2:1.0.14-1+b2) ... Selecting previously unselected package libxfont2:arm64. Preparing to unpack .../103-libxfont2_1%3a2.0.6-1+b1_arm64.deb ... Unpacking libxfont2:arm64 (1:2.0.6-1+b1) ... Selecting previously unselected package libxkbfile1:arm64. Preparing to unpack .../104-libxkbfile1_1%3a1.1.0-1+b1_arm64.deb ... Unpacking libxkbfile1:arm64 (1:1.1.0-1+b1) ... Selecting previously unselected package libxrender1:arm64. Preparing to unpack .../105-libxrender1_1%3a0.9.10-1.1+b1_arm64.deb ... Unpacking libxrender1:arm64 (1:0.9.10-1.1+b1) ... Selecting previously unselected package libxrandr2:arm64. Preparing to unpack .../106-libxrandr2_2%3a1.5.4-1_arm64.deb ... Unpacking libxrandr2:arm64 (2:1.5.4-1) ... Selecting previously unselected package libyaml-0-2:arm64. Preparing to unpack .../107-libyaml-0-2_0.2.5-1+b1_arm64.deb ... Unpacking libyaml-0-2:arm64 (0.2.5-1+b1) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../108-python3-packaging_24.0-1_all.deb ... Unpacking python3-packaging (24.0-1) ... Selecting previously unselected package python3-pyproject-hooks. Preparing to unpack .../109-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 .../110-python3-toml_0.10.2-1_all.deb ... Unpacking python3-toml (0.10.2-1) ... Selecting previously unselected package python3-wheel. Preparing to unpack .../111-python3-wheel_0.43.0-1_all.deb ... Unpacking python3-wheel (0.43.0-1) ... Selecting previously unselected package python3-build. Preparing to unpack .../112-python3-build_1.2.1-1_all.deb ... Unpacking python3-build (1.2.1-1) ... Selecting previously unselected package python3-installer. Preparing to unpack .../113-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 .../114-pybuild-plugin-pyproject_6.20240422_all.deb ... Unpacking pybuild-plugin-pyproject (6.20240422) ... Selecting previously unselected package sphinx-rtd-theme-common. Preparing to unpack .../115-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 .../116-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 .../117-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 .../118-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 .../119-python-django-doc_3%3a4.2.13-1_all.deb ... Unpacking python-django-doc (3:4.2.13-1) ... Selecting previously unselected package python3-cffi-backend:arm64. Preparing to unpack .../120-python3-cffi-backend_1.16.0-2+b2_arm64.deb ... Unpacking python3-cffi-backend:arm64 (1.16.0-2+b2) ... Selecting previously unselected package python3-cryptography. Preparing to unpack .../121-python3-cryptography_42.0.5-2_arm64.deb ... Unpacking python3-cryptography (42.0.5-2) ... Selecting previously unselected package python3-openssl. Preparing to unpack .../122-python3-openssl_24.1.0-1_all.deb ... Unpacking python3-openssl (24.1.0-1) ... Selecting previously unselected package python3-josepy. Preparing to unpack .../123-python3-josepy_1.14.0-1_all.deb ... Unpacking python3-josepy (1.14.0-1) ... Selecting previously unselected package python3-certifi. Preparing to unpack .../124-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 .../125-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 .../126-python3-idna_3.6-2_all.deb ... Unpacking python3-idna (3.6-2) ... Selecting previously unselected package python3-six. Preparing to unpack .../127-python3-six_1.16.0-6_all.deb ... Unpacking python3-six (1.16.0-6) ... Selecting previously unselected package python3-urllib3. Preparing to unpack .../128-python3-urllib3_1.26.18-2_all.deb ... Unpacking python3-urllib3 (1.26.18-2) ... Selecting previously unselected package python3-chardet. Preparing to unpack .../129-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 .../130-python3-requests_2.31.0+dfsg-2_all.deb ... Unpacking python3-requests (2.31.0+dfsg-2) ... Selecting previously unselected package python3-tz. Preparing to unpack .../131-python3-tz_2024.1-2_all.deb ... Unpacking python3-tz (2024.1-2) ... Selecting previously unselected package python3-rfc3339. Preparing to unpack .../132-python3-rfc3339_1.1-4_all.deb ... Unpacking python3-rfc3339 (1.1-4) ... Selecting previously unselected package python3-acme. Preparing to unpack .../133-python3-acme_2.9.0-1_all.deb ... Unpacking python3-acme (2.9.0-1) ... Selecting previously unselected package python3-alabaster. Preparing to unpack .../134-python3-alabaster_0.7.12-1_all.deb ... Unpacking python3-alabaster (0.7.12-1) ... Selecting previously unselected package python3.12. Preparing to unpack .../135-python3.12_3.12.3-1_arm64.deb ... Unpacking python3.12 (3.12.3-1) ... Selecting previously unselected package python3-all. Preparing to unpack .../136-python3-all_3.11.8-1_arm64.deb ... Unpacking python3-all (3.11.8-1) ... Selecting previously unselected package python3-vine. Preparing to unpack .../137-python3-vine_5.1.0+dfsg-1_all.deb ... Unpacking python3-vine (5.1.0+dfsg-1) ... Selecting previously unselected package python3-amqp. Preparing to unpack .../138-python3-amqp_5.2.0-2_all.deb ... Unpacking python3-amqp (5.2.0-2) ... Selecting previously unselected package python3-typing-extensions. Preparing to unpack .../139-python3-typing-extensions_4.11.0-1_all.deb ... Unpacking python3-typing-extensions (4.11.0-1) ... Selecting previously unselected package python3-asgiref. Preparing to unpack .../140-python3-asgiref_3.8.1-1_all.deb ... Unpacking python3-asgiref (3.8.1-1) ... Selecting previously unselected package python3-asn1crypto. Preparing to unpack .../141-python3-asn1crypto_1.5.1-3_all.deb ... Unpacking python3-asn1crypto (1.5.1-3) ... Selecting previously unselected package python3-attr. Preparing to unpack .../142-python3-attr_23.2.0-2_all.deb ... Unpacking python3-attr (23.2.0-2) ... Selecting previously unselected package python3-babel. Preparing to unpack .../143-python3-babel_2.14.0-1_all.deb ... Unpacking python3-babel (2.14.0-1) ... Selecting previously unselected package python3-billiard. Preparing to unpack .../144-python3-billiard_4.2.0-3_all.deb ... Unpacking python3-billiard (4.2.0-3) ... Selecting previously unselected package python3-colorama. Preparing to unpack .../145-python3-colorama_0.4.6-4_all.deb ... Unpacking python3-colorama (0.4.6-4) ... Selecting previously unselected package python3-click. Preparing to unpack .../146-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 .../147-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 .../148-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 .../149-python3-prompt-toolkit_3.0.43-2_all.deb ... Unpacking python3-prompt-toolkit (3.0.43-2) ... Selecting previously unselected package python3-click-repl. Preparing to unpack .../150-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 .../151-python3-dateutil_2.9.0-2_all.deb ... Unpacking python3-dateutil (2.9.0-2) ... Selecting previously unselected package python3-ephem. Preparing to unpack .../152-python3-ephem_4.1.5-1+b1_arm64.deb ... Unpacking python3-ephem (4.1.5-1+b1) ... Selecting previously unselected package python3-kombu. Preparing to unpack .../153-python3-kombu_5.3.7-2_all.deb ... Unpacking python3-kombu (5.3.7-2) ... Selecting previously unselected package python3-memcache. Preparing to unpack .../154-python3-memcache_1.62-1_all.deb ... Unpacking python3-memcache (1.62-1) ... Selecting previously unselected package python3-pyparsing. Preparing to unpack .../155-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 .../156-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 .../157-python3-celery_5.4.0-1_all.deb ... Unpacking python3-celery (5.4.0-1) ... Selecting previously unselected package python3-sqlparse. Preparing to unpack .../158-python3-sqlparse_0.5.0-1_all.deb ... Unpacking python3-sqlparse (0.5.0-1) ... Selecting previously unselected package python3-django. Preparing to unpack .../159-python3-django_3%3a4.2.13-1_all.deb ... Unpacking python3-django (3:4.2.13-1) ... Selecting previously unselected package python3-django-object-actions. Preparing to unpack .../160-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 .../161-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 .../162-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 .../163-python3-doc_3.11.8-1_all.deb ... Unpacking python3-doc (3.11.8-1) ... Selecting previously unselected package python3-roman. Preparing to unpack .../164-python3-roman_3.3-3_all.deb ... Unpacking python3-roman (3.3-3) ... Selecting previously unselected package python3-docutils. Preparing to unpack .../165-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 .../166-python3-easyprocess_1.1-1_all.deb ... Unpacking python3-easyprocess (1.1-1) ... Selecting previously unselected package python3-exceptiongroup. Preparing to unpack .../167-python3-exceptiongroup_1.2.1-1_all.deb ... Unpacking python3-exceptiongroup (1.2.1-1) ... Selecting previously unselected package python3-freezegun. Preparing to unpack .../168-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 .../169-python3-h11_0.14.0-1_all.deb ... Unpacking python3-h11 (0.14.0-1) ... Selecting previously unselected package python3-imagesize. Preparing to unpack .../170-python3-imagesize_1.4.1-1_all.deb ... Unpacking python3-imagesize (1.4.1-1) ... Selecting previously unselected package python3-iniconfig. Preparing to unpack .../171-python3-iniconfig_1.1.1-2_all.deb ... Unpacking python3-iniconfig (1.1.1-2) ... Selecting previously unselected package python3-markupsafe. Preparing to unpack .../172-python3-markupsafe_2.1.5-1_arm64.deb ... Unpacking python3-markupsafe (2.1.5-1) ... Selecting previously unselected package python3-jinja2. Preparing to unpack .../173-python3-jinja2_3.1.3-1_all.deb ... Unpacking python3-jinja2 (3.1.3-1) ... Selecting previously unselected package sphinx-common. Preparing to unpack .../174-sphinx-common_7.2.6-7_all.deb ... Unpacking sphinx-common (7.2.6-7) ... Selecting previously unselected package python3-pygments. Preparing to unpack .../175-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 .../176-python3-snowballstemmer_2.2.0-4_all.deb ... Unpacking python3-snowballstemmer (2.2.0-4) ... Selecting previously unselected package python3-sphinx. Preparing to unpack .../177-python3-sphinx_7.2.6-7_all.deb ... Unpacking python3-sphinx (7.2.6-7) ... Selecting previously unselected package python3-tabulate. Preparing to unpack .../178-python3-tabulate_0.8.10-1_all.deb ... Unpacking python3-tabulate (0.8.10-1) ... Selecting previously unselected package python3-numpydoc. Preparing to unpack .../179-python3-numpydoc_1.6.0-2_all.deb ... Unpacking python3-numpydoc (1.6.0-2) ... Selecting previously unselected package python3-oscrypto. Preparing to unpack .../180-python3-oscrypto_1.3.0-5_all.deb ... Unpacking python3-oscrypto (1.3.0-5) ... Selecting previously unselected package python3-ocspbuilder. Preparing to unpack .../181-python3-ocspbuilder_0.10.2-3_all.deb ... Unpacking python3-ocspbuilder (0.10.2-3) ... Selecting previously unselected package python3-outcome. Preparing to unpack .../182-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 .../183-python3-pluggy_1.5.0-1_all.deb ... Unpacking python3-pluggy (1.5.0-1) ... Selecting previously unselected package python3-pytest. Preparing to unpack .../184-python3-pytest_8.1.2-1_all.deb ... Unpacking python3-pytest (8.1.2-1) ... Selecting previously unselected package python3-pytest-django. Preparing to unpack .../185-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 .../186-xkb-data_2.41-2_all.deb ... Unpacking xkb-data (2.41-2) ... Selecting previously unselected package x11-xkb-utils. Preparing to unpack .../187-x11-xkb-utils_7.7+8+b1_arm64.deb ... Unpacking x11-xkb-utils (7.7+8+b1) ... Selecting previously unselected package xserver-common. Preparing to unpack .../188-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 .../189-xvfb_2%3a21.1.12-1_arm64.deb ... Unpacking xvfb (2:21.1.12-1) ... Selecting previously unselected package python3-pyvirtualdisplay. Preparing to unpack .../190-python3-pyvirtualdisplay_2.2-2_all.deb ... Unpacking python3-pyvirtualdisplay (2.2-2) ... Selecting previously unselected package python3-requests-mock. Preparing to unpack .../191-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 .../192-python3-sniffio_1.3.0-2_all.deb ... Unpacking python3-sniffio (1.3.0-2) ... Selecting previously unselected package python3-sortedcontainers. Preparing to unpack .../193-python3-sortedcontainers_2.4.0-2_all.deb ... Unpacking python3-sortedcontainers (2.4.0-2) ... Selecting previously unselected package python3-trio. Preparing to unpack .../194-python3-trio_0.25.0-1_all.deb ... Unpacking python3-trio (0.25.0-1) ... Selecting previously unselected package python3-wsproto. Preparing to unpack .../195-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 .../196-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 .../197-python3-selenium_4.20.0+dfsg-1_all.deb ... Unpacking python3-selenium (4.20.0+dfsg-1) ... Selecting previously unselected package python3-semantic-version. Preparing to unpack .../198-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 .../199-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 .../200-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 .../201-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 .../202-python3-yaml_6.0.1-2_arm64.deb ... Unpacking python3-yaml (6.0.1-2) ... Setting up media-types (10.1.0) ... Setting up libpipeline1:arm64 (1.5.7-2) ... Setting up libpixman-1-0:arm64 (0.42.2-1+b1) ... Setting up libxau6:arm64 (1:1.0.9-1+b1) ... Setting up fonts-lato (2.015-1) ... Setting up libicu72:arm64 (72.1-4+b1) ... Setting up bsdextrautils (2.40.1-1) ... Setting up libmagic-mgc (1:5.45-3) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:arm64 (0.2.5-1+b1) ... Setting up libglvnd0:arm64 (1.7.0-1+b1) ... Setting up libdebhelper-perl (13.15.3) ... Setting up libbrotli1:arm64 (1.1.0-2+b3) ... Setting up libmagic1t64:arm64 (1:5.45-3) ... Setting up libpython3.12-minimal:arm64 (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:arm64 (1.6.2-3+b1) ... Setting up libsub-install-perl (0.929-1) ... Setting up libelf1t64:arm64 (0.191-1+b1) ... Setting up python-babel-localedata (2.14.0-1) ... Setting up tzdata (2024a-4) ... Current default time zone: 'Etc/UTC' Local time is now: Mon Jun 23 09:16:02 UTC 2025. Universal Time is now: Mon Jun 23 09:16:02 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up libfontenc1:arm64 (1:1.1.8-1) ... Setting up autotools-dev (20220109.1) ... Setting up libz3-4:arm64 (4.8.12-3.1+b2) ... Setting up libx11-data (2:1.8.7-1) ... Setting up libpng16-16t64:arm64 (1.6.43-5) ... Setting up autopoint (0.21-14) ... Setting up libsensors5:arm64 (1:3.6.0-9) ... Setting up libglapi-mesa:arm64 (24.0.7-1) ... Setting up libparams-util-perl (1.102-3) ... Setting up libvulkan1:arm64 (1.3.280.0-1) ... Setting up autoconf (2.71-3) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.22) ... Setting up libxshmfence1:arm64 (1.3-1+b1) ... Setting up libuchardet0:arm64 (0.0.8-1+b1) ... Setting up libjson-perl (4.10000-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:arm64 (0.12.2-1) ... Setting up libdrm-common (2.4.120-2) ... Setting up readline-common (8.2-4) ... Setting up libxml2:arm64 (2.9.14+dfsg-1.3+b3) ... 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 python3.12-minimal (3.12.3-1) ... Setting up libice6:arm64 (2:1.0.10-1+b1) ... Setting up libxdmcp6:arm64 (1:1.1.2-3+b1) ... Setting up libxcb1:arm64 (1.17.0-1) ... Setting up gettext (0.21-14+b1) ... Setting up libxcb-xfixes0:arm64 (1.17.0-1) ... Setting up libtool (2.4.7-7) ... Setting up libxcb-glx0:arm64 (1.17.0-1) ... Setting up libedit2:arm64 (3.1-20230828-1+b1) ... Setting up libxcb-shm0:arm64 (1.17.0-1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up libxcb-present0:arm64 (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:arm64 (1:17.0.6-12) ... Setting up libfreetype6:arm64 (2.13.2+dfsg-1+b4) ... Setting up libxcb-sync1:arm64 (1.17.0-1) ... Setting up python3.11-doc (3.11.9-1) ... Setting up libdata-optlist-perl (0.114-1) ... Setting up libjs-sphinxdoc (7.2.6-7) ... Setting up libreadline8t64:arm64 (8.2-4) ... Setting up libxcb-dri2-0:arm64 (1.17.0-1) ... Setting up libdrm2:arm64 (2.4.120-2) ... Setting up groff-base (1.23.0-4) ... Setting up libxcb-randr0:arm64 (1.17.0-1) ... Setting up xml-core (0.19) ... Setting up libx11-6:arm64 (2:1.8.7-1+b1) ... Setting up python-cryptography-doc (42.0.5-2) ... Setting up libxkbfile1:arm64 (1:1.1.0-1+b1) ... Setting up python-django-doc (3:4.2.13-1) ... Setting up libsm6:arm64 (2:1.2.3-1+b1) ... Setting up libxfont2:arm64 (1:2.0.6-1+b1) ... Setting up python3-doc (3.11.8-1) ... Setting up libsub-exporter-perl (0.990-1) ... Setting up libdrm-amdgpu1:arm64 (2.4.120-2) ... Setting up libxcb-dri3-0:arm64 (1.17.0-1) ... Setting up libx11-xcb1:arm64 (2:1.8.7-1+b1) ... Setting up libdrm-nouveau2:arm64 (2.4.120-2) ... Setting up python-acme-doc (2.9.0-1) ... Setting up libpython3.12-stdlib:arm64 (3.12.3-1) ... Setting up libxpm4:arm64 (1:3.5.17-1+b1) ... Setting up libxrender1:arm64 (1:0.9.10-1.1+b1) ... Setting up libdrm-radeon1:arm64 (2.4.120-2) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libpython3.11-stdlib:arm64 (3.11.9-1) ... Setting up python3.12 (3.12.3-1) ... Setting up libgl1-mesa-dri:arm64 (24.0.7-1) ... Setting up libxext6:arm64 (2:1.3.4-1+b1) ... Setting up libsub-prototype-perl (0.03-2+b2) ... Setting up man-db (2.12.1-1) ... Not building database; man-db/auto-update is not 'true'. Setting up libxxf86vm1:arm64 (1:1.1.4-1+b2) ... Setting up libxfixes3:arm64 (1:6.0.0-2+b1) ... Setting up sphinx-common (7.2.6-7) ... Setting up libxt6t64:arm64 (1:1.2.1-1.2) ... Setting up libxrandr2:arm64 (2:1.5.4-1) ... Setting up libsub-override-perl (0.11-1) ... Setting up libpython3-stdlib:arm64 (3.11.8-1) ... Setting up libfile-stripnondeterminism-perl (1.13.1-1) ... Setting up python3.11 (3.11.9-1) ... Setting up libxmu6:arm64 (2:1.1.3-3+b2) ... Setting up libglx-mesa0:arm64 (24.0.7-1) ... Setting up libglx0:arm64 (1.7.0-1+b1) ... Setting up python3 (3.11.8-1) ... Setting up python3-sortedcontainers (2.4.0-2) ... Setting up libxaw7:arm64 (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.1.0+dfsg-1) ... 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:arm64 (1.7.0-1+b1) ... Setting up python3-sqlparse (0.5.0-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.11.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 dh-strip-nondeterminism (1.13.1-1) ... Setting up python3-dnspython (2.6.1-1) ... Setting up python3-amqp (5.2.0-2) ... Setting up python3-exceptiongroup (1.2.1-1) ... Setting up python3-dateutil (2.9.0-2) ... Setting up python3-build (1.2.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:arm64 (1.16.0-2+b2) ... 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-2) ... 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.13-1) ... Setting up python3-billiard (4.2.0-3) ... 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.2-1) ... 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.62-1) ... 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 debhelper (13.15.3) ... Setting up python3-click (8.1.7-1) ... Setting up python3-pytest-django (4.5.2-3) ... Setting up python3-kombu (5.3.7-2) ... 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-2) ... 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.25.0-1) ... Setting up python3-requests-mock (1.11.0-1) ... Setting up python3-josepy (1.14.0-1) ... Setting up python3-celery (5.4.0-1) ... 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.20.0+dfsg-1) ... Processing triggers for libc-bin (2.38-11) ... 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-7) ... 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 arm64 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/widgets.py -> build/lib/django_ca copying ca/django_ca/views.py -> build/lib/django_ca copying ca/django_ca/utils.py -> build/lib/django_ca copying ca/django_ca/urls.py -> build/lib/django_ca copying ca/django_ca/typehints.py -> build/lib/django_ca copying ca/django_ca/tasks.py -> build/lib/django_ca copying ca/django_ca/signals.py -> build/lib/django_ca copying ca/django_ca/querysets.py -> build/lib/django_ca copying ca/django_ca/profiles.py -> build/lib/django_ca copying ca/django_ca/models.py -> build/lib/django_ca copying ca/django_ca/modelfields.py -> build/lib/django_ca copying ca/django_ca/managers.py -> build/lib/django_ca copying ca/django_ca/forms.py -> build/lib/django_ca copying ca/django_ca/fields.py -> build/lib/django_ca copying ca/django_ca/deprecation.py -> build/lib/django_ca copying ca/django_ca/converters.py -> build/lib/django_ca copying ca/django_ca/constants.py -> build/lib/django_ca copying ca/django_ca/checks.py -> build/lib/django_ca copying ca/django_ca/ca_settings.py -> build/lib/django_ca copying ca/django_ca/apps.py -> build/lib/django_ca copying ca/django_ca/admin.py -> build/lib/django_ca copying ca/django_ca/__init__.py -> build/lib/django_ca creating 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_views.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_utils.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_sphinx_extensions.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_querysets.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_models.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_fields.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_deprecation.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_checks.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_admin_acme.py -> build/lib/django_ca/tests copying ca/django_ca/tests/test_acme.py -> build/lib/django_ca/tests copying ca/django_ca/tests/__init__.py -> build/lib/django_ca/tests 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/openssh copying ca/django_ca/openssh/extensions.py -> build/lib/django_ca/openssh copying ca/django_ca/openssh/constants.py -> build/lib/django_ca/openssh copying ca/django_ca/openssh/__init__.py -> build/lib/django_ca/openssh creating build/lib/django_ca/migrations copying ca/django_ca/migrations/__init__.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/0028_alter_certificate_revoked_reason_and_more.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/0026_auto_20210501_1258.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/0024_auto_20210430_1131.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/0022_auto_20210430_1124.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/0020_auto_20201213_2014.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/0018_certificate_profile.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/0016_auto_20190706_1548.py -> build/lib/django_ca/migrations copying ca/django_ca/migrations/0015_auto_20190518_1050.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/0013_certificateauthority_crl_number.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/0011_auto_20181208_1708.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/0009_auto_20181128_2050.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/0007_auto_20171119_1100.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/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/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/0001_initial.py -> build/lib/django_ca/migrations creating build/lib/django_ca/management copying ca/django_ca/management/mixins.py -> 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/__init__.py -> build/lib/django_ca/management creating build/lib/django_ca/extensions copying ca/django_ca/extensions/utils.py -> build/lib/django_ca/extensions copying ca/django_ca/extensions/text.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 creating build/lib/django_ca/acme copying ca/django_ca/acme/views.py -> build/lib/django_ca/acme copying ca/django_ca/acme/validation.py -> build/lib/django_ca/acme copying ca/django_ca/acme/utils.py -> build/lib/django_ca/acme copying ca/django_ca/acme/responses.py -> build/lib/django_ca/acme copying ca/django_ca/acme/messages.py -> build/lib/django_ca/acme copying ca/django_ca/acme/errors.py -> build/lib/django_ca/acme copying ca/django_ca/acme/constants.py -> build/lib/django_ca/acme copying ca/django_ca/acme/__init__.py -> build/lib/django_ca/acme 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/test_admin_html.py -> build/lib/django_ca/tests/extensions copying ca/django_ca/tests/extensions/__init__.py -> build/lib/django_ca/tests/extensions creating 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_sign_cert.py -> build/lib/django_ca/tests/commands copying ca/django_ca/tests/commands/test_revoke_cert.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_regenerate_ocsp_keys.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_list_certs.py -> 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_init_ca.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_import_ca.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_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_dump_ca.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_cert_watchers.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/__init__.py -> build/lib/django_ca/tests/commands creating 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/typehints.py -> build/lib/django_ca/tests/base copying ca/django_ca/tests/base/testcases.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 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/test_extra_views.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_add_cert.py -> build/lib/django_ca/tests/admin copying ca/django_ca/tests/admin/test_actions.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/__init__.py -> build/lib/django_ca/tests/admin 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/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_update_account.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_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_new_order.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_new_account.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 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_authorization.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/__init__.py -> build/lib/django_ca/tests/acme/views creating 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/view_ca.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/revoke_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/regenerate_ocsp_keys.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/list_certs.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/list_cas.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/import_cert.py -> 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/edit_ca.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/dump_cert.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/convert_timestamps.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/cache_crls.py -> build/lib/django_ca/management/commands copying ca/django_ca/management/commands/__init__.py -> build/lib/django_ca/management/commands 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-aarch64/wheel running install running install_lib creating build/bdist.linux-aarch64 creating build/bdist.linux-aarch64/wheel creating build/bdist.linux-aarch64/wheel/django_ca creating build/bdist.linux-aarch64/wheel/django_ca/templates creating build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca creating build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms creating build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/subjecttextinput.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/profile.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/multiwidget.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/labeledtextinput.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/labeledcheckboxinput.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/custommultiwidget.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/critical.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets creating build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/admin creating build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/admin/extensions creating build/bdist.linux-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/wheel/django_ca/templates/django_ca/admin/extensions/base copying build/lib/django_ca/templates/django_ca/admin/extensions/unrecognized_extension.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/missing.html -> build/bdist.linux-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.15.html -> build/bdist.linux-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/submit_line.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/admin copying build/lib/django_ca/templates/django_ca/admin/extensions-help.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/admin creating build/bdist.linux-aarch64/wheel/django_ca/templates/admin creating build/bdist.linux-aarch64/wheel/django_ca/templates/admin/django_ca creating build/bdist.linux-aarch64/wheel/django_ca/templates/admin/django_ca/certificateauthority copying build/lib/django_ca/templates/admin/django_ca/certificateauthority/change_form.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/admin/django_ca/certificateauthority creating build/bdist.linux-aarch64/wheel/django_ca/templates/admin/django_ca/certificate copying build/lib/django_ca/templates/admin/django_ca/certificate/revoke_form.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/admin/django_ca/certificate copying build/lib/django_ca/templates/admin/django_ca/certificate/change_form.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/admin/django_ca/certificate copying build/lib/django_ca/templates/admin/django_ca/certificate/add_form.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/admin/django_ca/certificate creating build/bdist.linux-aarch64/wheel/django_ca/static creating build/bdist.linux-aarch64/wheel/django_ca/static/django_ca creating build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin creating build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/sign.js -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/profilewidget.js -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/extensions.js -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/ca-details.js -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/js creating build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/multiwidget.css -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/labeledtextinput.css -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/labeledcheckboxinput.css -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/certificateauthorityadmin.css -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/certificateadmin.css -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/base.css -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/py.typed -> build/bdist.linux-aarch64/wheel/django_ca creating build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/constants.py -> build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/errors.py -> build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/messages.py -> build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/responses.py -> build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/utils.py -> build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/validation.py -> build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/views.py -> build/bdist.linux-aarch64/wheel/django_ca/acme creating build/bdist.linux-aarch64/wheel/django_ca/extensions copying build/lib/django_ca/extensions/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/extensions copying build/lib/django_ca/extensions/parse.py -> build/bdist.linux-aarch64/wheel/django_ca/extensions copying build/lib/django_ca/extensions/serialize.py -> build/bdist.linux-aarch64/wheel/django_ca/extensions copying build/lib/django_ca/extensions/text.py -> build/bdist.linux-aarch64/wheel/django_ca/extensions copying build/lib/django_ca/extensions/utils.py -> build/bdist.linux-aarch64/wheel/django_ca/extensions creating build/bdist.linux-aarch64/wheel/django_ca/management creating build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/cache_crls.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/cert_watchers.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/convert_timestamps.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/dump_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/dump_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/dump_crl.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/edit_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/import_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/import_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/init_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/list_cas.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/list_certs.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/notify_expiring_certs.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/regenerate_ocsp_keys.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/resign_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/revoke_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/sign_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/view_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/view_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/management copying build/lib/django_ca/management/actions.py -> build/bdist.linux-aarch64/wheel/django_ca/management copying build/lib/django_ca/management/base.py -> build/bdist.linux-aarch64/wheel/django_ca/management copying build/lib/django_ca/management/mixins.py -> build/bdist.linux-aarch64/wheel/django_ca/management creating build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0001_initial.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0002_auto_20170304_1434.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0003_auto_20170304_1434.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0004_auto_20170304_1442.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0005_auto_20170307_1839.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0006_auto_20170505_1251.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0007_auto_20171119_1100.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0008_auto_20171203_2001.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0009_auto_20181128_2050.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0010_auto_20181128_2054.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0011_auto_20181208_1708.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0012_auto_20190405_2345.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0013_certificateauthority_crl_number.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0014_auto_20190518_1046.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0015_auto_20190518_1050.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0016_auto_20190706_1548.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0017_auto_20200112_1657.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0018_certificate_profile.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0019_certificate_autogenerated.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0020_auto_20201213_2014.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0021_auto_20210416_1557.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0022_auto_20210430_1124.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0023_auto_20210429_0000.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0024_auto_20210430_1131.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0025_auto_20210430_1132.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0026_auto_20210501_1258.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0027_certificateauthority_acme_profile.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0028_alter_certificate_revoked_reason_and_more.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0029_certificate_updated_certificateauthority_updated_and_more.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations creating build/bdist.linux-aarch64/wheel/django_ca/openssh copying build/lib/django_ca/openssh/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/openssh copying build/lib/django_ca/openssh/constants.py -> build/bdist.linux-aarch64/wheel/django_ca/openssh copying build/lib/django_ca/openssh/extensions.py -> build/bdist.linux-aarch64/wheel/django_ca/openssh creating build/bdist.linux-aarch64/wheel/django_ca/templatetags copying build/lib/django_ca/templatetags/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/templatetags copying build/lib/django_ca/templatetags/django_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/templatetags creating build/bdist.linux-aarch64/wheel/django_ca/tests creating build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures creating build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/unknown-serial -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/req1 -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/nonce.req -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/no-nonce.req -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/multiple-serial -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/ocsp creating build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/multiple_ous_and_no_ext.pem -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/letsencrypt_jabber_at.pem -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/godaddy_derstandardat.pem -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/cloudflare_1.pem -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/sha1.csr.pem -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/prepared-acme-requests.json -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/md5.csr.pem -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/docker-compose.certbot.yaml -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dnsmasq.sh -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/django-ca-test-validation.sh -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/django-ca-dns-clean.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/django-ca-dns-auth.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/cli.ini -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/cert-data.json -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/Dockerfile.certbot -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures creating build/bdist.linux-aarch64/wheel/django_ca/tests/acme creating build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/base.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_authorization.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_challenge.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_directory.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_new_account.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_new_nonce.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_new_order.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_order.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_order_finalize.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_revocation.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_update_account.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_view_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme creating build/bdist.linux-aarch64/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/base.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_actions.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_add_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_admin_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_extra_views.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_views.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/admin creating build/bdist.linux-aarch64/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/mixins.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/pragmas.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/testcases.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/typehints.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/base creating build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_cache_crls.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_cert_watchers.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_convert_timestamps.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_dump_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_dump_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_dump_crl.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_edit_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_import_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_import_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_init_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_list_cas.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_list_certs.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_notify.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_regenerate_ocsp_keys.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_resign_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_revoke_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_sign_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_view_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_view_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands creating build/bdist.linux-aarch64/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_admin_html.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_doctests.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_extension_values.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_unknown_extension.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_acme.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_admin_acme.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_base.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_checks.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_constants.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_deprecation.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_docs.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_fields.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_management_actions.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_managers.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_models.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_profiles.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_querysets.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_settings.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_sphinx_extensions.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_tasks.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_utils.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_verification.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_views.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_views_ocsp.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/admin.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/apps.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/ca_settings.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/checks.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/constants.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/converters.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/deprecation.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/fields.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/forms.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/managers.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/modelfields.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/models.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/profiles.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/querysets.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/signals.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/tasks.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/typehints.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/urls.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/utils.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/views.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/widgets.py -> build/bdist.linux-aarch64/wheel/django_ca running install_egg_info Copying ca/django_ca.egg-info to build/bdist.linux-aarch64/wheel/django_ca-1.25.0.egg-info running install_scripts creating build/bdist.linux-aarch64/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-vkovi0ep/django_ca-1.25.0-py3-none-any.whl' and adding 'build/bdist.linux-aarch64/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-aarch64/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-aarch64/wheel running install running install_lib creating build/bdist.linux-aarch64/wheel creating build/bdist.linux-aarch64/wheel/django_ca creating build/bdist.linux-aarch64/wheel/django_ca/templates creating build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca creating build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms creating build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/subjecttextinput.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/profile.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/multiwidget.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/labeledtextinput.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/labeledcheckboxinput.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/custommultiwidget.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets copying build/lib/django_ca/templates/django_ca/forms/widgets/critical.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/forms/widgets creating build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/admin creating build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/admin/extensions creating build/bdist.linux-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/wheel/django_ca/templates/django_ca/admin/extensions/base copying build/lib/django_ca/templates/django_ca/admin/extensions/unrecognized_extension.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/missing.html -> build/bdist.linux-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/extensions/2.5.29.15.html -> build/bdist.linux-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/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-aarch64/wheel/django_ca/templates/django_ca/admin/extensions copying build/lib/django_ca/templates/django_ca/admin/submit_line.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/admin copying build/lib/django_ca/templates/django_ca/admin/extensions-help.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/django_ca/admin creating build/bdist.linux-aarch64/wheel/django_ca/templates/admin creating build/bdist.linux-aarch64/wheel/django_ca/templates/admin/django_ca creating build/bdist.linux-aarch64/wheel/django_ca/templates/admin/django_ca/certificateauthority copying build/lib/django_ca/templates/admin/django_ca/certificateauthority/change_form.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/admin/django_ca/certificateauthority creating build/bdist.linux-aarch64/wheel/django_ca/templates/admin/django_ca/certificate copying build/lib/django_ca/templates/admin/django_ca/certificate/revoke_form.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/admin/django_ca/certificate copying build/lib/django_ca/templates/admin/django_ca/certificate/change_form.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/admin/django_ca/certificate copying build/lib/django_ca/templates/admin/django_ca/certificate/add_form.html -> build/bdist.linux-aarch64/wheel/django_ca/templates/admin/django_ca/certificate creating build/bdist.linux-aarch64/wheel/django_ca/static creating build/bdist.linux-aarch64/wheel/django_ca/static/django_ca creating build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin creating build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/sign.js -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/profilewidget.js -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/extensions.js -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/js copying build/lib/django_ca/static/django_ca/admin/js/ca-details.js -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/js creating build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/multiwidget.css -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/labeledtextinput.css -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/labeledcheckboxinput.css -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/certificateauthorityadmin.css -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/certificateadmin.css -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/static/django_ca/admin/css/base.css -> build/bdist.linux-aarch64/wheel/django_ca/static/django_ca/admin/css copying build/lib/django_ca/py.typed -> build/bdist.linux-aarch64/wheel/django_ca creating build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/constants.py -> build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/errors.py -> build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/messages.py -> build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/responses.py -> build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/utils.py -> build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/validation.py -> build/bdist.linux-aarch64/wheel/django_ca/acme copying build/lib/django_ca/acme/views.py -> build/bdist.linux-aarch64/wheel/django_ca/acme creating build/bdist.linux-aarch64/wheel/django_ca/extensions copying build/lib/django_ca/extensions/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/extensions copying build/lib/django_ca/extensions/parse.py -> build/bdist.linux-aarch64/wheel/django_ca/extensions copying build/lib/django_ca/extensions/serialize.py -> build/bdist.linux-aarch64/wheel/django_ca/extensions copying build/lib/django_ca/extensions/text.py -> build/bdist.linux-aarch64/wheel/django_ca/extensions copying build/lib/django_ca/extensions/utils.py -> build/bdist.linux-aarch64/wheel/django_ca/extensions creating build/bdist.linux-aarch64/wheel/django_ca/management creating build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/cache_crls.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/cert_watchers.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/convert_timestamps.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/dump_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/dump_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/dump_crl.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/edit_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/import_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/import_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/init_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/list_cas.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/list_certs.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/notify_expiring_certs.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/regenerate_ocsp_keys.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/resign_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/revoke_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/sign_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/view_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/commands/view_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/management/commands copying build/lib/django_ca/management/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/management copying build/lib/django_ca/management/actions.py -> build/bdist.linux-aarch64/wheel/django_ca/management copying build/lib/django_ca/management/base.py -> build/bdist.linux-aarch64/wheel/django_ca/management copying build/lib/django_ca/management/mixins.py -> build/bdist.linux-aarch64/wheel/django_ca/management creating build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0001_initial.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0002_auto_20170304_1434.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0003_auto_20170304_1434.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0004_auto_20170304_1442.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0005_auto_20170307_1839.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0006_auto_20170505_1251.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0007_auto_20171119_1100.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0008_auto_20171203_2001.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0009_auto_20181128_2050.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0010_auto_20181128_2054.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0011_auto_20181208_1708.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0012_auto_20190405_2345.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0013_certificateauthority_crl_number.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0014_auto_20190518_1046.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0015_auto_20190518_1050.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0016_auto_20190706_1548.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0017_auto_20200112_1657.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0018_certificate_profile.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0019_certificate_autogenerated.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0020_auto_20201213_2014.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0021_auto_20210416_1557.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0022_auto_20210430_1124.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0023_auto_20210429_0000.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0024_auto_20210430_1131.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0025_auto_20210430_1132.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0026_auto_20210501_1258.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0027_certificateauthority_acme_profile.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0028_alter_certificate_revoked_reason_and_more.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/0029_certificate_updated_certificateauthority_updated_and_more.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations copying build/lib/django_ca/migrations/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/migrations creating build/bdist.linux-aarch64/wheel/django_ca/openssh copying build/lib/django_ca/openssh/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/openssh copying build/lib/django_ca/openssh/constants.py -> build/bdist.linux-aarch64/wheel/django_ca/openssh copying build/lib/django_ca/openssh/extensions.py -> build/bdist.linux-aarch64/wheel/django_ca/openssh creating build/bdist.linux-aarch64/wheel/django_ca/templatetags copying build/lib/django_ca/templatetags/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/templatetags copying build/lib/django_ca/templatetags/django_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/templatetags creating build/bdist.linux-aarch64/wheel/django_ca/tests creating build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures creating build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/unknown-serial -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/req1 -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/nonce.req -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/no-nonce.req -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/ocsp copying build/lib/django_ca/tests/fixtures/ocsp/multiple-serial -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/ocsp creating build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/multiple_ous_and_no_ext.pem -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/letsencrypt_jabber_at.pem -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/godaddy_derstandardat.pem -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/contrib/cloudflare_1.pem -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures/contrib copying build/lib/django_ca/tests/fixtures/sha1.csr.pem -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/root-cert.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/pwd-cert.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-webserver.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-server.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-ocsp.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-enduser.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/profile-client.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/prepared-acme-requests.json -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/no-extensions.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/md5.csr.pem -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed448-cert.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ed25519-cert.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/ec-cert.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dsa-cert.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/docker-compose.certbot.yaml -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/dnsmasq.sh -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/django-ca-test-validation.sh -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/django-ca-dns-clean.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/django-ca-dns-auth.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/cli.ini -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/child-cert.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/cert-data.json -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/alt-extensions.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.pub.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.pub -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.key.der -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.key -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/all-extensions.csr -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures copying build/lib/django_ca/tests/fixtures/Dockerfile.certbot -> build/bdist.linux-aarch64/wheel/django_ca/tests/fixtures creating build/bdist.linux-aarch64/wheel/django_ca/tests/acme creating build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/base.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_authorization.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_challenge.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_directory.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_new_account.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_new_nonce.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_new_order.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_order.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_order_finalize.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_revocation.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_update_account.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/views/test_view_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme/views copying build/lib/django_ca/tests/acme/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/acme creating build/bdist.linux-aarch64/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/base.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_actions.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_add_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_admin_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_extra_views.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/admin copying build/lib/django_ca/tests/admin/test_views.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/admin creating build/bdist.linux-aarch64/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/mixins.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/pragmas.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/testcases.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/typehints.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/base copying build/lib/django_ca/tests/base/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/base creating build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_cache_crls.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_cert_watchers.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_convert_timestamps.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_dump_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_dump_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_dump_crl.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_edit_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_import_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_import_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_init_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_list_cas.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_list_certs.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_notify.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_regenerate_ocsp_keys.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_resign_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_revoke_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_sign_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_view_ca.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands copying build/lib/django_ca/tests/commands/test_view_cert.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/commands creating build/bdist.linux-aarch64/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_admin_html.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_doctests.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_extension_values.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/extensions/test_unknown_extension.py -> build/bdist.linux-aarch64/wheel/django_ca/tests/extensions copying build/lib/django_ca/tests/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_acme.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_admin_acme.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_base.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_checks.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_constants.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_deprecation.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_docs.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_fields.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_management_actions.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_managers.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_models.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_profiles.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_querysets.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_settings.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_sphinx_extensions.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_tasks.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_utils.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_verification.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_views.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/tests/test_views_ocsp.py -> build/bdist.linux-aarch64/wheel/django_ca/tests copying build/lib/django_ca/__init__.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/admin.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/apps.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/ca_settings.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/checks.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/constants.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/converters.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/deprecation.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/fields.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/forms.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/managers.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/modelfields.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/models.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/profiles.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/querysets.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/signals.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/tasks.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/typehints.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/urls.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/utils.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/views.py -> build/bdist.linux-aarch64/wheel/django_ca copying build/lib/django_ca/widgets.py -> build/bdist.linux-aarch64/wheel/django_ca running install_egg_info Copying ca/django_ca.egg-info to build/bdist.linux-aarch64/wheel/django_ca-1.25.0.egg-info running install_scripts creating build/bdist.linux-aarch64/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-us5tj4je/django_ca-1.25.0-py3-none-any.whl' and adding 'build/bdist.linux-aarch64/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-aarch64/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.2, 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 = 223177315506675139...6024364833140588734 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 = 540421681811123668...5862197773253224241 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 = 584494824491420915...7846579915667859268 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 207.26s (0:03:27) = 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.2, 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 = 339366191319928055...0080510293519567460 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 = 131718357924484461...8378327270684678036 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 = 596646958585617471...6383535911098558899 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 202.96s (0:03:22) = 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/2049292 and its subdirectories Tue May 21 03:02:03 UTC 2024 W: No second build log, what happened?