Skip to content

Comments

testing on mobile + basic cleanup#21

Open
mmaker wants to merge 12 commits intomainfrom
mu/ios
Open

testing on mobile + basic cleanup#21
mmaker wants to merge 12 commits intomainfrom
mu/ios

Conversation

@mmaker
Copy link
Collaborator

@mmaker mmaker commented Jan 19, 2026

No description provided.

@mmaker mmaker marked this pull request as ready for review January 30, 2026 17:28
@mmaker mmaker requested a review from LDiazN January 30, 2026 17:28
@mmaker
Copy link
Collaborator Author

mmaker commented Jan 30, 2026

@LDiazN @DecFox can you please validate the changes to the python bindings? some linting changes happened there.
@hellais are you ok with an iOS testing app being added to main? we can wemove it anytime and it's well-isolated.

@mmaker mmaker requested a review from DecFox January 30, 2026 17:29
@mmaker mmaker changed the title sketch sketchy iOS app testing on mobile + basic cleanup Jan 30, 2026
@LDiazN
Copy link
Contributor

LDiazN commented Feb 20, 2026

The Python bindings LGTM, I could built them and they pass the tests.
I have a question tho, what's the purpose of this file? https://github.com/ooni/userauth/blob/6f43d8c066b35f510e466aea978aade4dec9aea8/ooniauth-py/build.rs

Could we add a description at the top as documentation?

@mmaker
Copy link
Collaborator Author

mmaker commented Feb 24, 2026

@LDiazN the file build.rs is fixing #16 -- I am unable to compile ooniauth's python crate locally otherwise.
I get this error:

   Compiling ooniauth_py v0.1.0 (/Users/maker/Code/sigma/userauth/ooniauth-py)
error: linking with `cc` failed: exit status: 1
  |
  = note:  "cc" "-Wl,-exported_symbols_list" "-Wl,/var/folders/hx/cw4712x12ts1js00bw6b1f140000gn/T/rustcFRwFGV/list" "/var/folders/hx/cw4712x12ts1js00bw6b1f140000gn/T/rustcFRwFGV/symbols.o" "<178 object files omitted>" "/Users/maker/Code/sigma/userauth/target/debug/deps/{libbase64-80c574e62179e036,libooniauth_core-b95deeb295c8abd9,libtime-2d9459348864cfc2,libtime_core-ca622a24f194416e,libnum_conv-881e57525c567b39,libderanged-488a3d31c2c54e9d,libpowerfmt-542077cc85112e34,libbincode-427f5ded918f6b2a,libserde_bytes-2c67b64a5d1c6f3d,libsha2-327a4690b0e786a2,libcurve25519_dalek-5b91bef15bb9455b,libzeroize-2cf6b9ead69de1da,libcmz-ec0026cfcbdd1071,libhex-e8cbd6b4235d480c,libthiserror-d7cfd263e1978ce1,libsigma_compiler-01a5e58d651e5739,libsigma_proofs-27948dc65bccbd28,libthiserror-ec8b3de22059f57a,libsha3-5ccc745266712490,libkeccak-a57a0dba867bf01f,libdigest-2e5ca52b4e5c6f99,libblock_buffer-4e6cecd72828c340,libcrypto_common-d1cdcf1ab7624ad7,libgeneric_array-81316ac291833561,libtypenum-54e2f152b479d30d,libnum_bigint-97c1c178e8f1851e,libserde_with-7fd791408c31ac0b,librand-784cde4f0eadfa73,librand_chacha-c01e76e758062277,libppv_lite86-7ad0da23bcae7679,libzerocopy-7a7b92a12692c4ca,liblazy_static-f1b193ea9b0b2d95,libgroup-ff5409e568324723,libgeneric_static-2c796ee50fc36cf5,libff-ef8442a15af6578d,libbyteorder-c7941ccbe725fceb,librand_core-58cc36b48346fadd,libgetrandom-37d16f11136f43ea,libcfg_if-0a813c394d238909,libbitvec-b5b93f3810dfc47e,libwyz-5a2e1d89b752a9ea,libtap-91bf7152fb2ea9b7,libradium-8789551b67f66186,libfunty-44f87a768338ea03,libsubtle-68a15f47b1665ec3,libpyo3_stub_gen-9f8c563daf95849c,libordered_float-849a6776f87ea73f,libtoml-73449a0c996eb2fb,libtoml_writer-439759efccfa0031,libtoml_parser-8cef1d034ecdae2a,libwinnow-09ccea29f6523f8a,libserde_spanned-c46d05bcd38f3cd4,libtoml_datetime-91d20c6730279bb4,liblog-06d1bceb2795d552,libnumpy-f24443a2a3f24f37,librustc_hash-4a095f9996af3945,libndarray-0ff86ad78f1b73b2,libmatrixmultiply-8bf119e2989cab15,libnum_complex-a6878d383e9f2b3b,libnum_integer-46281a6b7f133cd7,librawpointer-7260c4889c2795b2,libmaplit-2f035eabe0227abc,libchrono-759b6dc5a9f9a1a1,libiana_time_zone-650672c853ec2bba,libcore_foundation_sys-288a2d755650be3d,libnum_traits-0ada5138a8c99df1,libserde-f62d211fd7f0ed2d,libserde_core-8b7282d95af30617,libanyhow-c8505d7fc7d2c99d,libitertools-dc6e0ac6171ae3dd,libeither-17f045db4c016729,libindexmap-bfc52124d43bef40,libequivalent-4d602d504de81892,libhashbrown-5491bc067f4b3b3b,libinventory-fb17002de4f1ff40,libpyo3-e93d212df0a95ad8,libonce_cell-4a5135b5efdc4b11,libpyo3_ffi-5a186b4fdc84dd0b,liblibc-29716e296897da73,libmemoffset-090a1802ccdc4705,libunindent-808d96bcb4ef390f}.rlib" "<sysroot>/lib/rustlib/aarch64-apple-darwin/lib/{libstd-*,libpanic_unwind-*,libobject-*,libmemchr-*,libaddr2line-*,libgimli-*,libcfg_if-*,librustc_demangle-*,libstd_detect-*,libhashbrown-*,librustc_std_workspace_alloc-*,libminiz_oxide-*,libadler2-*,libunwind-*,liblibc-*,librustc_std_workspace_core-*,liballoc-*,libcore-*,libcompiler_builtins-*}.rlib" "-framework" "CoreFoundation" "-liconv" "-lSystem" "-lc" "-lm" "-arch" "arm64" "-mmacosx-version-min=11.0.0" "-o" "/Users/maker/Code/sigma/userauth/target/debug/deps/libooniauth_py.dylib" "-Wl,-dead_strip" "-dynamiclib" "-nodefaultlibs"
  = note: some arguments are omitted. use `--verbose` to show all linker arguments
  = note: Undefined symbols for architecture arm64:
            "_PyBaseObject_Type", referenced from:
                _$LT$pyo3..types..any..PyAny$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::h87e2f7a84a9303db in libnumpy-f24443a2a3f24f37.rlib[6](numpy-f24443a2a3f24f37.numpy.3426830682343042-cgu.3.rcgu.o)
                _$LT$pyo3..pycell..impl_..PyClassObjectBase$LT$U$GT$$u20$as$u20$pyo3..pycell..impl_..PyClassObjectLayout$LT$T$GT$$GT$::tp_dealloc::h1fb08194ddd81d49 in libnumpy-f24443a2a3f24f37.rlib[7](numpy-f24443a2a3f24f37.numpy.3426830682343042-cgu.4.rcgu.o)
                _$LT$pyo3..impl_..pyclass_init..PyNativeTypeInitializer$LT$T$GT$$u20$as$u20$pyo3..impl_..pyclass_init..PyObjectInit$LT$T$GT$$GT$::into_new_object::inner::h5eead6154aff056e in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyBytes_AsString", referenced from:
                pyo3::types::bytes::_$LT$impl$u20$pyo3..instance..Borrowed$LT$pyo3..types..bytes..PyBytes$GT$$GT$::as_bytes::ha68a24734d927088 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
            "_PyBytes_Size", referenced from:
                pyo3::types::bytes::_$LT$impl$u20$pyo3..instance..Borrowed$LT$pyo3..types..bytes..PyBytes$GT$$GT$::as_bytes::ha68a24734d927088 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
            "_PyDict_Next", referenced from:
                _$LT$pyo3..types..dict..borrowed_iter..BorrowedDictIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$::next::h5cec6c20cb1f2816 in ooniauth_py.bxwpda0h80339smmq9stodgfy.0shkq8d.rcgu.o
            "_PyDict_Size", referenced from:
                pyo3::types::dict::dict_len::hecf63943c3fdc880 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyErr_Fetch", referenced from:
                pyo3::err::err_state::PyErrStateNormalized::take::h96e05dbd3a042655 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
                pyo3::err::err_state::lazy_into_normalized_ffi_tuple::hce3f754c2e6bf79f in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyErr_GivenExceptionMatches", referenced from:
                pyo3::err::PyErr::is_instance::h4052b3da510f8c31 in libpyo3-e93d212df0a95ad8.rlib[17](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.14.rcgu.o)
            "_PyErr_NewExceptionWithDoc", referenced from:
                pyo3::err::PyErr::new_type::he19b9e74f495fdad in libpyo3-e93d212df0a95ad8.rlib[17](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.14.rcgu.o)
            "_PyErr_NormalizeException", referenced from:
                pyo3::err::err_state::PyErrStateNormalized::take::h96e05dbd3a042655 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
                pyo3::err::err_state::lazy_into_normalized_ffi_tuple::hce3f754c2e6bf79f in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyErr_Print", referenced from:
                pyo3::err::panic_after_error::hde2a39aab2d370cc in libpyo3-e93d212df0a95ad8.rlib[17](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.14.rcgu.o)
            "_PyErr_PrintEx", referenced from:
                pyo3::err::PyErr::print_panic_and_unwind::h65ad75de377dac56 in libpyo3-e93d212df0a95ad8.rlib[17](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.14.rcgu.o)
            "_PyErr_Restore", referenced from:
                pyo3::err::err_state::PyErrStateInner::restore::h541dea065a5d484d in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyErr_SetObject", referenced from:
                pyo3::err::err_state::raise_lazy::h812828a4ff086cdb in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyErr_SetString", referenced from:
                pyo3::err::err_state::raise_lazy::h812828a4ff086cdb in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyErr_WriteUnraisable", referenced from:
                pyo3::err::PyErr::write_unraisable::h1eafbff92358a94d in libnumpy-f24443a2a3f24f37.rlib[6](numpy-f24443a2a3f24f37.numpy.3426830682343042-cgu.3.rcgu.o)
                pyo3::err::PyErr::write_unraisable::h52035a9013b887f5 in libpyo3-e93d212df0a95ad8.rlib[17](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.14.rcgu.o)
            "_PyEval_RestoreThread", referenced from:
                _$LT$pyo3..internal..state..SuspendAttach$u20$as$u20$core..ops..drop..Drop$GT$::drop::h37891b7152b99795 in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
            "_PyEval_SaveThread", referenced from:
                pyo3::interpreter_lifecycle::initialize::_$u7b$$u7b$closure$u7d$$u7d$::hdbf83fbb4007beb7 in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
                pyo3::internal::state::SuspendAttach::new::h9df1db035eb53edc in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
            "_PyExc_AttributeError", referenced from:
                _$LT$pyo3..exceptions..PyAttributeError$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::h9b30ad38f75b1292 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
                _$LT$pyo3..exceptions..PyAttributeError$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::h9b30ad38f75b1292 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyExc_BaseException", referenced from:
                _$LT$pyo3..exceptions..PyBaseException$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::hf0f18433fe1e8415 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
                _$LT$pyo3..exceptions..PyBaseException$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::hf0f18433fe1e8415 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyExc_Exception", referenced from:
                _$LT$pyo3..exceptions..PyException$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::h0a241dac8e8026f3 in ooniauth_py.drebbe7h8hqstlz4loscny8ab.0shkq8d.rcgu.o
                _$LT$pyo3..exceptions..PyException$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::h0a241dac8e8026f3 in ooniauth_py.drebbe7h8hqstlz4loscny8ab.0shkq8d.rcgu.o
            "_PyExc_ImportError", referenced from:
                _$LT$pyo3..exceptions..PyImportError$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::h54570bc4289d51f7 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
                _$LT$pyo3..exceptions..PyImportError$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::h54570bc4289d51f7 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyExc_OverflowError", referenced from:
                _$LT$pyo3..exceptions..PyOverflowError$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::h324476158070590a in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
                _$LT$pyo3..exceptions..PyOverflowError$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::h324476158070590a in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyExc_RuntimeError", referenced from:
                _$LT$pyo3..exceptions..PyRuntimeError$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::h4f33223c45041fb8 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
                _$LT$pyo3..exceptions..PyRuntimeError$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::h4f33223c45041fb8 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyExc_TypeError", referenced from:
                _$LT$pyo3..exceptions..PyTypeError$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::h53c6cfe5cc0104c9 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
                _$LT$pyo3..exceptions..PyTypeError$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::h53c6cfe5cc0104c9 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyExc_ValueError", referenced from:
                _$LT$pyo3..exceptions..PyValueError$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::hc995cbdc799b7c92 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
                _$LT$pyo3..exceptions..PyValueError$u20$as$u20$pyo3..type_object..PyTypeInfo$GT$::type_object_raw::_$u7b$$u7b$closure$u7d$$u7d$::hc995cbdc799b7c92 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyException_GetCause", referenced from:
                pyo3::err::PyErr::cause::h847fb69b18c8e49b in libpyo3-e93d212df0a95ad8.rlib[17](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.14.rcgu.o)
            "_PyException_GetTraceback", referenced from:
                pyo3::err::err_state::PyErrStateNormalized::new::hed21fd4578333270 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyException_SetCause", referenced from:
                pyo3::err::PyErr::set_cause::h9f9ec48f44f28b2b in libpyo3-e93d212df0a95ad8.rlib[17](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.14.rcgu.o)
            "_PyException_SetTraceback", referenced from:
                pyo3::err::PyErr::into_value::h0c8a8c7d6f5947df in libpyo3-e93d212df0a95ad8.rlib[17](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.14.rcgu.o)
            "_PyGILState_Ensure", referenced from:
                pyo3_ffi::pystate::PyGILState_Ensure::hf4fb0c5c11ba1d08 in libpyo3_ffi-5a186b4fdc84dd0b.rlib[3](pyo3_ffi-5a186b4fdc84dd0b.pyo3_ffi.ac33ef86c2375dd2-cgu.0.rcgu.o)
            "_PyGILState_Release", referenced from:
                _$LT$pyo3..internal..state..AttachGuard$u20$as$u20$core..ops..drop..Drop$GT$::drop::ha4fa8725c4b628ca in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
            "_PyImport_Import", referenced from:
                pyo3::types::module::PyModule::import::h0b68e4d6e19aa779 in libpyo3-e93d212df0a95ad8.rlib[13](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.10.rcgu.o)
            "_PyInterpreterState_Get", referenced from:
                pyo3::impl_::pymodule::ModuleDef::make_module::h3635314eb2824d94 in libpyo3-e93d212df0a95ad8.rlib[7](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.04.rcgu.o)
            "_PyInterpreterState_GetID", referenced from:
                pyo3::impl_::pymodule::ModuleDef::make_module::h3635314eb2824d94 in libpyo3-e93d212df0a95ad8.rlib[7](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.04.rcgu.o)
            "_PyIter_Next", referenced from:
                pyo3::types::iterator::_$LT$impl$u20$pyo3..instance..Borrowed$LT$pyo3..types..iterator..PyIterator$GT$$GT$::next::h89477aef2ac6a770 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
            "_PyList_Append", referenced from:
                _$LT$pyo3..instance..Bound$LT$pyo3..types..list..PyList$GT$$u20$as$u20$pyo3..types..list..PyListMethods$GT$::append::inner::h072aab2aa7490c07 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyList_New", referenced from:
                pyo3::types::list::PyList::empty::h64f9f461fab65762 in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyLong_AsLong", referenced from:
                pyo3::conversions::std::num::_$LT$impl$u20$pyo3..conversion..FromPyObject$u20$for$u20$u32$GT$::extract_bound::h72e8d633957c60d3 in libpyo3-e93d212df0a95ad8.rlib[7](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.04.rcgu.o)
            "_PyLong_FromLong", referenced from:
                pyo3::conversions::std::num::_$LT$impl$u20$pyo3..conversion..IntoPyObject$u20$for$u20$u32$GT$::into_pyobject::heacc9060eb752edd in libpyo3-e93d212df0a95ad8.rlib[7](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.04.rcgu.o)
            "_PyLong_FromSsize_t", referenced from:
                pyo3::impl_::pyclass::get_sequence_item_from_mapping::h0e3bfa8be907886a in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
                pyo3::impl_::pyclass::assign_sequence_item_from_mapping::h0cc7b444f5d3289e in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
            "_PyModule_Create2", referenced from:
                pyo3_ffi::modsupport::PyModule_Create::h887507a74dca666c in libpyo3-e93d212df0a95ad8.rlib[7](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.04.rcgu.o)
            "_PyObject_CallNoArgs", referenced from:
                _$LT$pyo3..instance..Bound$LT$pyo3..types..any..PyAny$GT$$u20$as$u20$pyo3..types..any..PyAnyMethods$GT$::call0::h3510105e61789870 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
            "_PyObject_DelItem", referenced from:
                pyo3::impl_::pyclass::assign_sequence_item_from_mapping::h0cc7b444f5d3289e in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
            "_PyObject_GC_UnTrack", referenced from:
                pyo3::impl_::pyclass::tp_dealloc_with_gc::h123a231d76128855 in ooniauth_py.ehybrnk8hcymdmicynj7c4v90.0shkq8d.rcgu.o
                pyo3::impl_::pyclass::tp_dealloc_with_gc::h19febb04dfe834cf in ooniauth_py.ehybrnk8hcymdmicynj7c4v90.0shkq8d.rcgu.o
                pyo3::impl_::pyclass::tp_dealloc_with_gc::h8bc3ad1ea9ca6347 in ooniauth_py.ehybrnk8hcymdmicynj7c4v90.0shkq8d.rcgu.o
            "_PyObject_GenericGetDict", referenced from:
                pyo3::pyclass::create_type_object::PyTypeBuilder::finalize_methods_and_properties::hd69695fdb0ecfed1 in libpyo3-e93d212df0a95ad8.rlib[16](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.13.rcgu.o)
            "_PyObject_GenericSetDict", referenced from:
                pyo3::pyclass::create_type_object::PyTypeBuilder::finalize_methods_and_properties::hd69695fdb0ecfed1 in libpyo3-e93d212df0a95ad8.rlib[16](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.13.rcgu.o)
            "_PyObject_GetAttr", referenced from:
                _$LT$pyo3..instance..Bound$LT$pyo3..types..any..PyAny$GT$$u20$as$u20$pyo3..types..any..PyAnyMethods$GT$::getattr::inner::h9d21fe829f22e99b in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
            "_PyObject_GetItem", referenced from:
                pyo3::impl_::pyclass::get_sequence_item_from_mapping::h0e3bfa8be907886a in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
            "_PyObject_GetIter", referenced from:
                pyo3::types::iterator::PyIterator::from_object::h9ac366131484446e in libpyo3-e93d212df0a95ad8.rlib[9](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.06.rcgu.o)
            "_PyObject_Repr", referenced from:
                _$LT$pyo3..instance..Bound$LT$pyo3..types..any..PyAny$GT$$u20$as$u20$pyo3..types..any..PyAnyMethods$GT$::repr::hcef697a65dae4b4f in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
            "_PyObject_SetAttr", referenced from:
                _$LT$pyo3..instance..Bound$LT$pyo3..types..any..PyAny$GT$$u20$as$u20$pyo3..types..any..PyAnyMethods$GT$::setattr::inner::hd08c96b8cddbbe5c in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
            "_PyObject_SetAttrString", referenced from:
                pyo3::impl_::pyclass::lazy_type_object::initialize_tp_dict::h1dd3e399f6e5d0c9 in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
            "_PyObject_SetItem", referenced from:
                pyo3::impl_::pyclass::assign_sequence_item_from_mapping::h0cc7b444f5d3289e in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
            "_PyObject_Str", referenced from:
                _$LT$pyo3..instance..Bound$LT$pyo3..types..any..PyAny$GT$$u20$as$u20$pyo3..types..any..PyAnyMethods$GT$::str::hbe4ef796a6fc9577 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
            "_PySequence_Check", referenced from:
                pyo3::types::sequence::extract_sequence::hb033b8c35e60a4eb in ooniauth_py.bpkj1jx8vkbs7fuc6vbslrv3y.0shkq8d.rcgu.o
            "_PySequence_Size", referenced from:
                _$LT$pyo3..instance..Bound$LT$pyo3..types..sequence..PySequence$GT$$u20$as$u20$pyo3..types..sequence..PySequenceMethods$GT$::len::hb2ba186f65a32e92 in ooniauth_py.bdr3avbz397uhpkfvefweosqc.0shkq8d.rcgu.o
            "_PyTraceBack_Print", referenced from:
                _$LT$pyo3..instance..Bound$LT$pyo3..types..traceback..PyTraceback$GT$$u20$as$u20$pyo3..types..traceback..PyTracebackMethods$GT$::format::hfade91304f8face6 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
            "_PyTuple_GetItem", referenced from:
                pyo3::types::tuple::_$LT$impl$u20$pyo3..instance..Borrowed$LT$pyo3..types..tuple..PyTuple$GT$$GT$::get_borrowed_item::h6b7404996765ea92 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
            "_PyTuple_New", referenced from:
                pyo3::types::tuple::array_into_tuple::h3fbc0c1bedca48a7 in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
            "_PyTuple_SetItem", referenced from:
                pyo3::types::tuple::array_into_tuple::h3fbc0c1bedca48a7 in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
            "_PyTuple_Size", referenced from:
                _$LT$pyo3..instance..Bound$LT$pyo3..types..tuple..PyTuple$GT$$u20$as$u20$pyo3..types..tuple..PyTupleMethods$GT$::len::h8a8616f8c2f8eee1 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
            "_PyType_FromSpec", referenced from:
                pyo3::pyclass::create_type_object::PyTypeBuilder::build::h412365d9ffa79b03 in libpyo3-e93d212df0a95ad8.rlib[16](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.13.rcgu.o)
            "_PyType_GenericAlloc", referenced from:
                _$LT$pyo3..impl_..pyclass_init..PyNativeTypeInitializer$LT$T$GT$$u20$as$u20$pyo3..impl_..pyclass_init..PyObjectInit$LT$T$GT$$GT$::into_new_object::inner::h5eead6154aff056e in libpyo3-e93d212df0a95ad8.rlib[6](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.03.rcgu.o)
            "_PyType_GetFlags", referenced from:
                pyo3_ffi::object::PyType_HasFeature::h7b7dd42de9c3892e in libpyo3-e93d212df0a95ad8.rlib[18](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.15.rcgu.o)
            "_PyType_GetSlot", referenced from:
                _$LT$pyo3..internal..get_slot..Slot$LT$74_i32$GT$$u20$as$u20$pyo3..internal..get_slot..GetSlotImpl$GT$::get_slot::hb6e3c586c4f5302d in libnumpy-f24443a2a3f24f37.rlib[6](numpy-f24443a2a3f24f37.numpy.3426830682343042-cgu.3.rcgu.o)
                _$LT$pyo3..internal..get_slot..Slot$LT$47_i32$GT$$u20$as$u20$pyo3..internal..get_slot..GetSlotImpl$GT$::get_slot::h85954ed6f0d57557 in libpyo3-e93d212df0a95ad8.rlib[13](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.10.rcgu.o)
                _$LT$pyo3..internal..get_slot..Slot$LT$48_i32$GT$$u20$as$u20$pyo3..internal..get_slot..GetSlotImpl$GT$::get_slot::h8b9a1f6b48a18d13 in libpyo3-e93d212df0a95ad8.rlib[13](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.10.rcgu.o)
                _$LT$pyo3..internal..get_slot..Slot$LT$51_i32$GT$$u20$as$u20$pyo3..internal..get_slot..GetSlotImpl$GT$::get_slot::hb0a31b4d4703f5d1 in libpyo3-e93d212df0a95ad8.rlib[13](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.10.rcgu.o)
            "_PyType_IsSubtype", referenced from:
                pyo3_ffi::object::PyObject_TypeCheck::hb20d947b72968c6a in ooniauth_py.0g3bbqiv3jx7o2qduz81wcwqw.0shkq8d.rcgu.o
            "_PyUnicode_AsEncodedString", referenced from:
                pyo3::types::string::_$LT$impl$u20$pyo3..instance..Borrowed$LT$pyo3..types..string..PyString$GT$$GT$::to_string_lossy::h1ce32a94aac2cbdd in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
            "_PyUnicode_AsUTF8AndSize", referenced from:
                pyo3::types::string::_$LT$impl$u20$pyo3..instance..Borrowed$LT$pyo3..types..string..PyString$GT$$GT$::to_str::hb42797f365ff6986 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
            "_PyUnicode_FromStringAndSize", referenced from:
                pyo3::types::string::PyString::new::h93dbbb66a912bd67 in libpyo3-e93d212df0a95ad8.rlib[16](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.13.rcgu.o)
                pyo3::types::string::PyString::intern::h7771b55f32a89ade in libpyo3-e93d212df0a95ad8.rlib[16](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.13.rcgu.o)
            "_PyUnicode_InternInPlace", referenced from:
                pyo3::types::string::PyString::intern::h7771b55f32a89ade in libpyo3-e93d212df0a95ad8.rlib[16](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.13.rcgu.o)
            "_Py_GetVersion", referenced from:
                pyo3::marker::Python::version::h927ebea487b2ec25 in libpyo3-e93d212df0a95ad8.rlib[14](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.11.rcgu.o)
            "_Py_InitializeEx", referenced from:
                pyo3::interpreter_lifecycle::initialize::_$u7b$$u7b$closure$u7d$$u7d$::hdbf83fbb4007beb7 in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
            "_Py_IsInitialized", referenced from:
                pyo3::interpreter_lifecycle::initialize::_$u7b$$u7b$closure$u7d$$u7d$::hdbf83fbb4007beb7 in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
                pyo3::interpreter_lifecycle::ensure_initialized::_$u7b$$u7b$closure$u7d$$u7d$::hd6812a813e0043a1 in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
                pyo3::internal::state::AttachGuard::try_attach::hee14f182cd713c20 in libpyo3-e93d212df0a95ad8.rlib[15](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.12.rcgu.o)
            "__Py_DecRef", referenced from:
                _$LT$pyo3..instance..Bound$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$::drop::h0e9f97edc8cf40c3 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
                _$LT$pyo3..instance..Bound$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$::drop::h0eb6d065d3e2b83b in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
                _$LT$pyo3..instance..Bound$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$::drop::h165bb22722d1cb1a in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
                _$LT$pyo3..instance..Bound$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$::drop::h23e1068126ff071b in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
                _$LT$pyo3..instance..Bound$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$::drop::h7df2868b22095a89 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
                _$LT$pyo3..instance..Bound$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$::drop::h8ac950b138d85795 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
                _$LT$pyo3..instance..Bound$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$::drop::ha25d5f63381f6b72 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
                ...
            "__Py_IncRef", referenced from:
                pyo3::instance::Py$LT$T$GT$::clone_ref::h054ff36cb07bb5b9 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
                pyo3::instance::Py$LT$T$GT$::clone_ref::h0662e4d220130cb0 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
                pyo3::instance::Py$LT$T$GT$::clone_ref::h29d0dc6f9c43a2e9 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
                pyo3::instance::Py$LT$T$GT$::clone_ref::h9870a0e9c005dfd4 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
                pyo3::instance::Py$LT$T$GT$::clone_ref::hbf4f7eca7d58dd55 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
                pyo3::instance::Py$LT$T$GT$::clone_ref::hcdcc228529f89423 in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
                pyo3::instance::Py$LT$T$GT$::clone_ref::hd7a068bd732c186c in libpyo3-e93d212df0a95ad8.rlib[3](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.00.rcgu.o)
                ...
            "__Py_NoneStruct", referenced from:
                pyo3_ffi::object::Py_None::hce350c0dcc22a1d3 in ooniauth_py.0g3bbqiv3jx7o2qduz81wcwqw.0shkq8d.rcgu.o
                pyo3_ffi::object::Py_None::hed282ca691107555 in libpyo3-e93d212df0a95ad8.rlib[18](pyo3-e93d212df0a95ad8.pyo3.d8abfb1ac897f321-cgu.15.rcgu.o)
          ld: symbol(s) not found for architecture arm64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)
          

error: could not compile `ooniauth_py` (lib) due to 1 previous error

@LDiazN
Copy link
Contributor

LDiazN commented Feb 24, 2026

Oh I see, sorry that I couldn't take care of that issue before, I don't have access to a Mac OS device to test this. Thanks for putting together a patch! 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants