git: cb6fdc0dee4d - main - devel/py-qcs-api-client-common: New port: Core QCS client functionality and middleware implementations

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Tue, 20 Oct 2026 20:36:13 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=cb6fdc0dee4d995fcd9eaf7bfd3605b5a72e99f6

commit cb6fdc0dee4d995fcd9eaf7bfd3605b5a72e99f6
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-10-20 20:31:10 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-10-20 20:36:10 +0000

    devel/py-qcs-api-client-common: New port: Core QCS client functionality and middleware implementations
    
    PR:             298446
    Approved by:    Baptiste Daroussin <bapt@FreeBSD.org> (on behalf of portmgr@)
---
 devel/Makefile                           |    1 +
 devel/py-qcs-api-client-common/Makefile  |  567 ++++++++++++++++
 devel/py-qcs-api-client-common/distinfo  | 1059 ++++++++++++++++++++++++++++++
 devel/py-qcs-api-client-common/pkg-descr |    1 +
 4 files changed, 1628 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index c5973a2b80ef..a3b8d29cb631 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -6102,6 +6102,7 @@
     SUBDIR += py-q
     SUBDIR += py-qasync
     SUBDIR += py-qcs-api-client
+    SUBDIR += py-qcs-api-client-common
     SUBDIR += py-qcs-sdk-python
     SUBDIR += py-qstylizer
     SUBDIR += py-qt5
diff --git a/devel/py-qcs-api-client-common/Makefile b/devel/py-qcs-api-client-common/Makefile
new file mode 100644
index 000000000000..e8eec0d5bf8e
--- /dev/null
+++ b/devel/py-qcs-api-client-common/Makefile
@@ -0,0 +1,567 @@
+PORTNAME=	qcs-api-client-common
+DISTVERSION=	0.27.0
+CATEGORIES=	devel python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+DISTNAME=	${PORTNAME:S/-/_/g}-${DISTVERSION}
+DISTFILES=	${DISTNAME}${EXTRACT_SUFX}
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Core QCS client functionality and middleware implementations
+WWW=		https://github.com/rigetti/qcs-api-client-rust
+
+LICENSE=	APACHE20
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}maturin>=1.9.4:devel/py-maturin@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}grpc-interceptor>=0.15.0:devel/py-grpc-interceptor@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}grpcio>=1.63.0:devel/py-grpcio@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}httpx>=0.27.0:www/py-httpx@${PY_FLAVOR}
+TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}pytest-asyncio>=0.23.6:devel/py-pytest-asyncio@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pytest-mock>=3.14.0:devel/py-pytest-mock@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}syrupy>=4.0.0:devel/py-syrupy@${PY_FLAVOR}
+
+USES=		cargo python
+USE_PYTHON=	pep517 autoplist pytest
+
+CARGO_CRATES=	adler2-2.0.1 \
+		aho-corasick-1.1.5 \
+		android_system_properties-0.1.6 \
+		anstream-1.0.0 \
+		anstyle-1.0.14 \
+		anstyle-parse-1.0.0 \
+		anstyle-query-1.1.5 \
+		anstyle-wincon-3.0.11 \
+		anyhow-1.0.104 \
+		assert-json-diff-2.0.2 \
+		async-attributes-1.1.2 \
+		async-channel-1.9.0 \
+		async-channel-2.5.0 \
+		async-executor-1.14.0 \
+		async-global-executor-2.4.1 \
+		async-io-2.6.0 \
+		async-lock-3.4.2 \
+		async-object-pool-0.2.0 \
+		async-socks5-0.6.0 \
+		async-std-1.13.2 \
+		async-task-4.7.1 \
+		async-tempfile-0.8.0 \
+		async-trait-0.1.92 \
+		atomic-0.6.1 \
+		atomic-waker-1.1.2 \
+		autocfg-1.5.1 \
+		aws-lc-rs-1.18.2 \
+		aws-lc-sys-0.46.0 \
+		axum-0.8.9 \
+		axum-core-0.5.6 \
+		backon-1.6.0 \
+		base64-0.22.1 \
+		base64-0.23.1 \
+		base64ct-1.8.3 \
+		bitflags-1.3.2 \
+		bitflags-2.13.2 \
+		block-buffer-0.10.4 \
+		blocking-1.7.0 \
+		bs58-0.5.1 \
+		bumpalo-3.20.3 \
+		bytemuck-1.25.2 \
+		bytes-1.12.1 \
+		cc-1.8.0 \
+		cfg-if-1.0.5 \
+		cfg_aliases-0.2.2 \
+		chacha20-0.10.2 \
+		chrono-0.4.45 \
+		clap-4.6.7 \
+		clap-stdin-0.8.1 \
+		clap_builder-4.6.7 \
+		clap_derive-4.6.7 \
+		clap_lex-1.1.1 \
+		cmake-0.1.58 \
+		colorchoice-1.0.5 \
+		colored-3.1.1 \
+		combine-4.6.8 \
+		concurrent-queue-2.5.0 \
+		const-hex-1.19.3 \
+		const-oid-0.9.6 \
+		cookie-0.18.2 \
+		cookie_store-0.22.1 \
+		core-foundation-0.9.4 \
+		core-foundation-0.10.1 \
+		core-foundation-sys-0.8.7 \
+		core_detect-1.0.0 \
+		cpufeatures-0.2.17 \
+		cpufeatures-0.3.1 \
+		crc32fast-1.5.2 \
+		crossbeam-utils-0.8.23 \
+		crunchy-0.2.4 \
+		crypto-common-0.1.7 \
+		darling-0.20.11 \
+		darling-0.24.1 \
+		darling_core-0.20.11 \
+		darling_core-0.24.1 \
+		darling_macro-0.20.11 \
+		darling_macro-0.24.1 \
+		defmt-1.1.1 \
+		defmt-macros-1.1.1 \
+		defmt-parser-1.0.0 \
+		der-0.7.10 \
+		deranged-0.5.9 \
+		derive_builder-0.20.2 \
+		derive_builder_core-0.20.2 \
+		derive_builder_macro-0.20.2 \
+		digest-0.10.7 \
+		dispatch2-0.3.1 \
+		displaydoc-0.2.7 \
+		document-features-0.2.12 \
+		dotenvy-0.15.7 \
+		dunce-1.0.5 \
+		dyn-clone-1.0.20 \
+		either-1.19.0 \
+		encoding_rs-0.8.42 \
+		envy-0.4.2 \
+		equivalent-1.0.2 \
+		errno-0.3.14 \
+		event-listener-2.5.3 \
+		event-listener-5.4.2 \
+		event-listener-strategy-0.5.4 \
+		fastrand-2.5.0 \
+		figment-0.10.19 \
+		find-msvc-tools-0.1.14 \
+		fixedbitset-0.5.7 \
+		flate2-1.1.10 \
+		fnv-1.0.7 \
+		foldhash-0.1.5 \
+		foreign-types-0.3.2 \
+		foreign-types-shared-0.1.1 \
+		form_urlencoded-1.2.2 \
+		fs_extra-1.3.0 \
+		futures-0.3.34 \
+		futures-channel-0.3.34 \
+		futures-core-0.3.34 \
+		futures-executor-0.3.34 \
+		futures-io-0.3.34 \
+		futures-lite-2.6.1 \
+		futures-macro-0.3.34 \
+		futures-sink-0.3.34 \
+		futures-task-0.3.34 \
+		futures-timer-3.0.4 \
+		futures-util-0.3.34 \
+		generic-array-0.14.7 \
+		getopts-0.2.24 \
+		getrandom-0.2.17 \
+		getrandom-0.3.4 \
+		getrandom-0.4.3 \
+		glob-0.3.4 \
+		gloo-timers-0.3.0 \
+		h2-0.4.20 \
+		hashbrown-0.12.3 \
+		hashbrown-0.15.5 \
+		hashbrown-0.17.1 \
+		headers-0.4.2 \
+		headers-core-0.3.0 \
+		heck-0.5.0 \
+		hermit-abi-0.5.3 \
+		hex-0.4.3 \
+		home-0.5.12 \
+		http-1.5.0 \
+		http-body-1.1.0 \
+		http-body-util-0.1.5 \
+		httparse-1.10.1 \
+		httpdate-1.0.3 \
+		httpmock-0.8.3 \
+		hyper-1.12.0 \
+		hyper-rustls-0.27.10 \
+		hyper-socks2-0.9.1 \
+		hyper-timeout-0.5.2 \
+		hyper-tls-0.6.0 \
+		hyper-util-0.1.21 \
+		iana-time-zone-0.1.65 \
+		iana-time-zone-haiku-0.1.2 \
+		icu_collections-2.3.0 \
+		icu_locale_core-2.3.0 \
+		icu_normalizer-2.3.0 \
+		icu_normalizer_data-2.3.0 \
+		icu_properties-2.3.0 \
+		icu_properties_data-2.3.0 \
+		icu_provider-2.3.1 \
+		ident_case-1.0.1 \
+		idna-1.1.0 \
+		idna_adapter-1.2.2 \
+		indexmap-1.9.3 \
+		indexmap-2.14.2 \
+		inlinable_string-0.1.15 \
+		inventory-0.3.25 \
+		ipnet-2.12.2 \
+		is-macro-0.3.8 \
+		is_terminal_polyfill-1.70.2 \
+		itertools-0.11.0 \
+		itertools-0.14.0 \
+		itertools-0.15.0 \
+		itoa-1.0.18 \
+		jiff-0.2.38 \
+		jiff-core-0.1.1 \
+		jiff-static-0.2.38 \
+		jiff-tzdb-0.1.9 \
+		jiff-tzdb-platform-0.1.3 \
+		jni-0.22.4 \
+		jni-macros-0.22.4 \
+		jni-sys-0.4.1 \
+		jni-sys-macros-0.4.1 \
+		jobserver-0.1.35 \
+		js-sys-0.3.106 \
+		jsonwebtoken-9.3.1 \
+		jsonwebtoken-10.4.0 \
+		kv-log-macro-1.0.7 \
+		lalrpop-util-0.20.2 \
+		lazy_static-1.5.1 \
+		libc-0.2.190 \
+		libm-0.2.16 \
+		linux-raw-sys-0.12.1 \
+		litemap-0.8.3 \
+		litrs-1.0.1 \
+		lock_api-0.4.14 \
+		log-0.4.34 \
+		lru-slab-0.1.3 \
+		maplit-1.0.2 \
+		matchers-0.2.0 \
+		matchit-0.8.4 \
+		matrixmultiply-0.3.11 \
+		memchr-2.8.3 \
+		miette-7.6.0 \
+		miette-derive-7.6.0 \
+		mime-0.3.17 \
+		mime_guess-2.0.5 \
+		miniz_oxide-0.9.1 \
+		mio-1.2.4 \
+		multimap-0.10.1 \
+		multiversion_no_op-1.0.0 \
+		native-tls-0.2.18 \
+		ndarray-0.17.2 \
+		ndk-context-0.1.1 \
+		nu-ansi-term-0.50.3 \
+		num-bigint-0.4.8 \
+		num-bigint-dig-0.8.6 \
+		num-complex-0.4.6 \
+		num-conv-0.2.2 \
+		num-integer-0.1.47 \
+		num-iter-0.1.46 \
+		num-traits-0.2.19 \
+		numpy-0.29.0 \
+		oauth2-5.0.0 \
+		oauth2-test-server-0.2.3 \
+		objc2-0.6.5 \
+		objc2-app-kit-0.3.2 \
+		objc2-core-foundation-0.3.2 \
+		objc2-encode-4.1.0 \
+		objc2-foundation-0.3.2 \
+		once_cell-1.21.4 \
+		once_cell_polyfill-1.70.2 \
+		openssl-0.10.81 \
+		openssl-macros-0.1.1 \
+		openssl-probe-0.2.1 \
+		openssl-sys-0.9.117 \
+		opentelemetry-0.32.0 \
+		opentelemetry-http-0.32.0 \
+		opentelemetry-otlp-0.32.0 \
+		opentelemetry-proto-0.32.0 \
+		opentelemetry_sdk-0.32.1 \
+		optipy-0.1.4 \
+		optipy-0.2.2 \
+		ordered-float-5.5.0 \
+		parking-2.2.1 \
+		parking_lot-0.12.5 \
+		parking_lot_core-0.9.12 \
+		pastey-0.2.3 \
+		path-tree-0.8.3 \
+		pbjson-0.9.0 \
+		pbjson-build-0.9.0 \
+		pbjson-types-0.9.0 \
+		pear-0.2.9 \
+		pear_codegen-0.2.9 \
+		pem-3.0.6 \
+		pem-rfc7468-0.7.0 \
+		percent-encoding-2.3.2 \
+		petgraph-0.8.3 \
+		phf-0.11.3 \
+		phf_codegen-0.11.3 \
+		phf_generator-0.11.3 \
+		phf_shared-0.11.3 \
+		pin-project-1.1.13 \
+		pin-project-internal-1.1.13 \
+		pin-project-lite-0.2.17 \
+		pin-utils-0.1.1 \
+		piper-0.2.5 \
+		pkcs1-0.7.5 \
+		pkcs8-0.10.2 \
+		pkg-config-0.3.34 \
+		polling-3.11.0 \
+		portable-atomic-1.15.0 \
+		portable-atomic-util-0.2.8 \
+		potential_utf-0.1.6 \
+		powerfmt-0.2.1 \
+		ppv-lite86-0.2.21 \
+		prettyplease-0.2.37 \
+		proc-macro-crate-3.5.0 \
+		proc-macro2-1.0.107 \
+		proc-macro2-diagnostics-0.10.1 \
+		proptest-1.12.0 \
+		prost-0.14.4 \
+		prost-build-0.14.4 \
+		prost-derive-0.14.4 \
+		prost-types-0.14.4 \
+		psl-types-2.0.11 \
+		publicsuffix-2.3.0 \
+		pulldown-cmark-0.13.4 \
+		pulldown-cmark-to-cmark-22.0.3 \
+		pyo3-0.29.3 \
+		pyo3-async-runtimes-0.29.0 \
+		pyo3-build-config-0.29.3 \
+		pyo3-ffi-0.29.3 \
+		pyo3-macros-0.29.3 \
+		pyo3-macros-backend-0.29.3 \
+		pyo3-stub-gen-0.23.1 \
+		pyo3-stub-gen-derive-0.23.1 \
+		qcs-dependencies-client-0.6.0 \
+		quinn-0.11.12 \
+		quinn-proto-0.11.19 \
+		quinn-udp-0.5.16 \
+		quote-1.0.47 \
+		r-efi-5.3.0 \
+		r-efi-6.0.0 \
+		rand-0.8.8 \
+		rand-0.9.5 \
+		rand-0.10.3 \
+		rand_chacha-0.3.1 \
+		rand_chacha-0.9.0 \
+		rand_core-0.6.4 \
+		rand_core-0.9.5 \
+		rand_core-0.10.1 \
+		rand_pcg-0.10.2 \
+		rand_xorshift-0.5.0 \
+		rawpointer-0.2.1 \
+		redox_syscall-0.5.18 \
+		ref-cast-1.0.27 \
+		ref-cast-impl-1.0.27 \
+		regex-1.13.1 \
+		regex-automata-0.4.18 \
+		regex-syntax-0.8.11 \
+		relative-path-1.9.3 \
+		reqwest-0.12.28 \
+		reqwest-0.13.5 \
+		reqwest-middleware-0.5.2 \
+		reqwest-tracing-0.7.1 \
+		rigetti-hyper-proxy-1.1.1 \
+		rigetti-pyo3-0.8.3 \
+		ring-0.17.14 \
+		rsa-0.9.10 \
+		rstest-0.26.1 \
+		rstest_macros-0.26.1 \
+		rustc-hash-1.1.0 \
+		rustc-hash-2.1.3 \
+		rustc_version-0.4.1 \
+		rustix-1.1.5 \
+		rustls-0.23.45 \
+		rustls-native-certs-0.8.5 \
+		rustls-pki-types-1.15.1 \
+		rustls-platform-verifier-0.7.1 \
+		rustls-platform-verifier-android-0.2.0 \
+		rustls-webpki-0.103.15 \
+		rustpython-ast-0.4.0 \
+		rustpython-parser-0.4.0 \
+		rustpython-parser-core-0.4.0 \
+		rustpython-parser-vendored-0.4.0 \
+		rustversion-1.0.23 \
+		ryu-1.0.23 \
+		same-file-1.0.6 \
+		schannel-0.1.29 \
+		schemars-0.9.0 \
+		schemars-1.2.3 \
+		scopeguard-1.2.0 \
+		security-framework-3.7.0 \
+		security-framework-sys-2.17.0 \
+		semver-1.0.28 \
+		serde-1.0.229 \
+		serde_core-1.0.229 \
+		serde_derive-1.0.229 \
+		serde_json-1.0.154 \
+		serde_path_to_error-0.1.20 \
+		serde_regex-1.2.0 \
+		serde_repr-0.1.21 \
+		serde_spanned-0.6.9 \
+		serde_spanned-1.1.2 \
+		serde_urlencoded-0.7.1 \
+		serde_with-3.24.0 \
+		serde_with_macros-3.24.0 \
+		serde_yaml-0.9.34+deprecated \
+		sha1-0.10.7 \
+		sha2-0.10.9 \
+		sharded-slab-0.1.7 \
+		shellexpand-3.1.2 \
+		shlex-2.0.1 \
+		signal-hook-registry-1.4.8 \
+		signature-2.2.0 \
+		simd-adler32-0.3.10 \
+		simd_cesu8-1.2.0 \
+		simdutf8-0.1.5 \
+		similar-2.7.0 \
+		simple_asn1-0.6.4 \
+		siphasher-1.0.4 \
+		slab-0.4.12 \
+		smallvec-1.16.3 \
+		socket2-0.6.5 \
+		spin-0.9.9 \
+		spki-0.7.3 \
+		stable_deref_trait-1.2.1 \
+		static_assertions-1.1.0 \
+		stringmetrics-2.2.2 \
+		strsim-0.11.1 \
+		subtle-2.6.1 \
+		syn-1.0.109 \
+		syn-2.0.119 \
+		syn-3.0.9 \
+		sync_wrapper-1.0.2 \
+		synstructure-0.14.0 \
+		system-configuration-0.7.0 \
+		system-configuration-sys-0.6.0 \
+		tabwriter-1.4.1 \
+		target-lexicon-0.13.5 \
+		tempfile-3.27.0 \
+		thiserror-1.0.69 \
+		thiserror-2.0.21 \
+		thiserror-impl-1.0.69 \
+		thiserror-impl-2.0.21 \
+		thread_local-1.1.10 \
+		time-0.3.55 \
+		time-core-0.1.9 \
+		time-macros-0.2.32 \
+		tiny-keccak-2.0.2 \
+		tinystr-0.8.4 \
+		tinyvec-1.13.3 \
+		tokio-1.53.3 \
+		tokio-macros-2.7.2 \
+		tokio-native-tls-0.3.1 \
+		tokio-rustls-0.26.6 \
+		tokio-stream-0.1.19 \
+		tokio-util-0.7.20 \
+		toml-0.8.23 \
+		toml-0.9.12+spec-1.1.0 \
+		toml-1.1.8+spec-1.1.0 \
+		toml_datetime-0.6.11 \
+		toml_datetime-0.7.5+spec-1.1.0 \
+		toml_datetime-1.1.2+spec-1.1.0 \
+		toml_edit-0.22.27 \
+		toml_edit-0.23.10+spec-1.0.0 \
+		toml_edit-0.25.17+spec-1.1.0 \
+		toml_parser-1.1.5+spec-1.1.0 \
+		toml_write-0.1.2 \
+		toml_writer-1.1.3+spec-1.1.0 \
+		tonic-0.14.6 \
+		tonic-build-0.14.6 \
+		tonic-health-0.14.6 \
+		tonic-prost-0.14.6 \
+		tonic-prost-build-0.14.6 \
+		tonic-web-0.14.6 \
+		tower-0.5.3 \
+		tower-http-0.5.2 \
+		tower-http-0.6.11 \
+		tower-layer-0.3.3 \
+		tower-service-0.3.3 \
+		tracing-0.1.44 \
+		tracing-attributes-0.1.31 \
+		tracing-core-0.1.36 \
+		tracing-log-0.2.0 \
+		tracing-opentelemetry-0.33.0 \
+		tracing-subscriber-0.3.23 \
+		try-lock-0.2.5 \
+		typenum-1.20.1 \
+		unarray-0.1.4 \
+		uncased-0.9.10 \
+		unic-char-property-0.9.0 \
+		unic-char-range-0.9.0 \
+		unic-common-0.9.0 \
+		unic-emoji-char-0.9.0 \
+		unic-ucd-ident-0.9.0 \
+		unic-ucd-version-0.9.0 \
+		unicase-2.10.0 \
+		unicode-ident-1.0.27 \
+		unicode-width-0.1.14 \
+		unicode-width-0.2.2 \
+		unicode_names2-1.3.0 \
+		unicode_names2_generator-1.3.0 \
+		unsafe-libyaml-0.2.11 \
+		untrusted-0.7.1 \
+		untrusted-0.9.0 \
+		url-2.5.8 \
+		urlpattern-0.6.0 \
+		utf8_iter-1.0.4 \
+		utf8parse-0.2.2 \
+		uuid-1.28.0 \
+		valuable-0.1.1 \
+		value-bag-1.14.1 \
+		vcpkg-0.2.15 \
+		version_check-0.9.5 \
+		walkdir-2.5.0 \
+		want-0.3.2 \
+		wasi-0.11.1+wasi-snapshot-preview1 \
+		wasip2-1.0.4+wasi-0.2.12 \
+		wasm-bindgen-0.2.129 \
+		wasm-bindgen-futures-0.4.79 \
+		wasm-bindgen-macro-0.2.129 \
+		wasm-bindgen-macro-support-0.2.129 \
+		wasm-bindgen-shared-0.2.129 \
+		wasm-streams-0.4.2 \
+		web-sys-0.3.106 \
+		web-time-1.1.0 \
+		webbrowser-1.2.4 \
+		webpki-root-certs-1.0.9 \
+		webpki-roots-1.0.9 \
+		winapi-util-0.1.11 \
+		windows-core-0.62.2 \
+		windows-implement-0.60.2 \
+		windows-interface-0.59.3 \
+		windows-link-0.2.1 \
+		windows-registry-0.6.1 \
+		windows-result-0.4.1 \
+		windows-strings-0.5.1 \
+		windows-sys-0.52.0 \
+		windows-sys-0.61.2 \
+		windows-targets-0.52.6 \
+		windows_aarch64_gnullvm-0.52.6 \
+		windows_aarch64_msvc-0.52.6 \
+		windows_i686_gnu-0.52.6 \
+		windows_i686_gnullvm-0.52.6 \
+		windows_i686_msvc-0.52.6 \
+		windows_x86_64_gnu-0.52.6 \
+		windows_x86_64_gnullvm-0.52.6 \
+		windows_x86_64_msvc-0.52.6 \
+		winnow-0.7.15 \
+		winnow-1.0.4 \
+		wit-bindgen-0.57.1 \
+		writeable-0.6.4 \
+		yansi-1.0.1 \
+		yoke-0.8.3 \
+		yoke-derive-0.8.4 \
+		zerocopy-0.8.63 \
+		zerocopy-derive-0.8.63 \
+		zerofrom-0.1.8 \
+		zerofrom-derive-0.1.8 \
+		zeroize-1.9.1 \
+		zeroize_derive-1.5.0 \
+		zerotrie-0.2.5 \
+		zerovec-0.11.8 \
+		zerovec-derive-0.11.6 \
+		zlib-rs-0.6.8 \
+		zmij-1.0.23
+
+CARGO_BUILD=	no
+CARGO_INSTALL=	no
+CARGO_TEST=	no
+
+MAKE_ENV=	${CARGO_ENV}
+TEST_ENV=	${MAKE_ENV} PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
+TEST_WRKSRC=	${WRKSRC}/qcs-api-client-common
+TEST_ARGS=	--disable-plugin-autoload -p pytest_asyncio.plugin -p pytest_mock -p syrupy tests_py \
+		-k 'not test_refresh_interceptor and not test_sync_method_from_async_context'
+
+# tests as of 0.27.0: 20 passed, 2 deselected in 0.13s (2 tests needing a user QCS config are excluded)
+
+.include <bsd.port.mk>
diff --git a/devel/py-qcs-api-client-common/distinfo b/devel/py-qcs-api-client-common/distinfo
new file mode 100644
index 000000000000..fc1bf146b502
--- /dev/null
+++ b/devel/py-qcs-api-client-common/distinfo
@@ -0,0 +1,1059 @@
+TIMESTAMP = 1792342215
+SHA256 (qcs_api_client_common-0.27.0.tar.gz) = 30564de8e77156ddb40056f2c0e14de39e1be6e58f181124412dee18766b163c
+SIZE (qcs_api_client_common-0.27.0.tar.gz) = 132837
+SHA256 (rust/crates/adler2-2.0.1.crate) = 320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa
+SIZE (rust/crates/adler2-2.0.1.crate) = 13366
+SHA256 (rust/crates/aho-corasick-1.1.5.crate) = c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba
+SIZE (rust/crates/aho-corasick-1.1.5.crate) = 184315
+SHA256 (rust/crates/android_system_properties-0.1.6.crate) = ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc
+SIZE (rust/crates/android_system_properties-0.1.6.crate) = 5625
+SHA256 (rust/crates/anstream-1.0.0.crate) = 824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d
+SIZE (rust/crates/anstream-1.0.0.crate) = 28916
+SHA256 (rust/crates/anstyle-1.0.14.crate) = 940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000
+SIZE (rust/crates/anstyle-1.0.14.crate) = 17787
+SHA256 (rust/crates/anstyle-parse-1.0.0.crate) = 52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e
+SIZE (rust/crates/anstyle-parse-1.0.0.crate) = 22042
+SHA256 (rust/crates/anstyle-query-1.1.5.crate) = 40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc
+SIZE (rust/crates/anstyle-query-1.1.5.crate) = 10264
+SHA256 (rust/crates/anstyle-wincon-3.0.11.crate) = 291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d
+SIZE (rust/crates/anstyle-wincon-3.0.11.crate) = 12638
+SHA256 (rust/crates/anyhow-1.0.104.crate) = 330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470
+SIZE (rust/crates/anyhow-1.0.104.crate) = 48819
+SHA256 (rust/crates/assert-json-diff-2.0.2.crate) = 47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12
+SIZE (rust/crates/assert-json-diff-2.0.2.crate) = 10874
+SHA256 (rust/crates/async-attributes-1.1.2.crate) = a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5
+SIZE (rust/crates/async-attributes-1.1.2.crate) = 11431
+SHA256 (rust/crates/async-channel-1.9.0.crate) = 81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35
+SIZE (rust/crates/async-channel-1.9.0.crate) = 13664
+SHA256 (rust/crates/async-channel-2.5.0.crate) = 924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2
+SIZE (rust/crates/async-channel-2.5.0.crate) = 18624
+SHA256 (rust/crates/async-executor-1.14.0.crate) = c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a
+SIZE (rust/crates/async-executor-1.14.0.crate) = 28804
+SHA256 (rust/crates/async-global-executor-2.4.1.crate) = 05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c
+SIZE (rust/crates/async-global-executor-2.4.1.crate) = 11844
+SHA256 (rust/crates/async-io-2.6.0.crate) = 456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc
+SIZE (rust/crates/async-io-2.6.0.crate) = 51062
+SHA256 (rust/crates/async-lock-3.4.2.crate) = 290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311
+SIZE (rust/crates/async-lock-3.4.2.crate) = 39826
+SHA256 (rust/crates/async-object-pool-0.2.0.crate) = e1ac0219111eb7bb7cb76d4cf2cb50c598e7ae549091d3616f9e95442c18486f
+SIZE (rust/crates/async-object-pool-0.2.0.crate) = 5572
+SHA256 (rust/crates/async-socks5-0.6.0.crate) = 8da2537846e16b96d2972ee52a3b355663872a1a687ce6d57a3b6f6b6a181c89
+SIZE (rust/crates/async-socks5-0.6.0.crate) = 11264
+SHA256 (rust/crates/async-std-1.13.2.crate) = 2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b
+SIZE (rust/crates/async-std-1.13.2.crate) = 220177
+SHA256 (rust/crates/async-task-4.7.1.crate) = 8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de
+SIZE (rust/crates/async-task-4.7.1.crate) = 38077
+SHA256 (rust/crates/async-tempfile-0.8.0.crate) = 64782aa61953a4fa6f6ddc6b510942adffa37315f1cbf8ca7a96fdc990f913d5
+SIZE (rust/crates/async-tempfile-0.8.0.crate) = 30070
+SHA256 (rust/crates/async-trait-0.1.92.crate) = 82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667
+SIZE (rust/crates/async-trait-0.1.92.crate) = 32039
+SHA256 (rust/crates/atomic-0.6.1.crate) = a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340
+SIZE (rust/crates/atomic-0.6.1.crate) = 15243
+SHA256 (rust/crates/atomic-waker-1.1.2.crate) = 1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0
+SIZE (rust/crates/atomic-waker-1.1.2.crate) = 12422
+SHA256 (rust/crates/autocfg-1.5.1.crate) = f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53
+SIZE (rust/crates/autocfg-1.5.1.crate) = 18911
+SHA256 (rust/crates/aws-lc-rs-1.18.2.crate) = faac5829c2b74c28f830747e7818ccfb684261b5f48a1118b1e2a13d36dfab13
+SIZE (rust/crates/aws-lc-rs-1.18.2.crate) = 249786
+SHA256 (rust/crates/aws-lc-sys-0.46.0.crate) = f1622d8446a2d4b2ce0c7eefc73dd43a99779028d5ee5c2dd8073a658ba8a2bc
+SIZE (rust/crates/aws-lc-sys-0.46.0.crate) = 9656818
+SHA256 (rust/crates/axum-0.8.9.crate) = 31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90
+SIZE (rust/crates/axum-0.8.9.crate) = 180525
+SHA256 (rust/crates/axum-core-0.5.6.crate) = 08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1
+SIZE (rust/crates/axum-core-0.5.6.crate) = 26769
+SHA256 (rust/crates/backon-1.6.0.crate) = cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef
+SIZE (rust/crates/backon-1.6.0.crate) = 42012
+SHA256 (rust/crates/base64-0.22.1.crate) = 72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6
+SIZE (rust/crates/base64-0.22.1.crate) = 81597
+SHA256 (rust/crates/base64-0.23.1.crate) = ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5
+SIZE (rust/crates/base64-0.23.1.crate) = 93605
+SHA256 (rust/crates/base64ct-1.8.3.crate) = 2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06
+SIZE (rust/crates/base64ct-1.8.3.crate) = 32227
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.13.2.crate) = 3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06
+SIZE (rust/crates/bitflags-2.13.2.crate) = 51678
+SHA256 (rust/crates/block-buffer-0.10.4.crate) = 3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71
+SIZE (rust/crates/block-buffer-0.10.4.crate) = 10538
+SHA256 (rust/crates/blocking-1.7.0.crate) = a70e4329df6cb94385eed412ec92375c3cdd8a6e502493d1229b6414e4036dfa
+SIZE (rust/crates/blocking-1.7.0.crate) = 18136
+SHA256 (rust/crates/bs58-0.5.1.crate) = bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4
+SIZE (rust/crates/bs58-0.5.1.crate) = 28483
+SHA256 (rust/crates/bumpalo-3.20.3.crate) = 72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649
+SIZE (rust/crates/bumpalo-3.20.3.crate) = 98671
+SHA256 (rust/crates/bytemuck-1.25.2.crate) = 95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797
+SIZE (rust/crates/bytemuck-1.25.2.crate) = 54075
+SHA256 (rust/crates/bytes-1.12.1.crate) = fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04
+SIZE (rust/crates/bytes-1.12.1.crate) = 75667
+SHA256 (rust/crates/cc-1.8.0.crate) = 6651c9ed80effdc7db0ff72512157f901af5e3549e341e24b1dd4887d836d838
+SIZE (rust/crates/cc-1.8.0.crate) = 128578
+SHA256 (rust/crates/cfg-if-1.0.5.crate) = 4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600
+SIZE (rust/crates/cfg-if-1.0.5.crate) = 9578
+SHA256 (rust/crates/cfg_aliases-0.2.2.crate) = f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527
+SIZE (rust/crates/cfg_aliases-0.2.2.crate) = 6527
+SHA256 (rust/crates/chacha20-0.10.2.crate) = 65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06
+SIZE (rust/crates/chacha20-0.10.2.crate) = 38197
+SHA256 (rust/crates/chrono-0.4.45.crate) = 1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327
+SIZE (rust/crates/chrono-0.4.45.crate) = 240866
+SHA256 (rust/crates/clap-4.6.7.crate) = aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946
+SIZE (rust/crates/clap-4.6.7.crate) = 65831
+SHA256 (rust/crates/clap-stdin-0.8.1.crate) = 3c597a504c7d12819c50d2e1f78719afb6e01d4e14cbc94eb4c5f6a850494d1c
+SIZE (rust/crates/clap-stdin-0.8.1.crate) = 18507
+SHA256 (rust/crates/clap_builder-4.6.7.crate) = ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d
+SIZE (rust/crates/clap_builder-4.6.7.crate) = 171709
+SHA256 (rust/crates/clap_derive-4.6.7.crate) = f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0
+SIZE (rust/crates/clap_derive-4.6.7.crate) = 33942
+SHA256 (rust/crates/clap_lex-1.1.1.crate) = 1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486
+SIZE (rust/crates/clap_lex-1.1.1.crate) = 13572
+SHA256 (rust/crates/cmake-0.1.58.crate) = c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678
+SIZE (rust/crates/cmake-0.1.58.crate) = 20474
+SHA256 (rust/crates/colorchoice-1.0.5.crate) = 1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570
+SIZE (rust/crates/colorchoice-1.0.5.crate) = 8187
+SHA256 (rust/crates/colored-3.1.1.crate) = faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34
+SIZE (rust/crates/colored-3.1.1.crate) = 36216
+SHA256 (rust/crates/combine-4.6.8.crate) = cfc320937d09e6de266b31b9afb480f197d7a861be86be7cb2ea7e5d1bfffc5e
+SIZE (rust/crates/combine-4.6.8.crate) = 109123
+SHA256 (rust/crates/concurrent-queue-2.5.0.crate) = 4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973
+SIZE (rust/crates/concurrent-queue-2.5.0.crate) = 22654
+SHA256 (rust/crates/const-hex-1.19.3.crate) = 0e59eef12462b0f9b0a3620219be5d639afd79fe39dff0a42c3997061f9298b4
+SIZE (rust/crates/const-hex-1.19.3.crate) = 38223
+SHA256 (rust/crates/const-oid-0.9.6.crate) = c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8
+SIZE (rust/crates/const-oid-0.9.6.crate) = 45382
+SHA256 (rust/crates/cookie-0.18.2.crate) = 1a373e3602691c3cdea496d2f0ee5935151e6168fe87739483c463db1b2f2f87
+SIZE (rust/crates/cookie-0.18.2.crate) = 47534
+SHA256 (rust/crates/cookie_store-0.22.1.crate) = 15b2c103cf610ec6cae3da84a766285b42fd16aad564758459e6ecf128c75206
+SIZE (rust/crates/cookie_store-0.22.1.crate) = 40513
+SHA256 (rust/crates/core-foundation-0.9.4.crate) = 91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f
+SIZE (rust/crates/core-foundation-0.9.4.crate) = 27743
+SHA256 (rust/crates/core-foundation-0.10.1.crate) = b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6
+SIZE (rust/crates/core-foundation-0.10.1.crate) = 28886
+SHA256 (rust/crates/core-foundation-sys-0.8.7.crate) = 773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b
+SIZE (rust/crates/core-foundation-sys-0.8.7.crate) = 37712
+SHA256 (rust/crates/core_detect-1.0.0.crate) = 7f8f80099a98041a3d1622845c271458a2d73e688351bf3cb999266764b81d48
+SIZE (rust/crates/core_detect-1.0.0.crate) = 17758
+SHA256 (rust/crates/cpufeatures-0.2.17.crate) = 59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280
+SIZE (rust/crates/cpufeatures-0.2.17.crate) = 13466
+SHA256 (rust/crates/cpufeatures-0.3.1.crate) = 5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566
+SIZE (rust/crates/cpufeatures-0.3.1.crate) = 14272
+SHA256 (rust/crates/crc32fast-1.5.2.crate) = 01a7799fd6b852db0e61728dde9a204c423b44d689dbd432522543614b490e78
+SIZE (rust/crates/crc32fast-1.5.2.crate) = 48100
+SHA256 (rust/crates/crossbeam-utils-0.8.23.crate) = a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6
+SIZE (rust/crates/crossbeam-utils-0.8.23.crate) = 47174
+SHA256 (rust/crates/crunchy-0.2.4.crate) = 460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5
+SIZE (rust/crates/crunchy-0.2.4.crate) = 3887
+SHA256 (rust/crates/crypto-common-0.1.7.crate) = 78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a
+SIZE (rust/crates/crypto-common-0.1.7.crate) = 9619
+SHA256 (rust/crates/darling-0.20.11.crate) = fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee
+SIZE (rust/crates/darling-0.20.11.crate) = 37614
+SHA256 (rust/crates/darling-0.24.1.crate) = ed17f5901b6630b993ca003def43f2f8ef4014fc13b047b57aad617ff32bc2ec
+SIZE (rust/crates/darling-0.24.1.crate) = 51607
+SHA256 (rust/crates/darling_core-0.20.11.crate) = 0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e
+SIZE (rust/crates/darling_core-0.20.11.crate) = 68006
+SHA256 (rust/crates/darling_core-0.24.1.crate) = 6837e2cf7485aaae18f86181d2f0e9a7ed297a025e220aeabf63fdebd3a2ddff
+SIZE (rust/crates/darling_core-0.24.1.crate) = 83947
+SHA256 (rust/crates/darling_macro-0.20.11.crate) = fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead
+SIZE (rust/crates/darling_macro-0.20.11.crate) = 2532
+SHA256 (rust/crates/darling_macro-0.24.1.crate) = 2ac7135c3ef02b2f7833bbeb1be5ba7f966dcde8a87c6b87f65a778d71a02785
+SIZE (rust/crates/darling_macro-0.24.1.crate) = 2481
+SHA256 (rust/crates/defmt-1.1.1.crate) = e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1
+SIZE (rust/crates/defmt-1.1.1.crate) = 34207
+SHA256 (rust/crates/defmt-macros-1.1.1.crate) = bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8
+SIZE (rust/crates/defmt-macros-1.1.1.crate) = 27937
+SHA256 (rust/crates/defmt-parser-1.0.0.crate) = 10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e
+SIZE (rust/crates/defmt-parser-1.0.0.crate) = 10881
+SHA256 (rust/crates/der-0.7.10.crate) = e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb
+SIZE (rust/crates/der-0.7.10.crate) = 90111
+SHA256 (rust/crates/deranged-0.5.9.crate) = 9e9de72ce2ad1f90dc62fa25f0f430ef85eb4b0d8fa0be4f30373bc40a21d28e
+SIZE (rust/crates/deranged-0.5.9.crate) = 27842
+SHA256 (rust/crates/derive_builder-0.20.2.crate) = 507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947
+SIZE (rust/crates/derive_builder-0.20.2.crate) = 36661
+SHA256 (rust/crates/derive_builder_core-0.20.2.crate) = 2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8
+SIZE (rust/crates/derive_builder_core-0.20.2.crate) = 31397
+SHA256 (rust/crates/derive_builder_macro-0.20.2.crate) = ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c
+SIZE (rust/crates/derive_builder_macro-0.20.2.crate) = 6360
+SHA256 (rust/crates/digest-0.10.7.crate) = 9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292
+SIZE (rust/crates/digest-0.10.7.crate) = 19557
+SHA256 (rust/crates/dispatch2-0.3.1.crate) = 1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38
+SIZE (rust/crates/dispatch2-0.3.1.crate) = 55299
+SHA256 (rust/crates/displaydoc-0.2.7.crate) = c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8
+SIZE (rust/crates/displaydoc-0.2.7.crate) = 21343
+SHA256 (rust/crates/document-features-0.2.12.crate) = d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61
+SIZE (rust/crates/document-features-0.2.12.crate) = 14739
+SHA256 (rust/crates/dotenvy-0.15.7.crate) = 1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b
+SIZE (rust/crates/dotenvy-0.15.7.crate) = 20293
+SHA256 (rust/crates/dunce-1.0.5.crate) = 92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813
+SIZE (rust/crates/dunce-1.0.5.crate) = 8244
+SHA256 (rust/crates/dyn-clone-1.0.20.crate) = d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555
+SIZE (rust/crates/dyn-clone-1.0.20.crate) = 13134
+SHA256 (rust/crates/either-1.19.0.crate) = 0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be
+SIZE (rust/crates/either-1.19.0.crate) = 22501
+SHA256 (rust/crates/encoding_rs-0.8.42.crate) = 8e985e0451871ad22fb8d2b6b076e2028a502a0d3950998c2c5c0a4f9b5d9679
+SIZE (rust/crates/encoding_rs-0.8.42.crate) = 552153
+SHA256 (rust/crates/envy-0.4.2.crate) = 3f47e0157f2cb54f5ae1bd371b30a2ae4311e1c028f575cd4e81de7353215965
+SIZE (rust/crates/envy-0.4.2.crate) = 10985
+SHA256 (rust/crates/equivalent-1.0.2.crate) = 877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f
+SIZE (rust/crates/equivalent-1.0.2.crate) = 7419
+SHA256 (rust/crates/errno-0.3.14.crate) = 39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb
+SIZE (rust/crates/errno-0.3.14.crate) = 12002
+SHA256 (rust/crates/event-listener-2.5.3.crate) = 0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0
+SIZE (rust/crates/event-listener-2.5.3.crate) = 15392
+SHA256 (rust/crates/event-listener-5.4.2.crate) = 5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2
+SIZE (rust/crates/event-listener-5.4.2.crate) = 35131
+SHA256 (rust/crates/event-listener-strategy-0.5.4.crate) = 8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93
+SIZE (rust/crates/event-listener-strategy-0.5.4.crate) = 16179
+SHA256 (rust/crates/fastrand-2.5.0.crate) = da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223
+SIZE (rust/crates/fastrand-2.5.0.crate) = 20782
+SHA256 (rust/crates/figment-0.10.19.crate) = 8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3
+SIZE (rust/crates/figment-0.10.19.crate) = 70111
+SHA256 (rust/crates/find-msvc-tools-0.1.14.crate) = aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484
+SIZE (rust/crates/find-msvc-tools-0.1.14.crate) = 31390
+SHA256 (rust/crates/fixedbitset-0.5.7.crate) = 1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99
+SIZE (rust/crates/fixedbitset-0.5.7.crate) = 26537
+SHA256 (rust/crates/flate2-1.1.10.crate) = 6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb
+SIZE (rust/crates/flate2-1.1.10.crate) = 80244
+SHA256 (rust/crates/fnv-1.0.7.crate) = 3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1
+SIZE (rust/crates/fnv-1.0.7.crate) = 11266
+SHA256 (rust/crates/foldhash-0.1.5.crate) = d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2
+SIZE (rust/crates/foldhash-0.1.5.crate) = 21901
+SHA256 (rust/crates/foreign-types-0.3.2.crate) = f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1
+SIZE (rust/crates/foreign-types-0.3.2.crate) = 7504
+SHA256 (rust/crates/foreign-types-shared-0.1.1.crate) = 00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b
+SIZE (rust/crates/foreign-types-shared-0.1.1.crate) = 5672
+SHA256 (rust/crates/form_urlencoded-1.2.2.crate) = cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf
+SIZE (rust/crates/form_urlencoded-1.2.2.crate) = 9347
+SHA256 (rust/crates/fs_extra-1.3.0.crate) = 42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c
+SIZE (rust/crates/fs_extra-1.3.0.crate) = 31298
+SHA256 (rust/crates/futures-0.3.34.crate) = 9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3
+SIZE (rust/crates/futures-0.3.34.crate) = 61966
+SHA256 (rust/crates/futures-channel-0.3.34.crate) = b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4
+SIZE (rust/crates/futures-channel-0.3.34.crate) = 33165
+SHA256 (rust/crates/futures-core-0.3.34.crate) = 92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e
+SIZE (rust/crates/futures-core-0.3.34.crate) = 14692
+SHA256 (rust/crates/futures-executor-0.3.34.crate) = 031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432
+SIZE (rust/crates/futures-executor-0.3.34.crate) = 18560
+SHA256 (rust/crates/futures-io-0.3.34.crate) = 53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed
+SIZE (rust/crates/futures-io-0.3.34.crate) = 9189
+SHA256 (rust/crates/futures-lite-2.6.1.crate) = f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad
+SIZE (rust/crates/futures-lite-2.6.1.crate) = 46095
+SHA256 (rust/crates/futures-macro-0.3.34.crate) = 9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44
+SIZE (rust/crates/futures-macro-0.3.34.crate) = 11926
+SHA256 (rust/crates/futures-sink-0.3.34.crate) = 1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d
+SIZE (rust/crates/futures-sink-0.3.34.crate) = 8107
+SHA256 (rust/crates/futures-task-0.3.34.crate) = cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd
+SIZE (rust/crates/futures-task-0.3.34.crate) = 11376
+SHA256 (rust/crates/futures-timer-3.0.4.crate) = af43fadb8a98512d547e37b4e92e0ced13e205c061b87b4623eff01d918d6968
+SIZE (rust/crates/futures-timer-3.0.4.crate) = 24860
+SHA256 (rust/crates/futures-util-0.3.34.crate) = 0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc
+SIZE (rust/crates/futures-util-0.3.34.crate) = 169782
+SHA256 (rust/crates/generic-array-0.14.7.crate) = 85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a
+SIZE (rust/crates/generic-array-0.14.7.crate) = 15950
+SHA256 (rust/crates/getopts-0.2.24.crate) = cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df
+SIZE (rust/crates/getopts-0.2.24.crate) = 21467
+SHA256 (rust/crates/getrandom-0.2.17.crate) = ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0
+SIZE (rust/crates/getrandom-0.2.17.crate) = 40780
+SHA256 (rust/crates/getrandom-0.3.4.crate) = 899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd
+SIZE (rust/crates/getrandom-0.3.4.crate) = 50932
+SHA256 (rust/crates/getrandom-0.4.3.crate) = 300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099
+SIZE (rust/crates/getrandom-0.4.3.crate) = 52437
+SHA256 (rust/crates/glob-0.3.4.crate) = e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b
+SIZE (rust/crates/glob-0.3.4.crate) = 23511
+SHA256 (rust/crates/gloo-timers-0.3.0.crate) = bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994
+SIZE (rust/crates/gloo-timers-0.3.0.crate) = 5530
+SHA256 (rust/crates/h2-0.4.20.crate) = 7d29020232d6aa3fb1daca64c1127cf662cf97f254ae16c18c05b8ab635fc118
+SIZE (rust/crates/h2-0.4.20.crate) = 180331
+SHA256 (rust/crates/hashbrown-0.12.3.crate) = 8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888
+SIZE (rust/crates/hashbrown-0.12.3.crate) = 102968
+SHA256 (rust/crates/hashbrown-0.15.5.crate) = 9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1
+SIZE (rust/crates/hashbrown-0.15.5.crate) = 140908
+SHA256 (rust/crates/hashbrown-0.17.1.crate) = ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a
+SIZE (rust/crates/hashbrown-0.17.1.crate) = 155512
+SHA256 (rust/crates/headers-0.4.2.crate) = fc2700e3fe555c3310aa7286cac6167449f2c87e0eb58769c9208a1c58a1d106
+SIZE (rust/crates/headers-0.4.2.crate) = 71647
+SHA256 (rust/crates/headers-core-0.3.0.crate) = 54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4
+SIZE (rust/crates/headers-core-0.3.0.crate) = 2333
+SHA256 (rust/crates/heck-0.5.0.crate) = 2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea
+SIZE (rust/crates/heck-0.5.0.crate) = 11517
+SHA256 (rust/crates/hermit-abi-0.5.3.crate) = e17592d60ebacc7d5e169f4663c5f84f9161cc90328abcfe8456f41e4dfcb284
+SIZE (rust/crates/hermit-abi-0.5.3.crate) = 17458
+SHA256 (rust/crates/hex-0.4.3.crate) = 7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70
+SIZE (rust/crates/hex-0.4.3.crate) = 13299
+SHA256 (rust/crates/home-0.5.12.crate) = cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d
+SIZE (rust/crates/home-0.5.12.crate) = 9445
+SHA256 (rust/crates/http-1.5.0.crate) = 918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0
+SIZE (rust/crates/http-1.5.0.crate) = 111161
+SHA256 (rust/crates/http-body-1.1.0.crate) = ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c
+SIZE (rust/crates/http-body-1.1.0.crate) = 7887
+SHA256 (rust/crates/http-body-util-0.1.5.crate) = 23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c
+SIZE (rust/crates/http-body-util-0.1.5.crate) = 18574
+SHA256 (rust/crates/httparse-1.10.1.crate) = 6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87
+SIZE (rust/crates/httparse-1.10.1.crate) = 45190
+SHA256 (rust/crates/httpdate-1.0.3.crate) = df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9
+SIZE (rust/crates/httpdate-1.0.3.crate) = 10639
+SHA256 (rust/crates/httpmock-0.8.3.crate) = bf4888a4d02d8e1f92ffb6b4965cf5ff56dda36ef41975f41c6fa0f6bde78c4e
+SIZE (rust/crates/httpmock-0.8.3.crate) = 1712593
+SHA256 (rust/crates/hyper-1.12.0.crate) = 2c3e324da4c95177d6291d4c8730197c0d1822f8a9766814a4a44fa5ab797c9c
+SIZE (rust/crates/hyper-1.12.0.crate) = 172269
+SHA256 (rust/crates/hyper-rustls-0.27.10.crate) = dfa8e654703247911e29c23fbeaa261834bd9bb74efba2f9acddc37bfb127f53
+SIZE (rust/crates/hyper-rustls-0.27.10.crate) = 23240
+SHA256 (rust/crates/hyper-socks2-0.9.1.crate) = 51c227614c208f7e7c2e040526912604a1a957fe467c9c2f5b06c5d032337dab
+SIZE (rust/crates/hyper-socks2-0.9.1.crate) = 8494
+SHA256 (rust/crates/hyper-timeout-0.5.2.crate) = 2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0
+SIZE (rust/crates/hyper-timeout-0.5.2.crate) = 19222
+SHA256 (rust/crates/hyper-tls-0.6.0.crate) = 70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0
+SIZE (rust/crates/hyper-tls-0.6.0.crate) = 15052
+SHA256 (rust/crates/hyper-util-0.1.21.crate) = ddc03d96684f9226b8a787cdb71488417b53ab5ea8fdb1dac946cb9431cc8bff
+SIZE (rust/crates/hyper-util-0.1.21.crate) = 126820
+SHA256 (rust/crates/iana-time-zone-0.1.65.crate) = e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470
+SIZE (rust/crates/iana-time-zone-0.1.65.crate) = 34079
+SHA256 (rust/crates/iana-time-zone-haiku-0.1.2.crate) = f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f
+SIZE (rust/crates/iana-time-zone-haiku-0.1.2.crate) = 7185
+SHA256 (rust/crates/icu_collections-2.3.0.crate) = fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513
+SIZE (rust/crates/icu_collections-2.3.0.crate) = 87970
+SHA256 (rust/crates/icu_locale_core-2.3.0.crate) = d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb
+SIZE (rust/crates/icu_locale_core-2.3.0.crate) = 80250
+SHA256 (rust/crates/icu_normalizer-2.3.0.crate) = 12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f
+SIZE (rust/crates/icu_normalizer-2.3.0.crate) = 530595
+SHA256 (rust/crates/icu_normalizer_data-2.3.0.crate) = 1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0
+SIZE (rust/crates/icu_normalizer_data-2.3.0.crate) = 67215
+SHA256 (rust/crates/icu_properties-2.3.0.crate) = 7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148
+SIZE (rust/crates/icu_properties-2.3.0.crate) = 102637
+SHA256 (rust/crates/icu_properties_data-2.3.0.crate) = e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa
+SIZE (rust/crates/icu_properties_data-2.3.0.crate) = 169152
+SHA256 (rust/crates/icu_provider-2.3.1.crate) = d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73
+SIZE (rust/crates/icu_provider-2.3.1.crate) = 52447
+SHA256 (rust/crates/ident_case-1.0.1.crate) = b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39
+SIZE (rust/crates/ident_case-1.0.1.crate) = 3492
+SHA256 (rust/crates/idna-1.1.0.crate) = 3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de
+SIZE (rust/crates/idna-1.1.0.crate) = 148747
+SHA256 (rust/crates/idna_adapter-1.2.2.crate) = cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714
+SIZE (rust/crates/idna_adapter-1.2.2.crate) = 10444
+SHA256 (rust/crates/indexmap-1.9.3.crate) = bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99
+SIZE (rust/crates/indexmap-1.9.3.crate) = 54653
+SHA256 (rust/crates/indexmap-2.14.2.crate) = cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855
+SIZE (rust/crates/indexmap-2.14.2.crate) = 103014
+SHA256 (rust/crates/inlinable_string-0.1.15.crate) = c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb
+SIZE (rust/crates/inlinable_string-0.1.15.crate) = 19290
+SHA256 (rust/crates/inventory-0.3.25.crate) = 6928282826c822ad91bf1c9a1cb90a30ba1c26770749929b4656cd6be829cd7c
+SIZE (rust/crates/inventory-0.3.25.crate) = 16272
+SHA256 (rust/crates/ipnet-2.12.2.crate) = 791930b43c0d5973160d90a8f3894509f2b273430f5c5c73b668636d0287c5c0
+SIZE (rust/crates/ipnet-2.12.2.crate) = 30804
+SHA256 (rust/crates/is-macro-0.3.8.crate) = 8267aa6001e25494f3015f9663bbd88a18240c74483afa5f0934a1b3e4c388e9
+SIZE (rust/crates/is-macro-0.3.8.crate) = 9345
+SHA256 (rust/crates/is_terminal_polyfill-1.70.2.crate) = a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695
+SIZE (rust/crates/is_terminal_polyfill-1.70.2.crate) = 7548
+SHA256 (rust/crates/itertools-0.11.0.crate) = b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57
+SIZE (rust/crates/itertools-0.11.0.crate) = 125074
+SHA256 (rust/crates/itertools-0.14.0.crate) = 2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285
+SIZE (rust/crates/itertools-0.14.0.crate) = 152715
+SHA256 (rust/crates/itertools-0.15.0.crate) = 8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc
+SIZE (rust/crates/itertools-0.15.0.crate) = 164131
+SHA256 (rust/crates/itoa-1.0.18.crate) = 8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682
+SIZE (rust/crates/itoa-1.0.18.crate) = 15935
+SHA256 (rust/crates/jiff-0.2.38.crate) = b2b005715dcbeb0089a3c0dab99f2ff1cc3b2525323552703d648585d342a383
+SIZE (rust/crates/jiff-0.2.38.crate) = 678074
+SHA256 (rust/crates/jiff-core-0.1.1.crate) = 5e52fe76043ccecc9005d2305ebaadf7d7fc0cc89ca6baa10a94d6bc68c7128c
+SIZE (rust/crates/jiff-core-0.1.1.crate) = 129192
+SHA256 (rust/crates/jiff-static-0.2.38.crate) = 2cc9817253cf7c7ee4684451bd327e88d6f3658014e54a29198625590650695c
+SIZE (rust/crates/jiff-static-0.2.38.crate) = 8064
+SHA256 (rust/crates/jiff-tzdb-0.1.9.crate) = fa8377070c6bae868759445e5a77f66d84f0b72f3a054bfb00e6d038b8282da7
+SIZE (rust/crates/jiff-tzdb-0.1.9.crate) = 62876
+SHA256 (rust/crates/jiff-tzdb-platform-0.1.3.crate) = 875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8
+SIZE (rust/crates/jiff-tzdb-platform-0.1.3.crate) = 3179
+SHA256 (rust/crates/jni-0.22.4.crate) = 5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498
+SIZE (rust/crates/jni-0.22.4.crate) = 199347
+SHA256 (rust/crates/jni-macros-0.22.4.crate) = a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3
+SIZE (rust/crates/jni-macros-0.22.4.crate) = 63557
+SHA256 (rust/crates/jni-sys-0.4.1.crate) = c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2
+SIZE (rust/crates/jni-sys-0.4.1.crate) = 13249
+SHA256 (rust/crates/jni-sys-macros-0.4.1.crate) = 38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264
+SIZE (rust/crates/jni-sys-macros-0.4.1.crate) = 3301
+SHA256 (rust/crates/jobserver-0.1.35.crate) = 1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3
+SIZE (rust/crates/jobserver-0.1.35.crate) = 28890
+SHA256 (rust/crates/js-sys-0.3.106.crate) = 7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5
+SIZE (rust/crates/js-sys-0.3.106.crate) = 113772
+SHA256 (rust/crates/jsonwebtoken-9.3.1.crate) = 5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde
+SIZE (rust/crates/jsonwebtoken-9.3.1.crate) = 49398
*** 691 LINES SKIPPED ***