Compare commits

..

246 Commits

Author SHA1 Message Date
Ole André Vadla Ravnås 5215b5b2c8 subprojects: Prepare for release 2026-05-31 21:03:59 +02:00
Ole André Vadla Ravnås 54dca1d5da subprojects: Bump outdated 2026-05-31 21:03:09 +02:00
Ole André Vadla Ravnås 8eafeb24d9 submodules: Bump releng 2026-05-31 21:03:09 +02:00
Ole André Vadla Ravnås 1b75d93858 subprojects: Bump outdated 2026-05-31 13:13:33 +02:00
Ole André Vadla Ravnås c2145f3589 Add support for new attach options 2026-05-31 12:32:06 +02:00
Ole André Vadla Ravnås 0a9995df51 subprojects: Prepare for release 2026-05-23 14:22:35 +02:00
Ole André Vadla Ravnås 0f3ffd4032 subprojects: Bump outdated 2026-05-23 14:21:34 +02:00
Ole André Vadla Ravnås 2da64cb7ca subprojects: Bump outdated 2026-05-21 23:19:27 +02:00
Ole André Vadla Ravnås f81c3183a1 subprojects: Prepare for release 2026-05-15 14:23:34 +02:00
Ole André Vadla Ravnås d2861db65b subprojects: Bump outdated 2026-05-15 14:22:01 +02:00
Ole André Vadla Ravnås 06210bec40 subprojects: Prepare for release 2026-05-14 20:21:16 +02:00
Ole André Vadla Ravnås 4934e18a0e subprojects: Bump outdated 2026-05-14 20:20:05 +02:00
Ole André Vadla Ravnås fe987827e9 subprojects: Prepare for release 2026-05-11 13:22:50 +02:00
Ole André Vadla Ravnås 0ef38236e8 subprojects: Bump outdated 2026-05-11 13:22:11 +02:00
Ole André Vadla Ravnås 0fab765f91 subprojects: Prepare for release 2026-05-08 10:40:06 +02:00
Ole André Vadla Ravnås a6c02cb7ee subprojects: Bump outdated 2026-05-08 10:37:49 +02:00
Ole André Vadla Ravnås 6033dd0904 subprojects: Prepare for release 2026-05-04 15:25:33 +02:00
Ole André Vadla Ravnås 77e94e24a1 subprojects: Bump outdated 2026-05-04 15:24:42 +02:00
Ole André Vadla Ravnås c97343dc83 subprojects: Prepare for release 2026-05-02 21:13:32 +02:00
Ole André Vadla Ravnås e1ffe5fd50 subprojects: Bump outdated 2026-05-02 21:12:51 +02:00
Ole André Vadla Ravnås c7314098c6 subprojects: Prepare for release 2026-05-02 15:48:41 +02:00
Ole André Vadla Ravnås 41d769fa4d subprojects: Bump outdated 2026-05-02 15:46:28 +02:00
Ole André Vadla Ravnås 044d23eef7 subprojects: Bump outdated 2026-04-29 00:15:57 +02:00
Ole André Vadla Ravnås 1641af6ca3 submodules: Bump releng 2026-04-29 00:15:57 +02:00
Ole André Vadla Ravnås e513eca572 subprojects: Prepare for release 2026-04-28 16:54:48 +02:00
Ole André Vadla Ravnås 15260bfa4a subprojects: Bump outdated 2026-04-28 16:38:55 +02:00
Ole André Vadla Ravnås dec8aca9ae subprojects: Bump outdated 2026-04-28 12:50:19 +02:00
Ole André Vadla Ravnås 8c69b9d032 submodules: Bump releng 2026-04-28 12:50:19 +02:00
Ole André Vadla Ravnås f57b0c1cfa subprojects: Prepare for release 2026-04-28 12:23:14 +02:00
Ole André Vadla Ravnås fd2c1f2424 subprojects: Bump outdated 2026-04-28 12:22:18 +02:00
Ole André Vadla Ravnås a9caf62a0c Reformat with black 26.3.1 2026-04-26 17:47:34 +02:00
Ole André Vadla Ravnås 8bc4415f34 subprojects: Bump outdated 2026-04-26 17:36:09 +02:00
Ole André Vadla Ravnås e3eca3179c subprojects: Bump outdated 2026-04-26 17:21:24 +02:00
Ole André Vadla Ravnås ef190d9957 submodules: Bump releng 2026-04-26 17:21:24 +02:00
Ole André Vadla Ravnås 1e06ebe9a3 subprojects: Bump outdated 2026-04-26 14:06:52 +02:00
Ole André Vadla Ravnås 925378439c subprojects: Bump outdated 2026-04-26 13:34:40 +02:00
Ole André Vadla Ravnås 7ae323a3cd subprojects: Bump outdated 2026-04-26 13:17:42 +02:00
Ole André Vadla Ravnås 9c5985c254 submodules: Bump releng 2026-04-26 13:17:42 +02:00
Ole André Vadla Ravnås b469134be4 subprojects: Bump outdated 2026-04-26 11:29:31 +02:00
Ole André Vadla Ravnås 9933d916ae subprojects: Bump outdated 2026-04-26 11:12:20 +02:00
Ole André Vadla Ravnås 09cac4e2a5 subprojects: Bump outdated 2026-04-26 10:28:31 +02:00
Ole André Vadla Ravnås 6b49e14ce1 subprojects: Bump outdated 2026-04-26 10:22:40 +02:00
Ole André Vadla Ravnås 7711fa12ac subprojects: Bump outdated 2026-04-26 10:16:43 +02:00
Ole André Vadla Ravnås d468dc038c submodules: Bump releng 2026-04-26 10:16:43 +02:00
Ole André Vadla Ravnås 58ff000596 subprojects: Bump outdated 2026-04-20 17:20:15 +02:00
Ole André Vadla Ravnås 3652e985d8 subprojects: Bump outdated 2026-04-20 17:16:46 +02:00
Ole André Vadla Ravnås 210c56e1b2 subprojects: Bump outdated 2026-04-20 16:31:57 +02:00
Ole André Vadla Ravnås b3d6aa8ffe submodules: Bump releng 2026-04-20 16:31:57 +02:00
Ole André Vadla Ravnås 16eb645844 subprojects: Bump outdated 2026-04-20 14:52:30 +02:00
Ole André Vadla Ravnås b7b1fcf0ff submodules: Bump releng 2026-04-20 14:52:30 +02:00
Ole André Vadla Ravnås 978b756134 subprojects: Bump outdated 2026-04-20 14:41:14 +02:00
Ole André Vadla Ravnås 7b1fc43a42 submodules: Bump releng 2026-04-20 14:41:14 +02:00
Ole André Vadla Ravnås 244cf6926b subprojects: Bump outdated 2026-04-13 14:36:51 +02:00
Ole André Vadla Ravnås 24b941fb8a submodules: Bump releng 2026-04-13 14:36:51 +02:00
Ole André Vadla Ravnås e2b340eda1 subprojects: Bump outdated 2026-04-10 23:55:22 +02:00
Ole André Vadla Ravnås 2b306c6d30 submodules: Bump releng 2026-04-10 23:55:22 +02:00
Ole André Vadla Ravnås 57cee13b43 subprojects: Bump outdated 2026-04-10 13:21:14 +02:00
Ole André Vadla Ravnås 23aa442826 subprojects: Bump outdated 2026-04-09 13:41:43 +02:00
Ole André Vadla Ravnås 65236f3b05 submodules: Bump releng 2026-04-09 13:41:43 +02:00
Ole André Vadla Ravnås e52e7a95bd subprojects: Bump outdated 2026-04-09 12:14:45 +02:00
Ole André Vadla Ravnås 3b57222cfa submodules: Bump releng 2026-04-09 12:14:45 +02:00
Ole André Vadla Ravnås 319ac9e699 subprojects: Bump outdated 2026-04-09 11:50:42 +02:00
Ole André Vadla Ravnås 2e842a4e44 submodules: Bump releng 2026-04-09 11:50:42 +02:00
Ole André Vadla Ravnås f9bf571497 subprojects: Bump outdated 2026-04-08 16:22:39 +02:00
Ole André Vadla Ravnås 8f50f743e1 submodules: Bump releng 2026-04-08 16:22:39 +02:00
Ole André Vadla Ravnås 6da337df6f subprojects: Bump outdated 2026-04-08 01:15:57 +02:00
Ole André Vadla Ravnås e29d41806c submodules: Bump releng 2026-04-08 01:15:57 +02:00
Ole André Vadla Ravnås 8faf01dc2e subprojects: Bump outdated 2026-04-06 15:37:09 +02:00
Ole André Vadla Ravnås 4286667bc6 submodules: Bump releng 2026-04-06 15:37:09 +02:00
Ole André Vadla Ravnås 86d4b4b4bf subprojects: Prepare for release 2026-03-27 11:36:40 +01:00
Ole André Vadla Ravnås b5808d7b27 subprojects: Bump outdated 2026-03-27 11:35:06 +01:00
Ole André Vadla Ravnås 5466050755 subprojects: Prepare for release 2026-03-26 20:43:48 +01:00
Ole André Vadla Ravnås 4db854a02c subprojects: Bump outdated 2026-03-26 20:42:58 +01:00
Ole André Vadla Ravnås cc9a78ef19 device: Add override_option()
Expose Device.override_option() for overriding backend-specific
options on a device.

Overrides apply when establishing a host session. If one already
exists, changes take effect on the next connection.
2026-03-26 20:30:10 +01:00
Ole André Vadla Ravnås 22ed1fac3c examples: Add a spawn gating example 2026-03-26 15:27:31 +01:00
Ole André Vadla Ravnås 9b15bde24e examples: Fix the child gating example 2026-03-25 21:04:14 +01:00
Ole André Vadla Ravnås a613d87b08 subprojects: Prepare for release 2026-03-24 15:40:55 +01:00
Ole André Vadla Ravnås 9ef240eff4 subprojects: Bump outdated 2026-03-24 15:39:30 +01:00
Ole André Vadla Ravnås 43a443f582 subprojects: Prepare for release 2026-03-14 11:52:06 +01:00
Ole André Vadla Ravnås dcc95216fd subprojects: Bump outdated 2026-03-14 11:51:33 +01:00
Ole André Vadla Ravnås 69e7c6c0ce subprojects: Prepare for release 2026-03-13 13:22:09 +01:00
Ole André Vadla Ravnås 3278173be8 subprojects: Bump outdated 2026-03-13 13:21:27 +01:00
Ole André Vadla Ravnås d8fa422062 subprojects: Bump outdated 2026-03-13 13:12:14 +01:00
Ole André Vadla Ravnås 3943d2eed2 subprojects: Bump outdated 2026-03-13 00:01:32 +01:00
Ole André Vadla Ravnås 8030b5aa68 submodules: Bump releng 2026-03-13 00:01:32 +01:00
Ole André Vadla Ravnås fa5f378176 subprojects: Prepare for release 2026-03-08 20:35:48 +01:00
Ole André Vadla Ravnås a814a4aa9b Revert "meson: Switch Python resolution strategy (#270)"
Turns out this breaks our CI. We should probably make this an option
instead.

This reverts commit 60a4a032d6.
2026-03-08 20:07:43 +01:00
Ole André Vadla Ravnås a48ff22b6f subprojects: Bump outdated 2026-03-08 19:44:15 +01:00
Ole André Vadla Ravnås eb4f8d37f3 subprojects: Bump outdated 2026-03-07 23:51:50 +01:00
James 60a4a032d6 meson: Switch Python resolution strategy (#270)
Use the `system` strategy, as .pc metadata is often wrong.
2026-03-07 14:49:23 +01:00
Ole André Vadla Ravnås 9f46dfaa80 subprojects: Bump outdated 2026-02-18 22:54:10 +01:00
Ole André Vadla Ravnås e57ca181f8 submodules: Bump releng 2026-02-18 22:54:10 +01:00
Ole André Vadla Ravnås 0fccd75bc7 subprojects: Prepare for release 2026-02-16 22:45:45 +01:00
Ole André Vadla Ravnås dea4ffb1c9 subprojects: Bump outdated 2026-02-16 22:08:19 +01:00
Ole André Vadla Ravnås da17d3badb subprojects: Prepare for release 2026-02-14 10:52:14 +01:00
Ole André Vadla Ravnås 33922241fc subprojects: Bump outdated 2026-02-14 10:50:37 +01:00
Ole André Vadla Ravnås fb8fdbb231 variant: Support cast to uint64 2026-02-14 10:49:06 +01:00
Ole André Vadla Ravnås 0f50b58a04 subprojects: Prepare for release 2026-02-13 22:48:36 +01:00
Ole André Vadla Ravnås f63ea5903f subprojects: Bump outdated 2026-02-13 22:47:43 +01:00
Ole André Vadla Ravnås a99767e501 subprojects: Prepare for release 2026-02-13 15:12:36 +01:00
Ole André Vadla Ravnås 07bbd3d488 subprojects: Bump outdated 2026-02-13 15:09:57 +01:00
Ole André Vadla Ravnås 81403cf383 subprojects: Bump outdated 2026-02-12 20:46:27 +01:00
Ole André Vadla Ravnås 2ea0b944a2 subprojects: Bump outdated 2026-02-12 13:27:14 +01:00
Ole André Vadla Ravnås 35c412c6cf subprojects: Bump outdated 2026-02-07 21:19:57 +01:00
Ole André Vadla Ravnås ec4524d155 submodules: Bump releng 2026-02-07 21:19:57 +01:00
Ole André Vadla Ravnås d9d53a89cc service: Fix Service.request() GVariant lifetime
The variant unmarshal helpers returned floating GVariants. When these
values were stored in containers, the floating reference was consumed.

Service.request() later unref'd the same GVariant, leading to refcount
underflow and memory corruption, or appearing to work by accident when
the memory was not yet reused.

Ensure all unmarshalled GVariants are non-floating before returning them
so that Service.request() always owns a full reference.
2026-01-29 14:59:10 +01:00
Ole André Vadla Ravnås dfb002de49 variant: Fix signedness in uint64 marshaling 2026-01-29 12:46:38 +01:00
Ole André Vadla Ravnås 0f56e44abd variant: Add support for additional GVariant types
This adds support for:
- Additional integer types: byte, int16, uint16, int32, uint32
- Tuples
- Nested variants in any context
2026-01-29 12:45:54 +01:00
Ole André Vadla Ravnås d28a2a4988 subprojects: Prepare for release 2026-01-23 22:31:27 +01:00
Ole André Vadla Ravnås 1fc39289ef subprojects: Bump outdated 2026-01-23 22:30:37 +01:00
Ole André Vadla Ravnås 2c757a08f3 subprojects: Prepare for release 2026-01-20 23:12:51 +01:00
Ole André Vadla Ravnås fc735c048f subprojects: Bump outdated 2026-01-20 23:09:30 +01:00
Ole André Vadla Ravnås 4d84536160 subprojects: Bump outdated 2026-01-20 20:26:47 +01:00
Ole André Vadla Ravnås 9e51c78c5c submodules: Bump releng 2026-01-20 20:26:47 +01:00
Ole André Vadla Ravnås a6d51e8384 subprojects: Bump outdated 2026-01-20 18:54:35 +01:00
Ole André Vadla Ravnås 3e80ed726d submodules: Bump releng 2026-01-20 18:54:35 +01:00
Ole André Vadla Ravnås 985410b6ff subprojects: Prepare for release 2026-01-17 08:43:35 +01:00
Ole André Vadla Ravnås 21c7b9ee6a subprojects: Bump outdated 2026-01-17 00:24:37 +01:00
Ole André Vadla Ravnås 7fba1cdc67 subprojects: Bump outdated 2026-01-16 15:32:05 +01:00
Ole André Vadla Ravnås a709856e2a subprojects: Bump outdated 2026-01-16 13:44:50 +01:00
Ole André Vadla Ravnås c3afe6089d submodules: Bump releng 2026-01-16 13:44:49 +01:00
Ole André Vadla Ravnås 6435a78d13 subprojects: Bump outdated 2026-01-15 18:08:16 +01:00
Ole André Vadla Ravnås 09175036ea submodules: Bump releng 2026-01-15 18:08:16 +01:00
Ole André Vadla Ravnås e0c90c5203 subprojects: Bump outdated 2026-01-11 00:48:16 +01:00
Abhi 9f463fb602 Fix regressions reported by mypi and black (#269) 2026-01-07 09:14:51 +01:00
Ole André Vadla Ravnås 9fdee2270f subprojects: Bump outdated 2026-01-06 22:40:32 +01:00
Ole André Vadla Ravnås 6e536a56b1 submodules: Bump releng 2026-01-06 22:40:32 +01:00
Ole André Vadla Ravnås 74925d082e subprojects: Prepare for release 2025-12-15 21:28:40 +01:00
Etienne Maheux bf1245ddb0 typing: Remove generic @overload on handlers
Generic @overload definitions on signal handlers were masking
type-checking errors.
2025-12-15 21:23:57 +01:00
Etienne Maheux 0f247e9439 typing: Improve @cancellable; add flag literals
Refine @cancellable typing to better model control flow and
introduce Literal types for optional Compiler flags to
improve static checking and autocomplete.
2025-12-15 21:23:57 +01:00
Ole André Vadla Ravnås 17aae5fe5c subprojects: Bump outdated 2025-12-15 21:17:51 +01:00
Ole André Vadla Ravnås 477a90534e submodules: Bump releng 2025-12-15 21:17:51 +01:00
Ole André Vadla Ravnås c87cdca293 subprojects: Prepare for release 2025-11-05 18:59:11 +01:00
Ole André Vadla Ravnås 30968b3805 subprojects: Bump outdated 2025-11-05 18:57:30 +01:00
Ole André Vadla Ravnås 5e3f27d0cb subprojects: Prepare for release 2025-11-04 10:30:58 +01:00
Ole André Vadla Ravnås 904461eb01 subprojects: Bump outdated 2025-11-04 10:29:40 +01:00
Ole André Vadla Ravnås dc652faa90 package-manager: Plug leak in specs option parsing 2025-11-04 10:23:37 +01:00
Ole André Vadla Ravnås f5ba22ad36 compiler: Expose platform and externals options 2025-11-04 10:23:00 +01:00
Ole André Vadla Ravnås dccb6810ca subprojects: Prepare for release 2025-11-01 00:38:17 +01:00
Ole André Vadla Ravnås 82441c6d61 subprojects: Bump outdated 2025-11-01 00:36:38 +01:00
Ole André Vadla Ravnås 323dca48c2 subprojects: Prepare for release 2025-10-31 20:24:11 +01:00
Ole André Vadla Ravnås ef71f0fa92 subprojects: Bump outdated 2025-10-31 20:21:50 +01:00
Ole André Vadla Ravnås e92e829f6d subprojects: Prepare for release 2025-10-29 16:48:00 +01:00
Ole André Vadla Ravnås 5793fb5528 subprojects: Bump outdated 2025-10-29 16:45:57 +01:00
Ole André Vadla Ravnås cac6993d87 subprojects: Prepare for release 2025-10-24 15:25:21 +02:00
Ole André Vadla Ravnås 714b7f8626 subprojects: Bump outdated 2025-10-24 15:23:52 +02:00
Ole André Vadla Ravnås ab0b9e98ae submodules: Bump releng 2025-10-24 15:23:52 +02:00
Ole André Vadla Ravnås 19a7fa4f45 subprojects: Prepare for release 2025-10-11 19:22:55 +02:00
Ole André Vadla Ravnås 38552a368a subprojects: Bump outdated 2025-10-11 11:47:08 +02:00
Ole André Vadla Ravnås 38724cab58 subprojects: Bump outdated 2025-10-11 11:09:13 +02:00
Ole André Vadla Ravnås b60d085ad9 subprojects: Bump outdated 2025-10-01 10:53:01 +02:00
Ole André Vadla Ravnås 1a4afbcc62 subprojects: Bump outdated 2025-10-01 10:50:11 +02:00
Ole André Vadla Ravnås 9e15cab647 subprojects: Prepare for release 2025-09-19 17:16:25 +02:00
Ole André Vadla Ravnås 9ef1c9c1f7 subprojects: Bump outdated 2025-09-19 17:14:35 +02:00
Ole André Vadla Ravnås 3da6af4759 subprojects: Prepare for release 2025-09-18 07:39:44 +02:00
Ole André Vadla Ravnås a9075822b1 subprojects: Bump outdated 2025-09-17 22:10:34 +02:00
Ole André Vadla Ravnås 2e61509c04 submodules: Bump releng 2025-09-17 22:10:34 +02:00
Ole André Vadla Ravnås aa9396c6b0 subprojects: Prepare for release 2025-09-15 22:57:06 +02:00
Ole André Vadla Ravnås 6530b2a7d4 subprojects: Bump outdated 2025-09-15 22:12:16 +02:00
Ole André Vadla Ravnås 2d833af062 subprojects: Bump outdated 2025-09-11 10:32:08 +02:00
Ole André Vadla Ravnås 9f6ab2d384 subprojects: Prepare for release 2025-08-20 12:07:22 +02:00
Ole André Vadla Ravnås a005f1bf4c subprojects: Bump outdated 2025-08-20 12:06:15 +02:00
Ole André Vadla Ravnås 59a24aa48f subprojects: Prepare for release 2025-08-12 10:15:48 +02:00
Ole André Vadla Ravnås 782d626419 subprojects: Bump outdated 2025-08-12 09:48:45 +02:00
Ole André Vadla Ravnås 3aa122f4fd subprojects: Prepare for release 2025-08-02 09:42:51 +02:00
Ole André Vadla Ravnås ef315fc0ad subprojects: Bump outdated 2025-08-02 08:53:40 +02:00
Ole André Vadla Ravnås daf93eea54 subprojects: Bump outdated 2025-08-01 20:21:16 +02:00
Ole André Vadla Ravnås 5d02a36906 submodules: Bump releng 2025-08-01 20:21:16 +02:00
Ole André Vadla Ravnås ba8daa423d subprojects: Bump outdated 2025-08-01 18:18:22 +02:00
Ole André Vadla Ravnås afb27bfa7c subprojects: Bump outdated 2025-08-01 15:48:53 +02:00
Ole André Vadla Ravnås 93a201acf2 submodules: Bump releng 2025-08-01 15:48:53 +02:00
Ole André Vadla Ravnås ca1cdad96a subprojects: Prepare for release 2025-07-24 11:16:46 +02:00
Ole André Vadla Ravnås fbc83cc9bf subprojects: Bump outdated 2025-07-24 11:15:23 +02:00
Ole André Vadla Ravnås b838e1df9a subprojects: Prepare for release 2025-07-21 15:06:22 +02:00
Ole André Vadla Ravnås e2409be987 subprojects: Bump outdated 2025-07-21 15:04:50 +02:00
Ole André Vadla Ravnås b061ea43d2 subprojects: Prepare for release 2025-07-18 10:32:24 +02:00
Ole André Vadla Ravnås a50a62999a subprojects: Bump outdated 2025-07-18 10:28:42 +02:00
Ole André Vadla Ravnås 3a47d33ee8 submodules: Bump releng 2025-07-18 10:28:42 +02:00
Ole André Vadla Ravnås ea93d827bb subprojects: Prepare for release 2025-07-03 16:10:18 +02:00
Ole André Vadla Ravnås 8d4c05f664 subprojects: Bump outdated 2025-07-03 16:09:28 +02:00
Ole André Vadla Ravnås 2f78c96622 subprojects: Prepare for release 2025-07-03 12:57:05 +02:00
Ole André Vadla Ravnås 4b5aa28119 subprojects: Bump outdated 2025-07-03 12:55:57 +02:00
Ole André Vadla Ravnås 4f87afa0f1 subprojects: Prepare for release 2025-07-02 12:59:12 +02:00
Ole André Vadla Ravnås 82272945ac subprojects: Bump outdated 2025-07-02 12:56:24 +02:00
Ole André Vadla Ravnås bf496a81d9 subprojects: Prepare for release 2025-07-02 00:09:19 +02:00
Ole André Vadla Ravnås c2dcae3ff4 subprojects: Bump outdated 2025-07-02 00:08:44 +02:00
Ole André Vadla Ravnås 0cb42c47dc subprojects: Prepare for release 2025-07-01 23:40:07 +02:00
Ole André Vadla Ravnås 0e3a9fb551 subprojects: Bump outdated 2025-07-01 23:39:09 +02:00
Ole André Vadla Ravnås 4e16e5c667 package-manager: Fix the PackageRole declaration 2025-07-01 21:25:59 +02:00
Ole André Vadla Ravnås 09d6c7b044 package-manager: Update to the new API 2025-07-01 21:22:01 +02:00
Ole André Vadla Ravnås e11efce5c2 subprojects: Prepare for release 2025-06-27 15:59:55 +02:00
Ole André Vadla Ravnås e174be9998 subprojects: Bump outdated 2025-06-27 15:58:47 +02:00
Ole André Vadla Ravnås eae3d1dc65 subprojects: Bump outdated 2025-06-27 15:50:40 +02:00
Ole André Vadla Ravnås 2d26b94c7d subprojects: Prepare for release 2025-06-23 18:44:30 +02:00
Ole André Vadla Ravnås f396958dfe subprojects: Bump outdated 2025-06-23 18:41:22 +02:00
Ole André Vadla Ravnås 93fb33206f subprojects: Prepare for release 2025-06-20 15:45:37 +02:00
Ole André Vadla Ravnås aed3c1b7bf subprojects: Bump outdated 2025-06-20 15:44:21 +02:00
Ole André Vadla Ravnås 690da0652d package-manager: Remove unused install phase 2025-06-20 11:48:08 +02:00
Ole André Vadla Ravnås bec6221c02 subprojects: Prepare for release 2025-06-20 01:13:59 +02:00
Ole André Vadla Ravnås 53479e1814 subprojects: Bump outdated 2025-06-20 01:12:37 +02:00
Ole André Vadla Ravnås 68bc65ecd4 subprojects: Prepare for release 2025-06-19 23:25:49 +02:00
Ole André Vadla Ravnås 6492081c92 subprojects: Bump outdated 2025-06-19 23:23:57 +02:00
Ole André Vadla Ravnås 262b984e23 subprojects: Prepare for release 2025-06-19 21:03:48 +02:00
Ole André Vadla Ravnås 730ec03652 subprojects: Bump outdated 2025-06-19 21:01:50 +02:00
Ole André Vadla Ravnås 25f96f92d3 subprojects: Bump outdated 2025-06-19 20:19:02 +02:00
Ole André Vadla Ravnås dec23f9ef5 extension: Expose PackageManager.registry 2025-06-19 12:17:09 +02:00
Ole André Vadla Ravnås 906d27bcb7 extension: Add missing toplevel counter logic
We previously only bumped it when instantiating DeviceManager and
PortalService objects. We also need to do it for Compiler,
PackageManager, and FileMonitor. Otherwise signal emissions won't
work in some applications.
2025-06-19 11:51:38 +02:00
Ole André Vadla Ravnås b0018c9812 extension: Add __repr__ to PackageManager types 2025-06-19 11:51:38 +02:00
Ole André Vadla Ravnås 5e011e6d64 subprojects: Prepare for release 2025-06-18 23:35:02 +02:00
Ole André Vadla Ravnås b68dda4eb5 subprojects: Bump outdated 2025-06-18 23:33:55 +02:00
Ole André Vadla Ravnås 6fbe238c1a extension: Simplify the Compiler constructor
The DeviceManager is no longer needed.
2025-06-18 22:49:42 +02:00
Ole André Vadla Ravnås 4d750dfe58 extension: Fix the Compiler docstring 2025-06-18 22:49:42 +02:00
Ole André Vadla Ravnås fe1c61ce5d Add PackageManager bindings 2025-06-18 22:49:42 +02:00
Ole André Vadla Ravnås ea91df0d77 subprojects: Prepare for release 2025-06-13 16:28:23 +02:00
Ole André Vadla Ravnås b78ae7555f subprojects: Bump outdated 2025-06-13 16:27:32 +02:00
Ole André Vadla Ravnås b456683f2d subprojects: Prepare for release 2025-06-10 22:09:55 +02:00
Ole André Vadla Ravnås ddfe2b1a3b subprojects: Bump outdated 2025-06-10 22:06:06 +02:00
Ole André Vadla Ravnås 329795dbfc subprojects: Prepare for release 2025-06-07 13:32:31 +02:00
Ole André Vadla Ravnås e9c62fd581 subprojects: Bump outdated 2025-06-07 13:30:37 +02:00
Ole André Vadla Ravnås 40e945107d subprojects: Bump outdated 2025-06-07 11:23:25 +02:00
Ole André Vadla Ravnås 6c27bf0da7 subprojects: Prepare for release 2025-06-06 22:11:42 +02:00
Ole André Vadla Ravnås d37451f3bc subprojects: Bump outdated 2025-06-06 22:10:42 +02:00
Ole André Vadla Ravnås 6d4e4e27ee subprojects: Prepare for release 2025-06-06 14:11:20 +02:00
Ole André Vadla Ravnås 33a9c51387 subprojects: Bump outdated 2025-06-06 13:27:32 +02:00
Ole André Vadla Ravnås 4344eb9220 subprojects: Bump outdated 2025-06-06 12:38:36 +02:00
Ole André Vadla Ravnås 3a94e642d7 subprojects: Prepare for release 2025-06-05 22:05:26 +02:00
Ole André Vadla Ravnås 7a5948a95a subprojects: Bump outdated 2025-06-05 21:11:38 +02:00
Ole André Vadla Ravnås bbe926c606 subprojects: Bump outdated 2025-06-05 19:40:13 +02:00
Ole André Vadla Ravnås b653958fa4 subprojects: Bump outdated 2025-06-05 19:22:52 +02:00
Ole André Vadla Ravnås bca5146b74 subprojects: Bump outdated 2025-06-05 17:02:30 +02:00
Ole André Vadla Ravnås 2bd254702c submodules: Bump releng 2025-06-05 17:02:30 +02:00
Ole André Vadla Ravnås 82ee16d299 subprojects: Bump outdated 2025-06-02 00:10:05 +02:00
Ole André Vadla Ravnås 51501ceacb Add support for the new Compiler options
I.e. `output_format`, `bundle_format`, and `type_check`.
2025-06-01 23:48:37 +02:00
Ole André Vadla Ravnås ef45347385 subprojects: Bump outdated 2025-06-01 11:05:11 +02:00
Ole André Vadla Ravnås 0024f6719a submodules: Bump releng 2025-06-01 11:05:11 +02:00
Ole André Vadla Ravnås 87de091250 subprojects: Prepare for release 2025-05-29 17:32:12 +02:00
Ole André Vadla Ravnås cf4870e13d subprojects: Bump outdated 2025-05-29 17:30:22 +02:00
Ole André Vadla Ravnås 2ac00cb1e2 subprojects: Prepare for release 2025-05-28 23:17:06 +02:00
Ole André Vadla Ravnås dd94c73d4f subprojects: Bump outdated 2025-05-28 23:16:30 +02:00
Ole André Vadla Ravnås 40eb2dae38 subprojects: Prepare for release 2025-05-24 21:03:25 +02:00
Ole André Vadla Ravnås 73004f9598 subprojects: Bump outdated 2025-05-24 21:02:11 +02:00
Ole André Vadla Ravnås a0e9e64346 subprojects: Prepare for release 2025-05-22 21:39:37 +02:00
Ole André Vadla Ravnås 2706e19615 subprojects: Bump outdated 2025-05-22 21:22:51 +02:00
Ole André Vadla Ravnås 6edaf679ac subprojects: Bump outdated 2025-05-22 18:22:49 +02:00
Ole André Vadla Ravnås c2c45ce231 subprojects: Prepare for release 2025-05-20 23:12:16 +02:00
Ole André Vadla Ravnås 0180450178 subprojects: Bump outdated 2025-05-20 23:10:29 +02:00
12 changed files with 1238 additions and 131 deletions
+5 -7
View File
@@ -42,18 +42,16 @@ class Application:
print("✔ enable_child_gating()")
session.enable_child_gating()
print("✔ create_script()")
script = session.create_script(
"""\
Interceptor.attach(Module.getExportByName(null, 'open'), {
onEnter: function (args) {
script = session.create_script("""\
Interceptor.attach(Module.getGlobalExportByName('open'), {
onEnter(args) {
send({
type: 'open',
path: Memory.readUtf8String(args[0])
path: args[0].readUtf8String()
});
}
});
"""
)
""")
script.on("message", lambda message, data: self._reactor.schedule(lambda: self._on_message(pid, message)))
print("✔ load()")
script.load()
+1 -1
View File
@@ -15,7 +15,7 @@ def on_uninjected(id):
print("on_uninjected id=%u" % id)
(target, library_path) = sys.argv[1:]
target, library_path = sys.argv[1:]
device = frida.get_local_device()
device.on("uninjected", on_uninjected)
+1 -1
View File
@@ -15,7 +15,7 @@ def on_uninjected(id):
print("on_uninjected id=%u" % id)
(target, library_path) = sys.argv[1:]
target, library_path = sys.argv[1:]
device = frida.get_local_device()
device.on("uninjected", on_uninjected)
+2 -4
View File
@@ -1,8 +1,7 @@
import frida
session = frida.attach("Twitter")
script = session.create_script(
"""\
script = session.create_script("""\
rpc.exports = {
hello: function () {
return 'Hello';
@@ -11,8 +10,7 @@ rpc.exports = {
oops;
}
};
"""
)
""")
script.load()
api = script.exports_sync
print("api.hello() =>", api.hello())
+2 -4
View File
@@ -22,8 +22,7 @@ class Application:
self._session = session
session.on("detached", lambda *args: self._reactor.schedule(lambda: self._on_detached(*args)))
script = session.create_script(
"""
script = session.create_script("""
let _puts = null;
Interceptor.attach(DebugSymbol.getFunctionByName('f'), {
@@ -48,8 +47,7 @@ function puts(s) {
}
_puts(Memory.allocUtf8String(s));
}
"""
)
""")
self._script = script
script.on("message", lambda *args: self._reactor.schedule(lambda: self._on_message(*args)))
script.load()
+78
View File
@@ -0,0 +1,78 @@
import threading
from frida_tools.application import Reactor
import frida
class Application:
def __init__(self):
self._stop_requested = threading.Event()
self._reactor = Reactor(run_until_return=lambda reactor: self._stop_requested.wait())
self._device = frida.get_usb_device()
self._sessions = set()
self._sessions_lock = threading.Lock()
self._device.on("spawn-added", lambda spawn: self._reactor.schedule(lambda: self._on_spawn_added(spawn)))
self._device.on("spawn-removed", lambda spawn: self._reactor.schedule(lambda: self._on_spawn_removed(spawn)))
def run(self):
self._reactor.schedule(lambda: self._start())
self._reactor.run()
def _start(self):
self._device.enable_spawn_gating()
def _instrument(self, pid):
print(f"✔ attach(pid={pid})")
session = self._device.attach(pid)
session.on("detached", lambda reason: self._reactor.schedule(lambda: self._on_detached(pid, session, reason)))
print("✔ create_script()")
script = session.create_script("""\
const puts = new NativeFunction(Module.getGlobalExportByName('puts'), 'int', ['pointer']);
puts(Memory.allocUtf8String('Hello from Frida agent'));
Interceptor.attach(Module.getGlobalExportByName('open'), {
onEnter(args) {
send({
type: 'open',
path: args[0].readUtf8String()
});
}
});
""")
script.on("message", lambda message, data: self._reactor.schedule(lambda: self._on_message(pid, message)))
print("✔ load()")
script.load()
print(f"✔ resume(pid={pid})")
self._device.resume(pid)
with self._sessions_lock:
self._sessions.add(session)
def _on_spawn_added(self, spawn):
print(f"⚡ spawn_added: {spawn}")
t = threading.Thread(target=self._handle_spawn, args=(spawn,))
t.start()
def _handle_spawn(self, spawn):
if "/bin/ls" in spawn.identifier:
self._instrument(spawn.pid)
else:
pid = spawn.pid
print(f"✔ resume(pid={pid})")
self._device.resume(pid)
def _on_spawn_removed(self, spawn):
print(f"⚡ spawn_removed: {spawn}")
def _on_detached(self, pid, session, reason):
print(f"⚡ detached: pid={pid}, reason='{reason}'")
with self._sessions_lock:
self._sessions.remove(session)
def _on_message(self, pid, message):
print(f"⚡ message: pid={pid}, payload={message['payload']}")
app = Application()
app.run()
+20 -3
View File
@@ -1,4 +1,4 @@
from typing import Any, Callable, Dict, List, Optional, Tuple, Union
from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union
try:
from . import _frida
@@ -23,6 +23,7 @@ Relay = _frida.Relay
PortalService = core.PortalService
EndpointParameters = core.EndpointParameters
Compiler = core.Compiler
PackageManager = core.PackageManager
FileMonitor = _frida.FileMonitor
Cancellable = core.Cancellable
@@ -85,14 +86,30 @@ def kill(target: core.ProcessTarget) -> None:
def attach(
target: core.ProcessTarget, realm: Optional[str] = None, persist_timeout: Optional[int] = None
target: core.ProcessTarget,
realm: Optional[str] = None,
persist_timeout: Optional[int] = None,
exceptor: Optional[str] = None,
unwind_broker: Optional[bool] = None,
exit_monitor: Optional[bool] = None,
thread_suspend_monitor: Optional[bool] = None,
linker_notifier_offsets: Optional[Sequence[int]] = None,
) -> core.Session:
"""
Attach to a process
:param target: the PID or name of the process
"""
return get_local_device().attach(target, realm=realm, persist_timeout=persist_timeout)
return get_local_device().attach(
target,
realm=realm,
persist_timeout=persist_timeout,
exceptor=exceptor,
unwind_broker=unwind_broker,
exit_monitor=exit_monitor,
thread_suspend_monitor=thread_suspend_monitor,
linker_notifier_offsets=linker_notifier_offsets,
)
def inject_library_file(target: core.ProcessTarget, path: str, entrypoint: str, data: str) -> int:
+111 -1
View File
@@ -256,7 +256,17 @@ class Device(Object):
"""
...
def attach(self, pid: int, realm: Optional[str] = None, persist_timeout: Optional[int] = None) -> "Session":
def attach(
self,
pid: int,
realm: Optional[str] = None,
persist_timeout: Optional[int] = None,
exceptor: Optional[str] = None,
unwind_broker: Optional[bool] = None,
exit_monitor: Optional[bool] = None,
thread_suspend_monitor: Optional[bool] = None,
linker_notifier_offsets: Optional[Sequence[int]] = None,
) -> "Session":
"""
Attach to a PID.
"""
@@ -754,8 +764,13 @@ class Compiler(Object):
self,
entrypoint: str,
project_root: Optional[str] = None,
output_format: Optional[str] = None,
bundle_format: Optional[str] = None,
type_check: Optional[str] = None,
source_maps: Optional[str] = None,
compression: Optional[str] = None,
platform: Optional[str] = None,
externals: Optional[Sequence[str]] = None,
) -> str:
"""
Build an agent.
@@ -766,12 +781,107 @@ class Compiler(Object):
self,
entrypoint: str,
project_root: Optional[str] = None,
output_format: Optional[str] = None,
bundle_format: Optional[str] = None,
type_check: Optional[str] = None,
source_maps: Optional[str] = None,
compression: Optional[str] = None,
platform: Optional[str] = None,
externals: Optional[Sequence[str]] = None,
) -> None:
"""
Continuously build an agent.
"""
...
class PackageManager(Object):
@property
def registry(self) -> str:
"""
The registry being used.
"""
...
@registry.setter
def registry(self, value: str) -> None:
"""
Change the registry to use.
"""
...
def search(
self,
query: str,
offset: Optional[int] = None,
limit: Optional[int] = None,
) -> PackageSearchResult:
"""
Search for packages to install.
"""
...
def install(
self,
project_root: Optional[str] = None,
role: Optional[str] = None,
specs: Optional[Sequence[str]] = None,
omits: Optional[Sequence[str]] = None,
) -> PackageInstallResult:
"""
Install one or more packages.
"""
...
class Package(Object):
@property
def name(self) -> str:
"""
Package name.
"""
...
@property
def version(self) -> str:
"""
Package version.
"""
...
@property
def description(self) -> Optional[str]:
"""
Package description.
"""
...
@property
def url(self) -> Optional[str]:
"""
Package URL.
"""
...
class PackageSearchResult(Object):
@property
def packages(self) -> List[Package]:
"""
Batch of matching packages.
"""
...
@property
def total(self) -> int:
"""
Total matching packages.
"""
...
class PackageInstallResult(Object):
@property
def packages(self) -> List[Package]:
"""
The toplevel packages that are installed.
"""
...
__version__: str
+851 -39
View File
File diff suppressed because it is too large Load Diff
+165 -69
View File
@@ -33,10 +33,15 @@ if sys.version_info >= (3, 8):
else:
from typing_extensions import Literal, TypedDict
if sys.version_info >= (3, 11):
from typing import NotRequired
if sys.version_info >= (3, 10):
from typing import ParamSpec
else:
from typing_extensions import NotRequired
from typing_extensions import ParamSpec
if sys.version_info >= (3, 11):
from typing import NotRequired, cast
else:
from typing_extensions import NotRequired, cast
from . import _frida
@@ -72,15 +77,18 @@ def _filter_missing_kwargs(d: MutableMapping[Any, Any]) -> None:
d.pop(key)
R = TypeVar("R")
P = ParamSpec("P")
R = TypeVar("R", covariant=True)
def cancellable(f: Callable[..., R]) -> Callable[..., R]:
def cancellable(f: Callable[P, R]) -> Callable[P, R]:
# currently there is no way to type properly the extended callable with optional cancellable parameter
# ref: https://github.com/python/typing/discussions/1905#discussioncomment-11696995
@functools.wraps(f)
def wrapper(*args: Any, **kwargs: Any) -> R:
def wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
cancellable = kwargs.pop("cancellable", None)
if cancellable is not None:
with cancellable:
with cast(Cancellable, cancellable):
return f(*args, **kwargs)
return f(*args, **kwargs)
@@ -351,9 +359,6 @@ class Script:
@overload
def on(self, signal: Literal["message"], callback: ScriptMessageCallback) -> None: ...
@overload
def on(self, signal: str, callback: Callable[..., Any]) -> None: ...
def on(self, signal: str, callback: Callable[..., Any]) -> None:
"""
Add a signal handler
@@ -370,9 +375,6 @@ class Script:
@overload
def off(self, signal: Literal["message"], callback: ScriptMessageCallback) -> None: ...
@overload
def off(self, signal: str, callback: Callable[..., Any]) -> None: ...
def off(self, signal: str, callback: Callable[..., Any]) -> None:
"""
Remove a signal handler
@@ -693,34 +695,22 @@ class Session:
_filter_missing_kwargs(kwargs)
return PortalMembership(self._impl.join_portal(address, **kwargs))
@overload
def on(
self,
signal: Literal["detached"],
callback: SessionDetachedCallback,
) -> None: ...
@overload
def on(self, signal: str, callback: Callable[..., Any]) -> None: ...
def on(self, signal: str, callback: Callable[..., Any]) -> None:
) -> None:
"""
Add a signal handler
"""
self._impl.on(signal, callback)
@overload
def off(
self,
signal: Literal["detached"],
callback: SessionDetachedCallback,
) -> None: ...
@overload
def off(self, signal: str, callback: Callable[..., Any]) -> None: ...
def off(self, signal: str, callback: Callable[..., Any]) -> None:
) -> None:
"""
Remove a signal handler
"""
@@ -763,9 +753,6 @@ class Bus:
@overload
def on(self, signal: Literal["message"], callback: BusMessageCallback) -> None: ...
@overload
def on(self, signal: str, callback: Callable[..., Any]) -> None: ...
def on(self, signal: str, callback: Callable[..., Any]) -> None:
"""
Add a signal handler
@@ -782,9 +769,6 @@ class Bus:
@overload
def off(self, signal: Literal["message"], callback: BusMessageCallback) -> None: ...
@overload
def off(self, signal: str, callback: Callable[..., Any]) -> None: ...
def off(self, signal: str, callback: Callable[..., Any]) -> None:
"""
Remove a signal handler
@@ -842,9 +826,6 @@ class Service:
@overload
def on(self, signal: Literal["message"], callback: ServiceMessageCallback) -> None: ...
@overload
def on(self, signal: str, callback: Callable[..., Any]) -> None: ...
def on(self, signal: str, callback: Callable[..., Any]) -> None:
"""
Add a signal handler
@@ -858,9 +839,6 @@ class Service:
@overload
def off(self, signal: Literal["message"], callback: ServiceMessageCallback) -> None: ...
@overload
def off(self, signal: str, callback: Callable[..., Any]) -> None: ...
def off(self, signal: str, callback: Callable[..., Any]) -> None:
"""
Remove a signal handler
@@ -905,6 +883,14 @@ class Device:
return self._impl.is_lost()
@cancellable
def override_option(self, name: str, value: Any) -> None:
"""
Override a backend-specific option
"""
self._impl.override_option(name, value)
@cancellable
def query_system_parameters(self) -> Dict[str, Any]:
"""
@@ -1060,13 +1046,26 @@ class Device:
target: ProcessTarget,
realm: Optional[str] = None,
persist_timeout: Optional[int] = None,
exceptor: Optional[str] = None,
unwind_broker: Optional[bool] = None,
exit_monitor: Optional[bool] = None,
thread_suspend_monitor: Optional[bool] = None,
linker_notifier_offsets: Optional[Sequence[int]] = None,
) -> Session:
"""
Attach to a process
:param target: the PID or name of the process
"""
kwargs = {"realm": realm, "persist_timeout": persist_timeout}
kwargs = {
"realm": realm,
"persist_timeout": persist_timeout,
"exceptor": exceptor,
"unwind_broker": unwind_broker,
"exit_monitor": exit_monitor,
"thread_suspend_monitor": thread_suspend_monitor,
"linker_notifier_offsets": linker_notifier_offsets,
}
_filter_missing_kwargs(kwargs)
return Session(self._impl.attach(self._pid_of(target), **kwargs)) # type: ignore
@@ -1144,9 +1143,6 @@ class Device:
@overload
def on(self, signal: Literal["lost"], callback: DeviceLostCallback) -> None: ...
@overload
def on(self, signal: str, callback: Callable[..., Any]) -> None: ...
def on(self, signal: str, callback: Callable[..., Any]) -> None:
"""
Add a signal handler
@@ -1178,9 +1174,6 @@ class Device:
@overload
def off(self, signal: Literal["lost"], callback: DeviceLostCallback) -> None: ...
@overload
def off(self, signal: str, callback: Callable[..., Any]) -> None: ...
def off(self, signal: str, callback: Callable[..., Any]) -> None:
"""
Remove a signal handler
@@ -1298,9 +1291,6 @@ class DeviceManager:
@overload
def on(self, signal: Literal["changed"], callback: DeviceManagerChangedCallback) -> None: ...
@overload
def on(self, signal: str, callback: Callable[..., Any]) -> None: ...
def on(self, signal: str, callback: Callable[..., Any]) -> None:
"""
Add a signal handler
@@ -1317,9 +1307,6 @@ class DeviceManager:
@overload
def off(self, signal: Literal["changed"], callback: DeviceManagerChangedCallback) -> None: ...
@overload
def off(self, signal: str, callback: Callable[..., Any]) -> None: ...
def off(self, signal: str, callback: Callable[..., Any]) -> None:
"""
Remove a signal handler
@@ -1344,7 +1331,7 @@ class EndpointParameters:
_filter_missing_kwargs(kwargs)
if authentication is not None:
(auth_scheme, auth_data) = authentication
auth_scheme, auth_data = authentication
if auth_scheme == "token":
kwargs["auth_token"] = auth_data
elif auth_scheme == "callback":
@@ -1490,9 +1477,6 @@ class PortalService:
@overload
def on(self, signal: Literal["message"], callback: PortalServiceMessageCallback) -> None: ...
@overload
def on(self, signal: str, callback: Callable[..., Any]) -> None: ...
def on(self, signal: str, callback: Callable[..., Any]) -> None:
"""
Add a signal handler
@@ -1554,10 +1538,17 @@ CompilerFinishedCallback = Callable[[], None]
CompilerOutputCallback = Callable[[str], None]
CompilerDiagnosticsCallback = Callable[[List[CompilerDiagnostic]], None]
CompilerOutputFormat = Literal["unescaped", "hex-bytes", "c-string"]
CompilerBundleFormat = Literal["esm", "iife"]
CompilerTypeCheck = Literal["full", "none"]
CompilerSourceMaps = Literal["included", "omitted"]
CompilerCompression = Literal["none", "terser"]
CompilerPlatform = Literal["neutral", "gum", "browser"]
class Compiler:
def __init__(self) -> None:
self._impl = _frida.Compiler(get_device_manager()._impl)
self._impl = _frida.Compiler()
def __repr__(self) -> str:
return repr(self._impl)
@@ -1567,10 +1558,24 @@ class Compiler:
self,
entrypoint: str,
project_root: Optional[str] = None,
source_maps: Optional[str] = None,
compression: Optional[str] = None,
output_format: Optional[CompilerOutputFormat] = None,
bundle_format: Optional[CompilerBundleFormat] = None,
type_check: Optional[CompilerTypeCheck] = None,
source_maps: Optional[CompilerSourceMaps] = None,
compression: Optional[CompilerCompression] = None,
platform: Optional[CompilerPlatform] = None,
externals: Optional[Sequence[str]] = None,
) -> str:
kwargs = {"project_root": project_root, "source_maps": source_maps, "compression": compression}
kwargs: dict[str, Any] = {
"project_root": project_root,
"output_format": output_format,
"bundle_format": bundle_format,
"type_check": type_check,
"source_maps": source_maps,
"compression": compression,
"platform": platform,
"externals": externals,
}
_filter_missing_kwargs(kwargs)
return self._impl.build(entrypoint, **kwargs)
@@ -1579,10 +1584,24 @@ class Compiler:
self,
entrypoint: str,
project_root: Optional[str] = None,
source_maps: Optional[str] = None,
compression: Optional[str] = None,
output_format: Optional[CompilerOutputFormat] = None,
bundle_format: Optional[CompilerBundleFormat] = None,
type_check: Optional[CompilerTypeCheck] = None,
source_maps: Optional[CompilerSourceMaps] = None,
compression: Optional[CompilerCompression] = None,
platform: Optional[CompilerPlatform] = None,
externals: Optional[Sequence[str]] = None,
) -> None:
kwargs = {"project_root": project_root, "source_maps": source_maps, "compression": compression}
kwargs: dict[str, Any] = {
"project_root": project_root,
"output_format": output_format,
"bundle_format": bundle_format,
"type_check": type_check,
"source_maps": source_maps,
"compression": compression,
"platform": platform,
"externals": externals,
}
_filter_missing_kwargs(kwargs)
return self._impl.watch(entrypoint, **kwargs)
@@ -1598,10 +1617,11 @@ class Compiler:
@overload
def on(self, signal: Literal["diagnostics"], callback: CompilerDiagnosticsCallback) -> None: ...
@overload
def on(self, signal: str, callback: Callable[..., Any]) -> None: ...
def on(self, signal: str, callback: Callable[..., Any]) -> None:
"""
Add a signal handler
"""
self._impl.on(signal, callback)
@overload
@@ -1616,10 +1636,86 @@ class Compiler:
@overload
def off(self, signal: Literal["diagnostics"], callback: CompilerDiagnosticsCallback) -> None: ...
@overload
def off(self, signal: str, callback: Callable[..., Any]) -> None: ...
def off(self, signal: str, callback: Callable[..., Any]) -> None:
"""
Remove a signal handler
"""
self._impl.off(signal, callback)
PackageManagerInstallProgressCallback = Callable[
[
Literal[
"initializing",
"preparing-dependencies",
"resolving-package",
"fetching-resource",
"package-already-installed",
"downloading-package",
"package-installed",
"resolving-and-installing-all",
"complete",
],
float,
Optional[str],
],
None,
]
PackageRole = Literal["runtime", "development", "optional", "peer"]
class PackageManager:
def __init__(self) -> None:
self._impl = _frida.PackageManager()
def __repr__(self) -> str:
return repr(self._impl)
@property
def registry(self):
return self._impl.registry
@registry.setter
def registry(self, value):
self._impl.registry = value
@cancellable
def search(
self,
query: str,
offset: Optional[int] = None,
limit: Optional[int] = None,
) -> _frida.PackageSearchResult:
kwargs = {
"offset": offset,
"limit": limit,
}
_filter_missing_kwargs(kwargs)
return self._impl.search(query, **kwargs)
@cancellable
def install(
self,
project_root: Optional[str] = None,
role: Optional[PackageRole] = None,
specs: Optional[Sequence[str]] = None,
omits: Optional[Sequence[PackageRole]] = None,
) -> _frida.PackageInstallResult:
kwargs: Dict[str, Any] = {
"project_root": project_root,
"role": role,
"specs": specs,
"omits": omits,
}
_filter_missing_kwargs(kwargs)
return self._impl.install(**kwargs)
def on(self, signal: Literal["install-progress"], callback: PackageManagerInstallProgressCallback) -> None:
self._impl.on(signal, callback)
def off(self, signal: Literal["install-progress"], callback: PackageManagerInstallProgressCallback) -> None:
self._impl.off(signal, callback)
+1 -1
Submodule releng updated: 5d9edf166c...029b3b189e
+1 -1
View File
@@ -1,6 +1,6 @@
[wrap-git]
url = https://github.com/frida/frida-core.git
revision = 17.0.2
revision = 17.10.0
depth = 1
[provide]