From 5e3a9526903a9f946ea694ad9ac5070f02dd7489 Mon Sep 17 00:00:00 2001 From: Tobias Sterbak Date: Wed, 1 Nov 2023 17:12:43 +0100 Subject: [PATCH 01/27] Prepare 0.5.2 --- openandroidinstaller/openandroidinstaller.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openandroidinstaller/openandroidinstaller.py b/openandroidinstaller/openandroidinstaller.py index ae783429..da9ada00 100644 --- a/openandroidinstaller/openandroidinstaller.py +++ b/openandroidinstaller/openandroidinstaller.py @@ -56,7 +56,7 @@ from tooling import run_command # VERSION number -VERSION = "0.5.1-beta" +VERSION = "0.5.2-beta" # detect platform PLATFORM = sys.platform diff --git a/pyproject.toml b/pyproject.toml index 0c22de84..a7ea8f37 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "openandroidinstaller" -version = "0.4.5-beta" +version = "0.5.2-beta" description = "Install lineage OS in a nice and easy way." authors = ["Tobias Sterbak "] license = "GPLv3" From 54c62a774d37263debe7f11800b08286bb0e7d53 Mon Sep 17 00:00:00 2001 From: SirRGB Date: Sun, 19 Nov 2023 17:47:25 +0100 Subject: [PATCH 02/27] add mi439 twrp name * capitalization matters * changes untested * partially fixes https://github.com/openandroidinstaller-dev/openandroidinstaller/issues/352 --- openandroidinstaller/assets/configs/Mi439.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/openandroidinstaller/assets/configs/Mi439.yaml b/openandroidinstaller/assets/configs/Mi439.yaml index 7aa6cffd..d9af274d 100644 --- a/openandroidinstaller/assets/configs/Mi439.yaml +++ b/openandroidinstaller/assets/configs/Mi439.yaml @@ -15,8 +15,7 @@ metadata: - olive - olivelite - olivewood - notes: - - Be careful when choosing OrangeFox version, Android 12 & 13 ROM needs OrangeFox version code with `A12`, for example `R11.1_5_A12`. Android 10 & 11 ROM needs OrangeFox version code without `A12` (bellow on the page) + twrp-link: mi439 requirements: firmware: MiUI 12.5 (Q) steps: From 2807c4360bed84b7f72cac50e47a8dcd9749467f Mon Sep 17 00:00:00 2001 From: SirRGB Date: Mon, 20 Nov 2023 10:46:51 +0100 Subject: [PATCH 03/27] add motorola model names * taken from the lineage wiki and https://telegra.ph/G5-Variants--Code-Names-10-07 Signed-off-by: SirRGB --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index b15b3c82..43569045 100644 --- a/README.md +++ b/README.md @@ -148,13 +148,13 @@ Fairphone | Fairphone 4 | [FP4](https://wiki.lineageos.org/devices/FP4) | | test Vendor | Device Name | CodeName | Models | Status ---|---|---|---|--- -Motorola | edge | [racer](https://wiki.lineageos.org/devices/racer) | | tested -Motorola | moto g5 | [cedric](https://wiki.lineageos.org/devices/cedric) | | tested -Motorola | moto g6 plus | [evert](https://wiki.lineageos.org/devices/evert) | | tested -Motorola | moto g7 power | [ocean](https://wiki.lineageos.org/devices/ocean) | | tested -Motorola | moto g 5G plus / one 5G | [nairo](https://wiki.lineageos.org/devices/nairo) | | tested -Motorola | moto g 5G / one 5G ace | [kiev](https://wiki.lineageos.org/devices/kiev) | | tested -Motorola | moto z | [griffin](https://wiki.lineageos.org/devices/griffin) | | tested +Motorola | edge | [racer](https://wiki.lineageos.org/devices/racer) | XT2063-2, XT2063-3 | tested +Motorola | moto g5 | [cedric](https://wiki.lineageos.org/devices/cedric) | XT1670, XT1671, XT1672, XT1675, XT1676, XT1677 | tested +Motorola | moto g6 plus | [evert](https://wiki.lineageos.org/devices/evert) | XT1926-2, XT1926-3, XT1926-5, XT1926-6, XT1926-7, XT1926-8, XT1926-9 | tested +Motorola | moto g7 power | [ocean](https://wiki.lineageos.org/devices/ocean) | XT1955-1, XT1955-2, XT1955-4, XT1955-5, XT1955-7 | tested +Motorola | moto g 5G plus / one 5G | [nairo](https://wiki.lineageos.org/devices/nairo) | XT2075-3, XT2075-5 | tested +Motorola | moto g 5G / one 5G ace | [kiev](https://wiki.lineageos.org/devices/kiev) | XT2113-2, XT2113-3 | tested +Motorola | moto z | [griffin](https://wiki.lineageos.org/devices/griffin) | XT1650-3, XT1650-05 | tested From b441f72a87ce2bc15eeb518fd9803d7417028df0 Mon Sep 17 00:00:00 2001 From: SirRGB Date: Sun, 19 Nov 2023 23:33:57 +0100 Subject: [PATCH 04/27] add oneplus model names * taken from gsmarena, wikipedia and the lineage wiki --- README.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 3f07fc9d..b15b3c82 100644 --- a/README.md +++ b/README.md @@ -111,9 +111,9 @@ Google | Pixel 3 | [blueline](https://wiki.lineageos.org/devices/blueline) | blu Google | Pixel 3 XL | [crosshatch](https://wiki.lineageos.org/devices/crosshatch) | crosshatch | tested Google | Pixel 3a | [sargo](https://wiki.lineageos.org/devices/sargo) | sargo | tested Google | Pixel 3a XL | [bonito](https://wiki.lineageos.org/devices/bonito) | bonito | tested -Google | Pixel 4 | [flame](https://wiki.lineageos.org/devices/flame) | flame | tested -Google | Pixel 4 XL | [coral](https://wiki.lineageos.org/devices/coral) | coral | tested -Google | Pixel 4a | [sunfish](https://wiki.lineageos.org/devices/sunfish) | sunfish | tested +Google | Pixel 4 | [flame](https://wiki.lineageos.org/devices/flame) | flame | tested +Google | Pixel 4 XL | [coral](https://wiki.lineageos.org/devices/coral) | coral | tested +Google | Pixel 4a | [sunfish](https://wiki.lineageos.org/devices/sunfish) | sunfish | tested Google | Pixel 5 | [redfin](https://wiki.lineageos.org/devices/redfin) | redfin | tested Google | Pixel 5a | [barbet](https://wiki.lineageos.org/devices/barbet) | barbet | tested @@ -163,17 +163,17 @@ Motorola | moto z | [griffin](https://wiki.lineageos.org/devices/griffin) | | te Vendor | Device Name | CodeName | Models | Status ---|---|---|---|--- OnePlus | One | [bacon](https://wiki.lineageos.org/devices/bacon) | A0001 | tested -OnePlus | 5 | [cheeseburger](https://wiki.lineageos.org/devices/cheeseburger) | | tested -OnePlus | 5T | [dumpling](https://wiki.lineageos.org/devices/dumpling) | | tested -OnePlus | 6 | [enchilada](https://wiki.lineageos.org/devices/enchilada) | | tested -OnePlus | 6T | [fajita](https://wiki.lineageos.org/devices/fajita) | | tested -OnePlus | 7 | [guacamoleb](https://wiki.lineageos.org/devices/guacamoleb) | | tested -OnePlus | 7 Pro | [guacamole](https://wiki.lineageos.org/devices/guacamole) | | tested -OnePlus | 7T | [hotdogb](https://wiki.lineageos.org/devices/hotdogb) | | tested -OnePlus | 7T Pro | [hotdog](https://wiki.lineageos.org/devices/hotdog) | | tested -OnePlus | Nord | [avicii](https://wiki.lineageos.org/devices/avicii) | | tested -OnePlus | Nord N200 | [dre](https://wiki.lineageos.org/devices/dre) | | tested -OnePlus | 9 | lemonade | | under development +OnePlus | 5 | [cheeseburger](https://wiki.lineageos.org/devices/cheeseburger) | A5000 | tested +OnePlus | 5T | [dumpling](https://wiki.lineageos.org/devices/dumpling) | A5010 | tested +OnePlus | 6 | [enchilada](https://wiki.lineageos.org/devices/enchilada) | A6000, A6003 | tested +OnePlus | 6T | [fajita](https://wiki.lineageos.org/devices/fajita) | A6010, A6013 | tested +OnePlus | 7 | [guacamoleb](https://wiki.lineageos.org/devices/guacamoleb) | GM1900, GM1901, GM1903, GM1905 | tested +OnePlus | 7 Pro | [guacamole](https://wiki.lineageos.org/devices/guacamole) | GM1910, GM1911, GM1913, GM1917 | tested +OnePlus | 7T | [hotdogb](https://wiki.lineageos.org/devices/hotdogb) | HD1900, HD1901, HD1903, HD1905 | tested +OnePlus | 7T Pro | [hotdog](https://wiki.lineageos.org/devices/hotdog) | HD1910, HD1911, HD1913, HD1917 | tested +OnePlus | Nord | [avicii](https://wiki.lineageos.org/devices/avicii) | AC2001, AC2003 | tested +OnePlus | Nord N200 | [dre](https://wiki.lineageos.org/devices/dre) | DE2117 | tested +OnePlus | 9 | lemonade | LE2110, LE2111, LE2113, LE2115 | under development @@ -191,7 +191,7 @@ Xiaomi | Mi 9T / Redmi K20 | [davinci](https://wiki.lineageos.org/devices/davinc Xiaomi | Redmi K20 Pro / Mi 9T Pro | raphael / raphaelin | | untested Xiaomi | Redmi Note 9S / 9 Pro / 9 Pro Max / 10 Lite / Poco M2 pro | [miatoll](https://wiki.lineageos.org/devices/lavender) : gram / curtana / excalibur / joyeuse | | untested Xiaomi | Redmi Note 10S / 11SE / Poco M5S | [rosemary](https://wiki.lineageos.org/devices/rosemary) / maltose / secret /rosemary_p | | untested -Xiaomi | Redmi K40 / Mi 11X / Poco F3 | [alioth](https://wiki.lineageos.org/devices/alioth) / aliothin | | untested +Xiaomi | Redmi K40 / Mi 11X / Poco F3 | [alioth](https://wiki.lineageos.org/devices/alioth) / aliothin | | untested Xiaomi | Poco X3 / X3 NFC | [surya](https://wiki.lineageos.org/devices/surya) / karna | | untested Xiaomi | Poco X3 Pro | [vayu](https://wiki.lineageos.org/devices/vayu) | | tested Xiaomi | 12 | cupid | | untested @@ -224,7 +224,7 @@ A detailed list can be found [here](https://openandroidinstaller.org/#contribute ## Tools -- The [Android SDK Platform Tools](https://developer.android.com/studio/releases/platform-tools) (such as adb and fastboot) are [Apache](https://android.googlesource.com/platform/system/adb/+/refs/heads/master/NOTICE)-licensed universal Android utilities +- The [Android SDK Platform Tools](https://developer.android.com/studio/releases/platform-tools) (such as adb and fastboot) are [Apache](https://android.googlesource.com/platform/system/adb/+/refs/heads/master/NOTICE)-licensed universal Android utilities. - [Heimdall](https://gitlab.com/BenjaminDobell/Heimdall) is an [MIT](https://gitlab.com/BenjaminDobell/Heimdall/-/blob/master/LICENSE)-licensed replacement for the leaked ODIN tool to flash Samsung devices. - [libusb-1.0](https://github.com/libusb/libusb) is a [LGPL-2.1](https://github.com/libusb/libusb/blob/master/COPYING)-licensed library for USB device access from Linux, macOS, Windows and others. - [copy-partitions-20220613-signed.zip](https://mirrorbits.lineageos.org/tools/copy-partitions-20220613-signed.zip) The copy-partitions script was created by LineageOS developer erfanoabdi and filipepferraz and released under LGPL. It is used when the partitions need to be copied before flashing. From 1df1dc50430b343189c5218fe08d64c47c78b252 Mon Sep 17 00:00:00 2001 From: SirRGB Date: Sun, 19 Nov 2023 23:09:20 +0100 Subject: [PATCH 05/27] add oneplus3 support * asserts taken from https://github.com/LineageOS/android_device_oneplus_oneplus3/blob/e975bda0561217fae2a342c2e8c1848b3e3cf370/BoardConfig.mk#L35C29-L35C66 * copied config from cheeseburger Signed-off-by: SirRGB --- README.md | 1 + .../assets/configs/oneplus3.yaml | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 openandroidinstaller/assets/configs/oneplus3.yaml diff --git a/README.md b/README.md index 43569045..5ac3db04 100644 --- a/README.md +++ b/README.md @@ -163,6 +163,7 @@ Motorola | moto z | [griffin](https://wiki.lineageos.org/devices/griffin) | XT16 Vendor | Device Name | CodeName | Models | Status ---|---|---|---|--- OnePlus | One | [bacon](https://wiki.lineageos.org/devices/bacon) | A0001 | tested +OnePlus | 3/3T | [oneplus3](https://wiki.lineageos.org/devices/oneplus3) | A3003, A3000, A3010 | untested OnePlus | 5 | [cheeseburger](https://wiki.lineageos.org/devices/cheeseburger) | A5000 | tested OnePlus | 5T | [dumpling](https://wiki.lineageos.org/devices/dumpling) | A5010 | tested OnePlus | 6 | [enchilada](https://wiki.lineageos.org/devices/enchilada) | A6000, A6003 | tested diff --git a/openandroidinstaller/assets/configs/oneplus3.yaml b/openandroidinstaller/assets/configs/oneplus3.yaml new file mode 100644 index 00000000..5a2ce6d4 --- /dev/null +++ b/openandroidinstaller/assets/configs/oneplus3.yaml @@ -0,0 +1,41 @@ +metadata: + maintainer: SirRGB + device_name: OnePlus 3/3T + is_ab_device: false + device_code: oneplus3 + supported_device_codes: + - OnePlus3 + - oneplus3 + - OnePlus3T + - oneplus3t + untested: true +requirements: + android: 9 +steps: + unlock_bootloader: + - type: call_button + content: > + As a first step, you need to unlock the bootloader. A bootloader is the piece of software, that tells your phone + how to start and run an operating system (like Android). Your device should be turned on. + Press 'Confirm and run' to reboot into the bootloader. + command: adb_reboot_bootloader + - type: call_button + content: > + In this step you actually unlock the bootloader. Just press 'Confirm and run' here. The phone will automatically reboot and reformat. + Once it's done, press continue here. + command: fastboot_oem_unlock + - type: confirm_button + content: > + The bootloader is now unlocked. Since the device resets completely, you will need to re-enable Developer Options and USB debugging to continue. + boot_recovery: + - type: call_button + content: > + Now you need to boot a custom recovery system on the phone. A recovery is a small subsystem on your phone, that manages updating, + adapting and repairing of the operating system. + Make sure your device is turned on. You need to reboot into the bootloader again by pressing 'Confirm and run' here. Then continue. + command: adb_reboot_bootloader + - type: call_button + img: twrp-start.jpeg + content: > + Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. + command: fastboot_boot_recovery From 16fecfe877797b138376d4183dfa3ef842cebf1f Mon Sep 17 00:00:00 2001 From: SirRGB Date: Mon, 20 Nov 2023 09:40:09 +0100 Subject: [PATCH 06/27] sync griffin asserts * taken from https://github.com/LineageOS/android_device_motorola_griffin/blob/6cccefc9100816f51d962e767559ffa8e050a7e3/BoardConfig.mk#L35 --- openandroidinstaller/assets/configs/griffin.yaml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/openandroidinstaller/assets/configs/griffin.yaml b/openandroidinstaller/assets/configs/griffin.yaml index 391857fb..22b35144 100644 --- a/openandroidinstaller/assets/configs/griffin.yaml +++ b/openandroidinstaller/assets/configs/griffin.yaml @@ -5,6 +5,12 @@ metadata: device_code: griffin supported_device_codes: - griffin + - griffin_cn + - sheridan + - xt1650 + - xt1650-01 + - xt1650-03 + - xt1650-05 steps: unlock_bootloader: - type: call_button @@ -49,4 +55,4 @@ steps: img: twrp-start.jpeg content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery From 6a839c3da996d713afffdb96b2ff3716cab8ad4f Mon Sep 17 00:00:00 2001 From: SirRGB Date: Mon, 20 Nov 2023 09:45:21 +0100 Subject: [PATCH 07/27] sync herolte/hero2lte asserts * taken from https://github.com/LineageOS/android_device_samsung_herolte/blob/583c038ee30afc2c2d11520c9e24ec50f2f24164/BoardConfig.mk#L22 * and https://github.com/LineageOS/android_device_samsung_hero2lte/blob/f225e6a0bb4fd3b39d04ff003c93ca4dab408cf8/BoardConfig.mk#L22 * fixes https://github.com/openandroidinstaller-dev/openandroidinstaller/issues/308 Signed-off-by: SirRGB --- .../assets/configs/hero2lte.yaml | 19 ++++++++++++------- .../assets/configs/herolte.yaml | 18 +++++++++++------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/openandroidinstaller/assets/configs/hero2lte.yaml b/openandroidinstaller/assets/configs/hero2lte.yaml index e6371f81..aea0d6c0 100644 --- a/openandroidinstaller/assets/configs/hero2lte.yaml +++ b/openandroidinstaller/assets/configs/hero2lte.yaml @@ -2,16 +2,21 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy S7 Edge is_ab_device: false - device_code: hero2lte + device_code: hero2lte supported_device_codes: - - hero2lte + - hero2lte + - hero2ltebmc + - hero2lteskt + - hero2ltektt + - hero2ltelgt + - hero2ltexx steps: unlock_bootloader: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -22,6 +27,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power button*. diff --git a/openandroidinstaller/assets/configs/herolte.yaml b/openandroidinstaller/assets/configs/herolte.yaml index 152485f7..559a00f3 100644 --- a/openandroidinstaller/assets/configs/herolte.yaml +++ b/openandroidinstaller/assets/configs/herolte.yaml @@ -2,17 +2,21 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy S7 is_ab_device: false - device_code: herolte + device_code: herolte supported_device_codes: - - herolte + - herolte - heroltexx + - heroltebmc + - herolteskt + - heroltektt + - heroltelgt steps: unlock_bootloader: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -23,6 +27,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power button*. From 12a3813947df7f00e4927b43a841b9e8d2d23657 Mon Sep 17 00:00:00 2001 From: SirRGB Date: Mon, 20 Nov 2023 10:46:51 +0100 Subject: [PATCH 08/27] add motorola model names * taken from the lineage wiki Signed-off-by: SirRGB --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index b15b3c82..43569045 100644 --- a/README.md +++ b/README.md @@ -148,13 +148,13 @@ Fairphone | Fairphone 4 | [FP4](https://wiki.lineageos.org/devices/FP4) | | test Vendor | Device Name | CodeName | Models | Status ---|---|---|---|--- -Motorola | edge | [racer](https://wiki.lineageos.org/devices/racer) | | tested -Motorola | moto g5 | [cedric](https://wiki.lineageos.org/devices/cedric) | | tested -Motorola | moto g6 plus | [evert](https://wiki.lineageos.org/devices/evert) | | tested -Motorola | moto g7 power | [ocean](https://wiki.lineageos.org/devices/ocean) | | tested -Motorola | moto g 5G plus / one 5G | [nairo](https://wiki.lineageos.org/devices/nairo) | | tested -Motorola | moto g 5G / one 5G ace | [kiev](https://wiki.lineageos.org/devices/kiev) | | tested -Motorola | moto z | [griffin](https://wiki.lineageos.org/devices/griffin) | | tested +Motorola | edge | [racer](https://wiki.lineageos.org/devices/racer) | XT2063-2, XT2063-3 | tested +Motorola | moto g5 | [cedric](https://wiki.lineageos.org/devices/cedric) | XT1670, XT1671, XT1672, XT1675, XT1676, XT1677 | tested +Motorola | moto g6 plus | [evert](https://wiki.lineageos.org/devices/evert) | XT1926-2, XT1926-3, XT1926-5, XT1926-6, XT1926-7, XT1926-8, XT1926-9 | tested +Motorola | moto g7 power | [ocean](https://wiki.lineageos.org/devices/ocean) | XT1955-1, XT1955-2, XT1955-4, XT1955-5, XT1955-7 | tested +Motorola | moto g 5G plus / one 5G | [nairo](https://wiki.lineageos.org/devices/nairo) | XT2075-3, XT2075-5 | tested +Motorola | moto g 5G / one 5G ace | [kiev](https://wiki.lineageos.org/devices/kiev) | XT2113-2, XT2113-3 | tested +Motorola | moto z | [griffin](https://wiki.lineageos.org/devices/griffin) | XT1650-3, XT1650-05 | tested From 87acb8216ca4e0da32b94184e6234b045426a0ba Mon Sep 17 00:00:00 2001 From: SirRGB Date: Thu, 23 Nov 2023 14:51:50 +0100 Subject: [PATCH 09/27] correct xdaforums link preview * missed when updating xda links. Signed-off-by: SirRGB --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 43569045..d563f15a 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ Linux is currently the best supported platform (tested with Ubuntu 20.04/22.04 L - [MicroG](https://microg.org) - The recommended way to install MicroG is to use the zip file provided here: [https://github.com/FriendlyNeighborhoodShane/MinMicroG-abuse-CI/releases](https://github.com/FriendlyNeighborhoodShane/MinMicroG-abuse-CI/releases). - [F-Droid App-Store](https://f-droid.org/en/packages/org.fdroid.fdroid.privileged.ota). - - or you can just search the web or the [xda-developers forum](https://xdaforums.com) for an appropriate version for your device. + - or you can just search the web or the [xdaforums](https://xdaforums.com) for an appropriate version for your device. 3. Start the desktop app and follow the instructions. ## Officially supported devices From 19490cf8062a7a908d541a0c573892dd32d43634 Mon Sep 17 00:00:00 2001 From: SirRGB Date: Tue, 21 Nov 2023 12:56:52 +0100 Subject: [PATCH 10/27] sync dre asserts * taken from https://github.com/LineageOS/android_device_oneplus_dre/blob/110bdcd8a72974f032746b71fd3865e484382739/BoardConfig.mk#L47 * fixes https://github.com/openandroidinstaller-dev/openandroidinstaller/issues/332 * exclude OnePlusN200TMO for now, see https://github.com/openandroidinstaller-dev/openandroidinstaller/issues/320 Signed-off-by: SirRGB --- openandroidinstaller/assets/configs/dre.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/openandroidinstaller/assets/configs/dre.yaml b/openandroidinstaller/assets/configs/dre.yaml index 366ea8a0..b3f39be7 100644 --- a/openandroidinstaller/assets/configs/dre.yaml +++ b/openandroidinstaller/assets/configs/dre.yaml @@ -6,6 +6,7 @@ metadata: supported_device_codes: - dre - NordN200 + - OnePlusN200 additional_steps: - dtbo - vbmeta @@ -26,7 +27,7 @@ steps: Once it's done, press continue here. command: fastboot_oem_unlock - type: confirm_button - content: > + content: > The bootloader is now unlocked. Since the device resets completely, you will need to re-enable Developer Options and USB debugging to continue. boot_recovery: - type: call_button @@ -49,4 +50,4 @@ steps: img: twrp-start.jpeg content: > Now we need to boot into recovery again. Press run and when you see the TWRP screen you can continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery From 7d5e8f59675b17fb1aeb3d953cfcd144fc4136e6 Mon Sep 17 00:00:00 2001 From: SirRGB Date: Tue, 21 Nov 2023 13:08:39 +0100 Subject: [PATCH 11/27] sync a3y17lte asserts * taken from https://github.com/samsungexynos7870/android_device_samsung_a3y17lte/blob/a3fe3bc73c685eff23810b4e9dde54b73cba8a54/BoardConfig.mk#L29 Signed-off-by: SirRGB --- openandroidinstaller/assets/configs/a3y17lte.yaml | 11 +++++++---- openandroidinstaller/assets/configs/j7elte.yaml | 12 ++++++------ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/openandroidinstaller/assets/configs/a3y17lte.yaml b/openandroidinstaller/assets/configs/a3y17lte.yaml index 5818557a..320c2a84 100644 --- a/openandroidinstaller/assets/configs/a3y17lte.yaml +++ b/openandroidinstaller/assets/configs/a3y17lte.yaml @@ -1,10 +1,13 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy A3 (2017) - is_ab_device: false + is_ab_device: false device_code: a3y17lte supported_device_codes: - a3y17lte + - a3y17ltexc + - a3y17ltexx + - a3y17ltelk steps: unlock_bootloader: boot_recovery: @@ -22,6 +25,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for - 8~10 seconds until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power*. Confirm when the recovery screen appears. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for + 8~10 seconds until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power*. Confirm when the recovery screen appears. diff --git a/openandroidinstaller/assets/configs/j7elte.yaml b/openandroidinstaller/assets/configs/j7elte.yaml index ca66f630..c6fd0f5a 100644 --- a/openandroidinstaller/assets/configs/j7elte.yaml +++ b/openandroidinstaller/assets/configs/j7elte.yaml @@ -2,7 +2,7 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy J7 (2015) is_ab_device: false - device_code: j7elte + device_code: j7elte supported_device_codes: - j7elte - j7eltetmo @@ -12,8 +12,8 @@ steps: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -24,6 +24,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power button*. From b6d1e4f6c0c13d28a0af03246cb69a14658b3d20 Mon Sep 17 00:00:00 2001 From: SirRGB Date: Tue, 21 Nov 2023 13:11:03 +0100 Subject: [PATCH 12/27] sync a5xelte asserts * https://github.com/LineageOS/android_device_samsung_a5xelte/blob/78495ee6b310a5cda4175235dd5d694ce1b0470f/BoardConfig.mk#L22 Signed-off-by: SirRGB --- openandroidinstaller/assets/configs/a5xelte.yaml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/openandroidinstaller/assets/configs/a5xelte.yaml b/openandroidinstaller/assets/configs/a5xelte.yaml index 4703d37d..e67b1600 100644 --- a/openandroidinstaller/assets/configs/a5xelte.yaml +++ b/openandroidinstaller/assets/configs/a5xelte.yaml @@ -1,17 +1,20 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy A5 (2016) - is_ab_device: false + is_ab_device: false device_code: a5xelte supported_device_codes: - a5xelte + - a5xeltexx + - a5xelteub + - a5xeltedo steps: unlock_bootloader: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -22,6 +25,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power button*. From 56c035a66448531f6ad64259b2f54510bf215fbb Mon Sep 17 00:00:00 2001 From: SirRGB Date: Tue, 21 Nov 2023 13:14:39 +0100 Subject: [PATCH 13/27] sync a7xelte asserts * taken from https://github.com/LineageOS/android_device_samsung_a7xelte/blob/3990846fac27c112d038fb67eacd414c8e5dadb2/BoardConfig.mk#L22 Signed-off-by: SirRGB --- openandroidinstaller/assets/configs/a72q.yaml | 16 ++++++++-------- .../assets/configs/a7xelte.yaml | 17 ++++++++++------- openandroidinstaller/assets/configs/alioth.yaml | 14 +++++++------- openandroidinstaller/assets/configs/dipper.yaml | 14 +++++++------- openandroidinstaller/assets/configs/surya.yaml | 14 +++++++------- 5 files changed, 39 insertions(+), 36 deletions(-) diff --git a/openandroidinstaller/assets/configs/a72q.yaml b/openandroidinstaller/assets/configs/a72q.yaml index 0837aad6..a6d964d2 100644 --- a/openandroidinstaller/assets/configs/a72q.yaml +++ b/openandroidinstaller/assets/configs/a72q.yaml @@ -1,17 +1,17 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy A72 - is_ab_device: false - device_code: a72q + is_ab_device: false + device_code: a72q supported_device_codes: - - a72q + - a72q steps: unlock_bootloader: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -22,6 +22,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Power button*. diff --git a/openandroidinstaller/assets/configs/a7xelte.yaml b/openandroidinstaller/assets/configs/a7xelte.yaml index a53e2108..3198beb6 100644 --- a/openandroidinstaller/assets/configs/a7xelte.yaml +++ b/openandroidinstaller/assets/configs/a7xelte.yaml @@ -1,17 +1,20 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - device_name: Samsung Galaxy A7 (2016) - is_ab_device: false + device_name: Samsung Galaxy A7 (2016) + is_ab_device: false device_code: a7xelte supported_device_codes: - a7xelte + - a7xeltexx + - a7xelteub + - a7xeltedo steps: unlock_bootloader: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -22,6 +25,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power button*. diff --git a/openandroidinstaller/assets/configs/alioth.yaml b/openandroidinstaller/assets/configs/alioth.yaml index 730aeffa..7c0a2de1 100644 --- a/openandroidinstaller/assets/configs/alioth.yaml +++ b/openandroidinstaller/assets/configs/alioth.yaml @@ -21,17 +21,17 @@ steps: - type: link_button_with_confirm content: > - Create a Mi account on Xiaomi’s website. Beware that one account is only allowed to unlock one unique device every 30 days. - + - Add a phone number to your Mi account, insert a SIM into your phone. - + - Enable developer options in `Settings` > `About Phone` by repeatedly tapping MIUI Version. - + - Link the device to your Mi account in `Settings` > `Additional settings` > `Developer options` > `Mi Unlock status`. - + - Download the Mi Unlock app with the link bellow (Windows is required to run the app), and follow the instructions provided by the app. It may tell you that you have to wait, usually 7 days. If it does so, please wait the quoted amount of time before continuing to the next step! - + - After device and Mi account are successfully verified, the bootloader should be unlocked. - + - Since the device resets completely, you will need to re-enable USB debugging to continue : `Settings` > `Additional settings` > `Developer options` > `USB debugging` link: https://en.miui.com/unlock/download_en.html boot_recovery: @@ -39,7 +39,7 @@ steps: content: > Now you need to install a custom recovery system on the phone. A recovery is a small subsystem on your phone, that manages updating, adapting and repairing of the operating system. - + Once the device is fully booted, you need to reboot into the bootloader again by pressing 'Confirm and run' here. Then continue. command: adb_reboot_bootloader - type: call_button diff --git a/openandroidinstaller/assets/configs/dipper.yaml b/openandroidinstaller/assets/configs/dipper.yaml index 83ffc12a..e16b1cb6 100644 --- a/openandroidinstaller/assets/configs/dipper.yaml +++ b/openandroidinstaller/assets/configs/dipper.yaml @@ -20,17 +20,17 @@ steps: - type: link_button_with_confirm content: > - Create a Mi account on Xiaomi’s website. Beware that one account is only allowed to unlock one unique device every 30 days. - + - Add a phone number to your Mi account, insert a SIM into your phone. - + - Enable developer options in `Settings` > `About Phone` by repeatedly tapping MIUI Version. - + - Link the device to your Mi account in `Settings` > `Additional settings` > `Developer options` > `Mi Unlock status`. - + - Download the Mi Unlock app with the link bellow (Windows is required to run the app), and follow the instructions provided by the app. It may tell you that you have to wait, usually 7 days. If it does so, please wait the quoted amount of time before continuing to the next step! - + - After device and Mi account are successfully verified, the bootloader should be unlocked. - + - Since the device resets completely, you will need to re-enable USB debugging to continue : `Settings` > `Additional settings` > `Developer options` > `USB debugging` link: https://en.miui.com/unlock/download_en.html boot_recovery: @@ -52,4 +52,4 @@ steps: Reboot to recovery by pressing 'Confirm and run', and hold the Vol+ button of your phone UNTIL you see the recovery. If MiUI starts, you have to start the process again, since MiUI delete the recovery you just flashed. Once it's done continue. - command: fastboot_reboot_recovery \ No newline at end of file + command: fastboot_reboot_recovery diff --git a/openandroidinstaller/assets/configs/surya.yaml b/openandroidinstaller/assets/configs/surya.yaml index 8c539ff4..733ef682 100644 --- a/openandroidinstaller/assets/configs/surya.yaml +++ b/openandroidinstaller/assets/configs/surya.yaml @@ -17,17 +17,17 @@ steps: - type: link_button_with_confirm content: > - Create a Mi account on Xiaomi’s website. Beware that one account is only allowed to unlock one unique device every 30 days. - + - Add a phone number to your Mi account, insert a SIM into your phone. - + - Enable developer options in `Settings` > `About Phone` by repeatedly tapping MIUI Version. - + - Link the device to your Mi account in `Settings` > `Additional settings` > `Developer options` > `Mi Unlock status`. - + - Download the Mi Unlock app with the link bellow (Windows is required to run the app), and follow the instructions provided by the app. It may tell you that you have to wait, usually 7 days. If it does so, please wait the quoted amount of time before continuing to the next step! - + - After device and Mi account are successfully verified, the bootloader should be unlocked. - + - Since the device resets completely, you will need to re-enable USB debugging to continue : `Settings` > `Additional settings` > `Developer options` > `USB debugging` link: https://en.miui.com/unlock/download_en.html boot_recovery: @@ -49,4 +49,4 @@ steps: Reboot to recovery by pressing 'Confirm and run', and hold the Vol+ button of your phone UNTIL you see the recovery. If MiUI starts, you have to start the process again, since MiUI delete the recovery you just flashed. Once it's done continue. - command: fastboot_reboot_recovery \ No newline at end of file + command: fastboot_reboot_recovery From c2423bf992a29100cbd4b3b7796c17c0c0fb3778 Mon Sep 17 00:00:00 2001 From: SirRGB Date: Tue, 21 Nov 2023 13:26:27 +0100 Subject: [PATCH 14/27] sync cheeseburger asserts * taken from https://github.com/LineageOS/android_device_oneplus_cheeseburger/blob/093e9c7fa2e974092730b34b6390d32a2a124465/BoardConfig.mk#L14 Signed-off-by: SirRGB --- openandroidinstaller/assets/configs/akari.yaml | 10 +++++----- openandroidinstaller/assets/configs/avicii.yaml | 6 +++--- openandroidinstaller/assets/configs/bacon.yaml | 6 +++--- openandroidinstaller/assets/configs/barbet.yaml | 8 ++++---- openandroidinstaller/assets/configs/beyond0lte.yaml | 10 +++++----- openandroidinstaller/assets/configs/beyond1lte.yaml | 12 ++++++------ openandroidinstaller/assets/configs/beyond2lte.yaml | 10 +++++----- openandroidinstaller/assets/configs/cedric.yaml | 8 ++++---- .../assets/configs/cheeseburger.yaml | 1 + 9 files changed, 36 insertions(+), 35 deletions(-) diff --git a/openandroidinstaller/assets/configs/akari.yaml b/openandroidinstaller/assets/configs/akari.yaml index a2833faf..b781b0b4 100644 --- a/openandroidinstaller/assets/configs/akari.yaml +++ b/openandroidinstaller/assets/configs/akari.yaml @@ -2,9 +2,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Sony Xperia XZ2 is_ab_device: true - device_code: akari + device_code: akari supported_device_codes: - - akari + - akari requirements: android: 10 steps: @@ -21,7 +21,7 @@ steps: - type: link_button_with_confirm content: > Click on the button to open the instructions on Sonys official unlocking website to generate an unlock code for your bootloader. - Once you got the code write it down somewhere and continue to input the code. + Once you got the code write it down somewhere and continue to input the code. link: https://developer.sonymobile.com/unlockbootloader/unlock-yourboot-loader/ - type: confirm_button content: > @@ -37,7 +37,7 @@ steps: command: fastboot_unlock_with_code - type: call_button content: > - Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. + Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. Connect your device to your PC via USB. Then confirm here to continue. command: fastboot_reboot boot_recovery: @@ -59,4 +59,4 @@ steps: - type: call_button content: > Now we need to boot into recovery again. Press run and when you see the TWRP screen you can continue. - command: fastboot_flash_boot \ No newline at end of file + command: fastboot_flash_boot diff --git a/openandroidinstaller/assets/configs/avicii.yaml b/openandroidinstaller/assets/configs/avicii.yaml index 9befd3fb..994aadb7 100644 --- a/openandroidinstaller/assets/configs/avicii.yaml +++ b/openandroidinstaller/assets/configs/avicii.yaml @@ -25,7 +25,7 @@ steps: Once it's done, press continue here. command: fastboot_oem_unlock - type: confirm_button - content: > + content: > The bootloader is now unlocked. Since the device resets completely, you will need to re-enable Developer Options and USB debugging to continue. boot_recovery: - type: call_button @@ -37,7 +37,7 @@ steps: - type: call_button content: > Install additional partitions selected before by pressing 'Confirm and run'. Once it's done continue. - + Note : If you have not selected additional partitions it will do nothing and is save to continue. command: fastboot_flash_additional_partitions - type: call_button @@ -54,4 +54,4 @@ steps: img: twrp-start.jpeg content: > Now we need to boot into recovery again. Press run and when you see the TWRP screen you can continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/bacon.yaml b/openandroidinstaller/assets/configs/bacon.yaml index 43dc97e7..ca1a5555 100644 --- a/openandroidinstaller/assets/configs/bacon.yaml +++ b/openandroidinstaller/assets/configs/bacon.yaml @@ -21,12 +21,12 @@ steps: content: > In this step you actually unlock the bootloader. Just press 'Confirm and run' here. The phone will automatically reboot and reformat. Once it's done, press continue here. - + Notice: If you don't have the stock OnePlus One recovery, your device might boot into your custom recovery, but don't do anything / throw an error. If this appears, reboot you device through your bootloader and just continue normally. (Your bootloader will be unlocked.) command: fastboot_oem_unlock - type: confirm_button - content: > + content: > The bootloader is now unlocked. Since the device resets completely, you will need to re-enable Developer Options and USB debugging to continue. You don't need to re-enable those options, if you have a custom recovery. (See last step.) When you are done, press continue. @@ -41,4 +41,4 @@ steps: img: twrp-start.jpeg content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/barbet.yaml b/openandroidinstaller/assets/configs/barbet.yaml index 17fff981..36301150 100644 --- a/openandroidinstaller/assets/configs/barbet.yaml +++ b/openandroidinstaller/assets/configs/barbet.yaml @@ -2,9 +2,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Pixel 5a is_ab_device: true - device_code: barbet + device_code: barbet supported_device_codes: - - barbet + - barbet requirements: android: 12.1.0 steps: @@ -37,7 +37,7 @@ steps: content: > The bootloader is now unlocked. Since the device resets completely, you will need to re-enable USB debugging to continue. boot_recovery: - - type: confirm_button + - type: confirm_button content: > Now you need to boot a custom recovery system on the phone. A recovery is a small subsystem on your phone, that manages updating, adapting and repairing of the operating system. @@ -52,4 +52,4 @@ steps: img: twrp-start.jpeg content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/beyond0lte.yaml b/openandroidinstaller/assets/configs/beyond0lte.yaml index ffbcd414..adb472a1 100644 --- a/openandroidinstaller/assets/configs/beyond0lte.yaml +++ b/openandroidinstaller/assets/configs/beyond0lte.yaml @@ -2,7 +2,7 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy S10e is_ab_device: false - device_code: beyond0lte + device_code: beyond0lte supported_device_codes: - beyond0lte - beyond0 @@ -28,7 +28,7 @@ steps: boot_recovery: - type: call_button content: > - Now plug the USB-cable to your device. As a first step, you need to boot into download mode. Your device should be turned on. + Now plug the USB-cable to your device. As a first step, you need to boot into download mode. Your device should be turned on. Then press 'Confirm and run' to reboot into download mode. Continue once it's done. command: adb_reboot_download - type: call_button @@ -39,6 +39,6 @@ steps: - type: confirm_button img: samsung-buttons-bixby.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Bixby* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Bixby* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Bixby* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Bixby* + *Power button*. diff --git a/openandroidinstaller/assets/configs/beyond1lte.yaml b/openandroidinstaller/assets/configs/beyond1lte.yaml index f83f9740..501516dd 100644 --- a/openandroidinstaller/assets/configs/beyond1lte.yaml +++ b/openandroidinstaller/assets/configs/beyond1lte.yaml @@ -1,8 +1,8 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy S10 - is_ab_device: false - device_code: beyond1lte + is_ab_device: false + device_code: beyond1lte supported_device_codes: - beyond1lte - beyond1 @@ -28,7 +28,7 @@ steps: boot_recovery: - type: call_button content: > - Now plug the USB-cable to your device. As a first step, you need to boot into download mode. Your device should be turned on. + Now plug the USB-cable to your device. As a first step, you need to boot into download mode. Your device should be turned on. Then press 'Confirm and run' to reboot into download mode. Continue once it's done. command: adb_reboot_download - type: call_button @@ -39,6 +39,6 @@ steps: - type: confirm_button img: samsung-buttons-bixby.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Bixby* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Bixby* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Bixby* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Bixby* + *Power button*. diff --git a/openandroidinstaller/assets/configs/beyond2lte.yaml b/openandroidinstaller/assets/configs/beyond2lte.yaml index 73dee942..e70a1e47 100644 --- a/openandroidinstaller/assets/configs/beyond2lte.yaml +++ b/openandroidinstaller/assets/configs/beyond2lte.yaml @@ -2,9 +2,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy S10+ is_ab_device: false - device_code: beyond2lte + device_code: beyond2lte supported_device_codes: - - beyond2lte + - beyond2lte - beyond2 requirements: android: 12 @@ -28,7 +28,7 @@ steps: boot_recovery: - type: call_button content: > - Now plug the USB-cable to your device. As a first step, you need to boot into download mode. Your device should be turned on. + Now plug the USB-cable to your device. As a first step, you need to boot into download mode. Your device should be turned on. Then press 'Confirm and run' to reboot into download mode. Continue once it's done. command: adb_reboot_download - type: call_button @@ -39,6 +39,6 @@ steps: - type: confirm_button img: samsung-buttons-bixby.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Bixby* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Bixby* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, hold *Volume Up* + *Bixby* + *Power button*. diff --git a/openandroidinstaller/assets/configs/cedric.yaml b/openandroidinstaller/assets/configs/cedric.yaml index 809f96fd..10e1ce2b 100644 --- a/openandroidinstaller/assets/configs/cedric.yaml +++ b/openandroidinstaller/assets/configs/cedric.yaml @@ -7,12 +7,12 @@ metadata: - cedric steps: unlock_bootloader: - - type: call_button + - type: call_button command: adb_reboot_bootloader content: > As a first step, you need to unlock the bootloader of your device. A bootloader is the piece of software, that tells your phone how to start and run an operating system (like Android). You need to boot into fastboot mode by pressing the 'Confirm and run' button. Then continue. - - type: call_button + - type: call_button command: fastboot_get_unlock_data content: > Now you need to get your device ID to get an unlock code from Motorola. Press 'Confirm and run' to get the ID. (You need to toggle 'Advanced Output' here to see it.) @@ -35,7 +35,7 @@ steps: command: fastboot_unlock_with_code - type: call_button content: > - Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. + Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. Connect your device to your PC via USB. Then confirm here to continue. command: fastboot_reboot boot_recovery: @@ -49,4 +49,4 @@ steps: img: twrp-start.jpeg content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/cheeseburger.yaml b/openandroidinstaller/assets/configs/cheeseburger.yaml index 8bd880cc..5cb93487 100644 --- a/openandroidinstaller/assets/configs/cheeseburger.yaml +++ b/openandroidinstaller/assets/configs/cheeseburger.yaml @@ -6,6 +6,7 @@ metadata: supported_device_codes: - cheeseburger - OnePlus5 + - oneplus5 twrp-link: cheeseburger_dumpling requirements: android: 10 From 676204518a0e9fa53472a5dc0af8968f13de6004 Mon Sep 17 00:00:00 2001 From: SirRGB Date: Tue, 21 Nov 2023 13:35:29 +0100 Subject: [PATCH 15/27] sync dumpling asserts * taken from https://github.com/LineageOS/android_device_oneplus_dumpling/blob/9842f9ab9ad623f572fa936610e3c5772ecedda4/BoardConfig.mk#L14 Signed-off-by: SirRGB --- openandroidinstaller/assets/configs/coral.yaml | 6 +++--- .../assets/configs/crownlte.yaml | 16 ++++++++-------- openandroidinstaller/assets/configs/d1.yaml | 12 ++++++------ openandroidinstaller/assets/configs/d2s.yaml | 10 +++++----- .../assets/configs/dreamlte.yaml | 6 +++--- .../assets/configs/dumpling.yaml | 1 + 6 files changed, 26 insertions(+), 25 deletions(-) diff --git a/openandroidinstaller/assets/configs/coral.yaml b/openandroidinstaller/assets/configs/coral.yaml index 99b2f176..a150ffe4 100644 --- a/openandroidinstaller/assets/configs/coral.yaml +++ b/openandroidinstaller/assets/configs/coral.yaml @@ -39,7 +39,7 @@ steps: content: > The bootloader is now unlocked. Since the device resets completely, you will need to re-enable USB debugging to continue. boot_recovery: - - type: confirm_button + - type: confirm_button content: > Now you need to boot a custom recovery system on the phone. A recovery is a small subsystem on your phone, that manages updating, adapting and repairing of the operating system. @@ -53,11 +53,11 @@ steps: - type: call_button content: > When you are in the bootloder, install additional partitions selected before by pressing 'Confirm and run'. Once it's done continue. - + Note : If you have not selected additional partitions it will do nothing and is save to continue. command: fastboot_flash_additional_partitions - type: call_button img: twrp-start.jpeg content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/crownlte.yaml b/openandroidinstaller/assets/configs/crownlte.yaml index 1daf6738..e8d4a5f7 100644 --- a/openandroidinstaller/assets/configs/crownlte.yaml +++ b/openandroidinstaller/assets/configs/crownlte.yaml @@ -1,10 +1,10 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - device_name: Samsung Galaxy Note 9 + device_name: Samsung Galaxy Note 9 is_ab_device: false - device_code: crownlte + device_code: crownlte supported_device_codes: - - crownlte + - crownlte requirements: android: 10 steps: @@ -12,8 +12,8 @@ steps: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -24,6 +24,6 @@ steps: - type: confirm_button img: samsung-buttons-bixby.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Bixby* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Bixby* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Bixby* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Bixby* + *Power button*. diff --git a/openandroidinstaller/assets/configs/d1.yaml b/openandroidinstaller/assets/configs/d1.yaml index 4e2b72f3..f76737f2 100644 --- a/openandroidinstaller/assets/configs/d1.yaml +++ b/openandroidinstaller/assets/configs/d1.yaml @@ -2,9 +2,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy Note 10 is_ab_device: false - device_code: d1 + device_code: d1 supported_device_codes: - - d1 + - d1 requirements: android: 12 steps: @@ -27,7 +27,7 @@ steps: boot_recovery: - type: call_button content: > - Now plug the USB-cable to your device. As a first step, you need to boot into download mode. Your device should be turned on. + Now plug the USB-cable to your device. As a first step, you need to boot into download mode. Your device should be turned on. Then press 'Confirm and run' to reboot into download mode. Continue once it's done. command: adb_reboot_download - type: call_button @@ -37,6 +37,6 @@ steps: - type: confirm_button img: samsung-buttons-bixby.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Bixby* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Bixby* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Bixby* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Bixby* + *Power button*. diff --git a/openandroidinstaller/assets/configs/d2s.yaml b/openandroidinstaller/assets/configs/d2s.yaml index 362d0083..d3008885 100644 --- a/openandroidinstaller/assets/configs/d2s.yaml +++ b/openandroidinstaller/assets/configs/d2s.yaml @@ -2,7 +2,7 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy Note 10+ is_ab_device: false - device_code: d2s + device_code: d2s supported_device_codes: - d2s requirements: @@ -27,7 +27,7 @@ steps: boot_recovery: - type: call_button content: > - Now plug the USB-cable to your device. As a first step, you need to boot into download mode. Your device should be turned on. + Now plug the USB-cable to your device. As a first step, you need to boot into download mode. Your device should be turned on. Then press 'Confirm and run' to reboot into download mode. Continue once it's done. command: adb_reboot_download - type: call_button @@ -38,6 +38,6 @@ steps: - type: confirm_button img: samsung-buttons-bixby.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Bixby* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Bixby* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Bixby* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Bixby* + *Power button*. diff --git a/openandroidinstaller/assets/configs/dreamlte.yaml b/openandroidinstaller/assets/configs/dreamlte.yaml index 88de8897..c02f8eae 100644 --- a/openandroidinstaller/assets/configs/dreamlte.yaml +++ b/openandroidinstaller/assets/configs/dreamlte.yaml @@ -13,8 +13,8 @@ steps: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -25,5 +25,5 @@ steps: - type: confirm_button img: samsung-buttons-bixby.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds until the screen turns black to reboot & release the buttons immediately when it does, then immediately hold *Volume Up* + *Bixby* + *Power button* until you are in recovery mode. diff --git a/openandroidinstaller/assets/configs/dumpling.yaml b/openandroidinstaller/assets/configs/dumpling.yaml index 79526e60..0aca961f 100644 --- a/openandroidinstaller/assets/configs/dumpling.yaml +++ b/openandroidinstaller/assets/configs/dumpling.yaml @@ -6,6 +6,7 @@ metadata: supported_device_codes: - dumpling - OnePlus5T + - oneplus5t twrp-link: cheeseburger_dumpling requirements: android: 10 From 88baae2c5da154ee53a6a8bd62a6291d2c9d2661 Mon Sep 17 00:00:00 2001 From: SirRGB Date: Tue, 21 Nov 2023 13:51:32 +0100 Subject: [PATCH 16/27] sync hltemo asserts * taken from https://github.com/LineageOS/android_device_samsung_hltetmo/blob/0bd9fb6ddcc6f2ccadff01e495315218d6b5ddc4/BoardConfig.mk#L19 Signed-off-by: SirRGB --- openandroidinstaller/assets/configs/FP2.yaml | 6 +++--- openandroidinstaller/assets/configs/FP3.yaml | 4 ++-- openandroidinstaller/assets/configs/FP4.yaml | 4 ++-- openandroidinstaller/assets/configs/enchilada.yaml | 6 +++--- openandroidinstaller/assets/configs/evert.yaml | 8 ++++---- openandroidinstaller/assets/configs/flame.yaml | 8 ++++---- .../assets/configs/grandprimevelte.yaml | 10 +++++----- openandroidinstaller/assets/configs/greatlte.yaml | 12 ++++++------ .../assets/configs/gts210vewifi.yaml | 14 +++++++------- .../assets/configs/guacamoleb.yaml | 3 ++- openandroidinstaller/assets/configs/hltetmo.yaml | 14 +++++++++----- 11 files changed, 47 insertions(+), 42 deletions(-) diff --git a/openandroidinstaller/assets/configs/FP2.yaml b/openandroidinstaller/assets/configs/FP2.yaml index e0b32a05..e421a59d 100644 --- a/openandroidinstaller/assets/configs/FP2.yaml +++ b/openandroidinstaller/assets/configs/FP2.yaml @@ -10,13 +10,13 @@ steps: boot_recovery: - type: call_button content: > - Now you need to boot a custom recovery system on the phone. A recovery is a small subsystem on your phone, that manages updating, + Now you need to boot a custom recovery system on the phone. A recovery is a small subsystem on your phone, that manages updating, adapting and repairing of the operating system. - + Make sure your device is turned on and connected to the computer. Boot into the bootloader by pressing 'Confirm and run' here. Then continue. command: adb_reboot_bootloader - type: call_button img: twrp-start.jpeg content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/FP3.yaml b/openandroidinstaller/assets/configs/FP3.yaml index 1b25061c..6de90c06 100644 --- a/openandroidinstaller/assets/configs/FP3.yaml +++ b/openandroidinstaller/assets/configs/FP3.yaml @@ -45,7 +45,7 @@ steps: content: > The bootloader is now unlocked. Since the device resets completely, you will need to re-enable USB debugging to continue. boot_recovery: - - type: confirm_button + - type: confirm_button content: > Now you need to boot a custom recovery system on the phone. A recovery is a small subsystem on your phone, that manages updating, adapting and repairing of the operating system. @@ -57,4 +57,4 @@ steps: img: twrp-start.jpeg content: > Once the device is in fastboot mode, flash the custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/FP4.yaml b/openandroidinstaller/assets/configs/FP4.yaml index d23501a3..7e14c899 100644 --- a/openandroidinstaller/assets/configs/FP4.yaml +++ b/openandroidinstaller/assets/configs/FP4.yaml @@ -45,7 +45,7 @@ steps: content: > The bootloader is now unlocked. Since the device resets completely, you will need to re-enable USB debugging to continue. boot_recovery: - - type: confirm_button + - type: confirm_button content: > Now you need to boot a custom recovery system on the phone. A recovery is a small subsystem on your phone, that manages updating, adapting and repairing of the operating system. @@ -57,4 +57,4 @@ steps: img: twrp-start.jpeg content: > Once the device is in fastboot mode, boot the custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/enchilada.yaml b/openandroidinstaller/assets/configs/enchilada.yaml index cb859bb0..33f44a1c 100644 --- a/openandroidinstaller/assets/configs/enchilada.yaml +++ b/openandroidinstaller/assets/configs/enchilada.yaml @@ -2,7 +2,7 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: OnePlus 6 is_ab_device: true - device_code: enchilada + device_code: enchilada supported_device_codes: - enchilada - OnePlus6 @@ -22,7 +22,7 @@ steps: Once it's done, press continue here. command: fastboot_oem_unlock - type: confirm_button - content: > + content: > The bootloader is now unlocked. Since the device resets completely, you will need to re-enable Developer Options and USB debugging to continue. boot_recovery: - type: call_button @@ -45,4 +45,4 @@ steps: img: twrp-start.jpeg content: > Now we need to boot into recovery again. Press run and when you see the TWRP screen you can continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/evert.yaml b/openandroidinstaller/assets/configs/evert.yaml index 8b77de36..c717316f 100644 --- a/openandroidinstaller/assets/configs/evert.yaml +++ b/openandroidinstaller/assets/configs/evert.yaml @@ -2,18 +2,18 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Motorola moto g6 plus is_ab_device: true - device_code: evert + device_code: evert supported_device_codes: - evert - evert_n steps: unlock_bootloader: - - type: call_button + - type: call_button command: adb_reboot_bootloader content: > As a first step, you need to unlock the bootloader of your device. A bootloader is the piece of software, that tells your phone how to start and run an operating system (like Android). You need to boot into fastboot mode by pressing the 'Confirm and run' button. Then continue. - - type: call_button + - type: call_button command: fastboot_get_unlock_data content: > Now you need to get your device ID to get an unlock code from Motorola. Press 'Confirm and run' to get the ID. (You need to toggle 'Advanced Output' here to see it.) @@ -36,7 +36,7 @@ steps: command: fastboot_unlock_with_code - type: call_button content: > - Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. + Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. Connect your device to your PC via USB. Then confirm here to continue. command: fastboot_reboot boot_recovery: diff --git a/openandroidinstaller/assets/configs/flame.yaml b/openandroidinstaller/assets/configs/flame.yaml index b8151709..20267b5e 100644 --- a/openandroidinstaller/assets/configs/flame.yaml +++ b/openandroidinstaller/assets/configs/flame.yaml @@ -2,9 +2,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Pixel 4 is_ab_device: true - device_code: flame + device_code: flame supported_device_codes: - - flame + - flame additional_steps: - dtbo requirements: @@ -39,7 +39,7 @@ steps: content: > The bootloader is now unlocked. Since the device resets completely, you will need to re-enable USB debugging to continue. boot_recovery: - - type: confirm_button + - type: confirm_button content: > Now you need to boot a custom recovery system on the phone. A recovery is a small subsystem on your phone, that manages updating, adapting and repairing of the operating system. @@ -54,4 +54,4 @@ steps: img: twrp-start.jpeg content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/grandprimevelte.yaml b/openandroidinstaller/assets/configs/grandprimevelte.yaml index 2ac226c0..ab7cf695 100644 --- a/openandroidinstaller/assets/configs/grandprimevelte.yaml +++ b/openandroidinstaller/assets/configs/grandprimevelte.yaml @@ -13,8 +13,8 @@ steps: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -25,6 +25,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power button*. diff --git a/openandroidinstaller/assets/configs/greatlte.yaml b/openandroidinstaller/assets/configs/greatlte.yaml index 792852fa..920a8504 100644 --- a/openandroidinstaller/assets/configs/greatlte.yaml +++ b/openandroidinstaller/assets/configs/greatlte.yaml @@ -2,16 +2,16 @@ metadata: maintainer: Michel Memeteau (freechelmi) device_name: Samsung Galaxy note 8 is_ab_device: false - device_code: greatlte + device_code: greatlte supported_device_codes: - - greatlte + - greatlte steps: unlock_bootloader: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -22,5 +22,5 @@ steps: - type: confirm_button img: samsung-buttons-bixby.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black to reboot & release the buttons immediately when it does, then immediately hold *Volume Up* + *Bixby* + *Power button* until you are in recovery mode. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + until the screen turns black to reboot & release the buttons immediately when it does, then immediately hold *Volume Up* + *Bixby* + *Power button* until you are in recovery mode. diff --git a/openandroidinstaller/assets/configs/gts210vewifi.yaml b/openandroidinstaller/assets/configs/gts210vewifi.yaml index 502ea606..faaaead7 100644 --- a/openandroidinstaller/assets/configs/gts210vewifi.yaml +++ b/openandroidinstaller/assets/configs/gts210vewifi.yaml @@ -1,7 +1,7 @@ metadata: maintainer: Michel Memeteau (freechelmi) - device_name: Samsung Galaxy Tab S2 (T813 2016) - is_ab_device: false + device_name: Samsung Galaxy Tab S2 (T813 2016) + is_ab_device: false device_code: gts210vewifi supported_device_codes: - gts210vewifi @@ -10,8 +10,8 @@ steps: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -22,6 +22,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power button*. diff --git a/openandroidinstaller/assets/configs/guacamoleb.yaml b/openandroidinstaller/assets/configs/guacamoleb.yaml index 2962717d..5b4230cb 100644 --- a/openandroidinstaller/assets/configs/guacamoleb.yaml +++ b/openandroidinstaller/assets/configs/guacamoleb.yaml @@ -5,7 +5,7 @@ metadata: device_code: guacamoleb supported_device_codes: - guacamoleb - - OnePlus7 + - OnePlus7 additional_steps: - dtbo - vbmeta @@ -39,3 +39,4 @@ steps: content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. command: fastboot_boot_recovery + diff --git a/openandroidinstaller/assets/configs/hltetmo.yaml b/openandroidinstaller/assets/configs/hltetmo.yaml index b0d186c5..4126f480 100644 --- a/openandroidinstaller/assets/configs/hltetmo.yaml +++ b/openandroidinstaller/assets/configs/hltetmo.yaml @@ -2,9 +2,13 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy Note 3 LTE (N900T/V/W8) is_ab_device: false - device_code: hltetmo + device_code: hltetmo supported_device_codes: - - hltetmo + - hltetmo + - hlte + - hltecan + - hlteusc + - hltevzw steps: unlock_bootloader: boot_recovery: @@ -22,6 +26,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for - 8~10 seconds until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power*. Confirm when the recovery screen appears. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for + 8~10 seconds until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power*. Confirm when the recovery screen appears. From 2f3608ae0499c2567d537a944a23596b3fe3a8f8 Mon Sep 17 00:00:00 2001 From: SirRGB Date: Tue, 21 Nov 2023 13:54:07 +0100 Subject: [PATCH 17/27] sync j7fltexx asserts * https://github.com/LineageOS/android_device_samsung_jfltexx/blob/221635b6daa1f162b8c18350bd16b15b8c8f616e/BoardConfig.mk#L23 Signed-off-by: SirRGB --- openandroidinstaller/assets/configs/hotdog.yaml | 6 +++--- openandroidinstaller/assets/configs/hotdogb.yaml | 6 +++--- openandroidinstaller/assets/configs/jfltexx.yaml | 12 +++++++----- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/openandroidinstaller/assets/configs/hotdog.yaml b/openandroidinstaller/assets/configs/hotdog.yaml index 46e886b8..40d02524 100644 --- a/openandroidinstaller/assets/configs/hotdog.yaml +++ b/openandroidinstaller/assets/configs/hotdog.yaml @@ -2,7 +2,7 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: OnePlus 7T Pro is_ab_device: true - device_code: hotdog + device_code: hotdog supported_device_codes: - hotdog - OnePlus7TPro @@ -25,7 +25,7 @@ steps: Once it's done, press continue here. command: fastboot_oem_unlock - type: confirm_button - content: > + content: > The bootloader is now unlocked. Since the device resets completely, you will need to re-enable Developer Options and USB debugging to continue. boot_recovery: - type: call_button @@ -38,4 +38,4 @@ steps: img: twrp-start.jpeg content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/hotdogb.yaml b/openandroidinstaller/assets/configs/hotdogb.yaml index d5be5b19..a59334b2 100644 --- a/openandroidinstaller/assets/configs/hotdogb.yaml +++ b/openandroidinstaller/assets/configs/hotdogb.yaml @@ -2,7 +2,7 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: OnePlus 7T is_ab_device: true - device_code: hotdogb + device_code: hotdogb supported_device_codes: - hotdogb - OnePlus7T @@ -25,7 +25,7 @@ steps: Once it's done, press continue here. command: fastboot_oem_unlock - type: confirm_button - content: > + content: > The bootloader is now unlocked. Since the device resets completely, you will need to re-enable Developer Options and USB debugging to continue. boot_recovery: - type: call_button @@ -38,4 +38,4 @@ steps: img: twrp-start.jpeg content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/jfltexx.yaml b/openandroidinstaller/assets/configs/jfltexx.yaml index 9090796e..132ed3ba 100644 --- a/openandroidinstaller/assets/configs/jfltexx.yaml +++ b/openandroidinstaller/assets/configs/jfltexx.yaml @@ -7,6 +7,8 @@ metadata: - jfltexx - jflte - jfltetmo + - jfltecan + - jgedlte twrp-link: jflte untested: true requirements: @@ -16,8 +18,8 @@ steps: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone who to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone who to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -27,6 +29,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power button*. From 6426e1d5163cef9787b00056432864022fc426c4 Mon Sep 17 00:00:00 2001 From: SirRGB Date: Tue, 21 Nov 2023 13:56:37 +0100 Subject: [PATCH 18/27] sync klte asserts * taken from https://github.com/LineageOS/android_device_samsung_klte/blob/1e45afafff8687bd06ee4b512d6756c41d966ee9/BoardConfig.mk#L19 Signed-off-by: SirRGB --- openandroidinstaller/assets/configs/kiev.yaml | 12 +++++------ .../assets/configs/kirin.yaml | 6 +++--- openandroidinstaller/assets/configs/klte.yaml | 21 ++++++++++++------- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/openandroidinstaller/assets/configs/kiev.yaml b/openandroidinstaller/assets/configs/kiev.yaml index e8e810e1..98963f75 100644 --- a/openandroidinstaller/assets/configs/kiev.yaml +++ b/openandroidinstaller/assets/configs/kiev.yaml @@ -2,17 +2,17 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Motorola moto g 5G / one 5G ace is_ab_device: true - device_code: kiev + device_code: kiev supported_device_codes: - - kiev + - kiev steps: unlock_bootloader: - - type: call_button + - type: call_button content: > As a first step, you need to unlock the bootloader of your device. A bootloader is the piece of software, that tells your phone how to start and run an operating system (like Android). You need to boot into fastboot mode by pressing the 'Confirm and run' button. Then continue. command: adb_reboot_bootloader - - type: call_button + - type: call_button content: > Now you need to get your device ID to get an unlock code from Motorola. Press 'Confirm and run' to get the ID. (You need to toggle 'Advanced Output' here to see it.) Copy it to a separate file to use it in the next step. @@ -35,7 +35,7 @@ steps: command: fastboot_unlock_with_code - type: call_button content: > - Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. + Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. Connect your device to your PC via USB. Then confirm here to continue. command: fastboot_reboot boot_recovery: @@ -59,4 +59,4 @@ steps: img: twrp-start.jpeg content: > Now we need to boot into recovery again. Press run and when you see the TWRP screen you can continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/kirin.yaml b/openandroidinstaller/assets/configs/kirin.yaml index f7c5893c..566d3f4d 100644 --- a/openandroidinstaller/assets/configs/kirin.yaml +++ b/openandroidinstaller/assets/configs/kirin.yaml @@ -19,7 +19,7 @@ steps: - type: link_button_with_confirm content: > Click on the button to open the instructions on Sonys official unlocking website to generate an unlock code for your bootloader. - Once you got the code write it down somewhere and continue to input the code. + Once you got the code write it down somewhere and continue to input the code. link: https://developer.sonymobile.com/unlockbootloader/unlock-yourboot-loader/ - type: confirm_button content: > @@ -35,7 +35,7 @@ steps: command: fastboot_unlock_with_code - type: call_button content: > - Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. + Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. Connect your device to your PC via USB. Then confirm here to continue. command: fastboot_reboot boot_recovery: @@ -57,4 +57,4 @@ steps: - type: call_button content: > Now we need to boot into recovery again. Press run and when you see the TWRP screen you can continue. - command: fastboot_flash_boot \ No newline at end of file + command: fastboot_flash_boot diff --git a/openandroidinstaller/assets/configs/klte.yaml b/openandroidinstaller/assets/configs/klte.yaml index c9dfcc47..538fce39 100644 --- a/openandroidinstaller/assets/configs/klte.yaml +++ b/openandroidinstaller/assets/configs/klte.yaml @@ -1,17 +1,24 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy S5 LTE - is_ab_device: false + is_ab_device: false device_code: klte supported_device_codes: - - klte + - klte + - klteacg + - kltecan + - kltetmo + - klteub + - klteusc + - kltevzw + - kltexx steps: unlock_bootloader: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -22,6 +29,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power button*. From 9404849a31491c3c51f811cb71059e7e3b0b654c Mon Sep 17 00:00:00 2001 From: SirRGB Date: Tue, 21 Nov 2023 13:59:00 +0100 Subject: [PATCH 19/27] sync Mi439 asserts * taken from https://github.com/LineageOS/android_device_xiaomi_Mi439/blob/9002689e7bdfdcd7160da13c47b9d78aff4b9c64/BoardConfig.mk#L30 Signed-off-by: SirRGB --- openandroidinstaller/assets/configs/Mi439.yaml | 1 + openandroidinstaller/assets/configs/mermaid.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/openandroidinstaller/assets/configs/Mi439.yaml b/openandroidinstaller/assets/configs/Mi439.yaml index d9af274d..6bc0ce19 100644 --- a/openandroidinstaller/assets/configs/Mi439.yaml +++ b/openandroidinstaller/assets/configs/Mi439.yaml @@ -15,6 +15,7 @@ metadata: - olive - olivelite - olivewood + - olives twrp-link: mi439 requirements: firmware: MiUI 12.5 (Q) diff --git a/openandroidinstaller/assets/configs/mermaid.yaml b/openandroidinstaller/assets/configs/mermaid.yaml index 676f605d..59cac632 100644 --- a/openandroidinstaller/assets/configs/mermaid.yaml +++ b/openandroidinstaller/assets/configs/mermaid.yaml @@ -2,9 +2,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Sony Xperia 10 Plus is_ab_device: true - device_code: mermaid + device_code: mermaid supported_device_codes: - - mermaid + - mermaid steps: unlock_bootloader: - type: confirm_button @@ -19,7 +19,7 @@ steps: - type: link_button_with_confirm content: > Click on the button to open the instructions on Sonys official unlocking website to generate an unlock code for your bootloader. - Once you got the code write it down somewhere and continue to input the code. + Once you got the code write it down somewhere and continue to input the code. link: https://developer.sonymobile.com/unlockbootloader/unlock-yourboot-loader/ - type: confirm_button content: > @@ -35,7 +35,7 @@ steps: command: fastboot_unlock_with_code - type: call_button content: > - Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. + Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. Connect your device to your PC via USB. Then confirm here to continue. command: fastboot_reboot boot_recovery: @@ -57,4 +57,4 @@ steps: - type: call_button content: > Now we need to boot into recovery again. Press run and when you see the TWRP screen you can continue. - command: fastboot_flash_boot \ No newline at end of file + command: fastboot_flash_boot From ec4239c8cc9a60082ce5d802bbd84130d9ffadbd Mon Sep 17 00:00:00 2001 From: SirRGB Date: Tue, 21 Nov 2023 14:02:39 +0100 Subject: [PATCH 20/27] sync on7xelte asserts * taken from https://github.com/Exynos7870/android_device_samsung_on7xelte/blob/21a18d0ab1e510dbd652f5b53411925089053807/BoardConfig.mk#L17 Signed-off-by: SirRGB --- openandroidinstaller/assets/configs/nairo.yaml | 12 ++++++------ openandroidinstaller/assets/configs/ocean.yaml | 12 ++++++------ .../assets/configs/on7xelte.yaml | 18 ++++++++++++------ .../assets/configs/pioneer.yaml | 10 +++++----- openandroidinstaller/assets/configs/racer.yaml | 8 ++++---- .../assets/configs/redfin.yaml | 8 ++++---- .../assets/configs/s3ve3g.yaml | 12 ++++++------ 7 files changed, 43 insertions(+), 37 deletions(-) diff --git a/openandroidinstaller/assets/configs/nairo.yaml b/openandroidinstaller/assets/configs/nairo.yaml index ea68a15c..f61e11de 100644 --- a/openandroidinstaller/assets/configs/nairo.yaml +++ b/openandroidinstaller/assets/configs/nairo.yaml @@ -2,17 +2,17 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Motorola moto g 5G plus / one 5G is_ab_device: true - device_code: nairo + device_code: nairo supported_device_codes: - - nairo + - nairo steps: unlock_bootloader: - - type: call_button + - type: call_button content: > As a first step, you need to unlock the bootloader of your device. A bootloader is the piece of software, that tells your phone how to start and run an operating system (like Android). You need to boot into fastboot mode by pressing the 'Confirm and run' button. Then continue. command: adb_reboot_bootloader - - type: call_button + - type: call_button content: > Now you need to get your device ID to get an unlock code from Motorola. Press 'Confirm and run' to get the ID. (You need to toggle 'Advanced Output' here to see it.) Copy it to a separate file to use it in the next step. @@ -35,7 +35,7 @@ steps: command: fastboot_unlock_with_code - type: call_button content: > - Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. + Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. Connect your device to your PC via USB. Then confirm here to continue. command: fastboot_reboot boot_recovery: @@ -59,4 +59,4 @@ steps: img: twrp-start.jpeg content: > Now we need to boot into recovery again. Press run and when you see the TWRP screen you can continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/ocean.yaml b/openandroidinstaller/assets/configs/ocean.yaml index 919b2e7e..7fcd0718 100644 --- a/openandroidinstaller/assets/configs/ocean.yaml +++ b/openandroidinstaller/assets/configs/ocean.yaml @@ -2,17 +2,17 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Motorola Moto G7 power is_ab_device: true - device_code: ocean + device_code: ocean supported_device_codes: - - ocean + - ocean steps: unlock_bootloader: - - type: call_button + - type: call_button content: > As a first step, you need to unlock the bootloader of your device. A bootloader is the piece of software, that tells your phone how to start and run an operating system (like Android). You need to boot into fastboot mode by pressing the 'Confirm and run' button. Then continue. command: adb_reboot_bootloader - - type: call_button + - type: call_button content: > Now you need to get your device ID to get an unlock code from Motorola. Press 'Confirm and run' to get the ID. (You need to toggle 'Advanced Output' here to see it.) Copy it to a separate file to use it in the next step. @@ -35,7 +35,7 @@ steps: command: fastboot_unlock_with_code - type: call_button content: > - Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. + Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. Connect your device to your PC via USB. Then confirm here to continue. command: fastboot_reboot boot_recovery: @@ -59,4 +59,4 @@ steps: img: twrp-start.jpeg content: > Now we need to boot into recovery again. Press run and when you see the TWRP screen you can continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/on7xelte.yaml b/openandroidinstaller/assets/configs/on7xelte.yaml index b8a6ae7d..7c57f86f 100644 --- a/openandroidinstaller/assets/configs/on7xelte.yaml +++ b/openandroidinstaller/assets/configs/on7xelte.yaml @@ -2,17 +2,23 @@ metadata: maintainer: MagicLike device_name: Samsung Galaxy J7 Prime is_ab_device: false - device_code: on7xelte + device_code: on7xelte supported_device_codes: - on7xelte + - on7xeltedd + - on7xeltekl + - on7xeltekk + - on7xelteks + - on7xelteub + - on7xeltezt untested: true steps: unlock_bootloader: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -23,6 +29,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power button*. diff --git a/openandroidinstaller/assets/configs/pioneer.yaml b/openandroidinstaller/assets/configs/pioneer.yaml index 6fd615ee..17a3458f 100644 --- a/openandroidinstaller/assets/configs/pioneer.yaml +++ b/openandroidinstaller/assets/configs/pioneer.yaml @@ -2,9 +2,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Sony Xperia XA2 is_ab_device: true - device_code: pioneer + device_code: pioneer supported_device_codes: - - pioneer + - pioneer requirements: android: 9 steps: @@ -21,7 +21,7 @@ steps: - type: link_button_with_confirm content: > Click on the button to open the instructions on Sonys official unlocking website to generate an unlock code for your bootloader. - Once you got the code write it down somewhere and continue to input the code. + Once you got the code write it down somewhere and continue to input the code. link: https://developer.sonymobile.com/unlockbootloader/unlock-yourboot-loader/ - type: confirm_button content: > @@ -37,7 +37,7 @@ steps: command: fastboot_unlock_with_code - type: call_button content: > - Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. + Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. Connect your device to your PC via USB. Then confirm here to continue. command: fastboot_reboot boot_recovery: @@ -59,4 +59,4 @@ steps: - type: call_button content: > Now we need to boot into recovery again. Press run and when you see the TWRP screen you can continue. - command: fastboot_flash_boot \ No newline at end of file + command: fastboot_flash_boot diff --git a/openandroidinstaller/assets/configs/racer.yaml b/openandroidinstaller/assets/configs/racer.yaml index 561632d0..05b0b071 100644 --- a/openandroidinstaller/assets/configs/racer.yaml +++ b/openandroidinstaller/assets/configs/racer.yaml @@ -7,12 +7,12 @@ metadata: - racer steps: unlock_bootloader: - - type: call_button + - type: call_button content: > As a first step, you need to unlock the bootloader of your device. A bootloader is the piece of software, that tells your phone how to start and run an operating system (like Android). You need to boot into fastboot mode by pressing the 'Confirm and run' button. Then continue. command: adb_reboot_bootloader - - type: call_button + - type: call_button content: > Now you need to get your device ID to get an unlock code from Motorola. Press 'Confirm and run' to get the ID. (You need to toggle 'Advanced Output' here to see it.) Copy it to a separate file to use it in the next step. @@ -35,7 +35,7 @@ steps: command: fastboot_unlock_with_code - type: call_button content: > - Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. + Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. Connect your device to your PC via USB. Then confirm here to continue. command: fastboot_reboot boot_recovery: @@ -59,4 +59,4 @@ steps: img: twrp-start.jpeg content: > Now we need to boot into recovery again. Press run and when you see the TWRP screen you can continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/redfin.yaml b/openandroidinstaller/assets/configs/redfin.yaml index 9cb84672..a0ad1b03 100644 --- a/openandroidinstaller/assets/configs/redfin.yaml +++ b/openandroidinstaller/assets/configs/redfin.yaml @@ -2,9 +2,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Pixel 5 is_ab_device: true - device_code: redfin + device_code: redfin supported_device_codes: - - redfin + - redfin requirements: android: 12.1.0 steps: @@ -37,7 +37,7 @@ steps: content: > The bootloader is now unlocked. Since the device resets completely, you will need to re-enable USB debugging to continue. boot_recovery: - - type: confirm_button + - type: confirm_button content: > Now you need to boot a custom recovery system on the phone. A recovery is a small subsystem on your phone, that manages updating, adapting and repairing of the operating system. @@ -52,4 +52,4 @@ steps: img: twrp-start.jpeg content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/s3ve3g.yaml b/openandroidinstaller/assets/configs/s3ve3g.yaml index 8b33e323..97f6b95a 100644 --- a/openandroidinstaller/assets/configs/s3ve3g.yaml +++ b/openandroidinstaller/assets/configs/s3ve3g.yaml @@ -2,16 +2,16 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy S III Neo is_ab_device: false - device_code: s3ve3g + device_code: s3ve3g supported_device_codes: - - s3ve3g + - s3ve3g steps: unlock_bootloader: boot_recovery: - type: confirm_button content: > There are two possible hardware configurations of this phone regardless of model number. Some phones were released with a Sony IMX 175 rear camera sensor, while others with a Samsung s5k4h5yb rear camera sensor. As such, we’ve separated this devices builds into two separate builds. The procedure to distinguish which to use is as follows: - + - Make sure to be on the latest stock firmware of your variant (you can check updates with Settings, Updates); - Make sure the rear camera is working on the stock ROM; @@ -35,6 +35,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for - 8~10 seconds until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power*. Confirm when the recovery screen appears. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for + 8~10 seconds until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power*. Confirm when the recovery screen appears. From 5977f3fe8295037e08507b6ab9d6b881ff33fb1b Mon Sep 17 00:00:00 2001 From: SirRGB Date: Tue, 21 Nov 2023 14:09:51 +0100 Subject: [PATCH 21/27] sync serranoltexx asserts * taken from https://github.com/LineageOS/android_device_samsung_serranoltexx/blob/cc194239f8da8aeaec1c99e5b060193afb6b0275/BoardConfig.mk#L31 Signed-off-by: SirRGB --- openandroidinstaller/assets/configs/sargo.yaml | 4 ++-- openandroidinstaller/assets/configs/serranoltexx.yaml | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/openandroidinstaller/assets/configs/sargo.yaml b/openandroidinstaller/assets/configs/sargo.yaml index 28d8fe04..6baf90bc 100644 --- a/openandroidinstaller/assets/configs/sargo.yaml +++ b/openandroidinstaller/assets/configs/sargo.yaml @@ -1,7 +1,7 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Pixel 3a - is_ab_device: true + is_ab_device: true device_code: sargo supported_device_codes: - sargo @@ -41,4 +41,4 @@ steps: img: twrp-start.jpeg content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once your phone screen looks like the picture on the left, continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/serranoltexx.yaml b/openandroidinstaller/assets/configs/serranoltexx.yaml index f0431ae6..5cb73209 100644 --- a/openandroidinstaller/assets/configs/serranoltexx.yaml +++ b/openandroidinstaller/assets/configs/serranoltexx.yaml @@ -6,13 +6,15 @@ metadata: supported_device_codes: - serranolte - serranoltexx + - serranoltebmc + - serranoltektt steps: unlock_bootloader: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -22,6 +24,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, hold *Volume Up* + *Home* + *Power button*. From 7944c54f3ebc9bcb4424b978c3e873ae69ef2d61 Mon Sep 17 00:00:00 2001 From: SirRGB Date: Tue, 21 Nov 2023 14:18:56 +0100 Subject: [PATCH 22/27] sync zerofltexx asserts * taken from https://github.com/LineageOS/android_device_samsung_zerofltexx/blob/e83ad0962313b1f64e22b6dbf44fe6050641a6cc/BoardConfig.mk#L27 * fixes https://github.com/openandroidinstaller-dev/openandroidinstaller/issues/375 Signed-off-by: SirRGB --- openandroidinstaller/assets/configs/starlte.yaml | 10 +++++----- openandroidinstaller/assets/configs/sunfish.yaml | 8 ++++---- openandroidinstaller/assets/configs/taimen.yaml | 6 +++--- openandroidinstaller/assets/configs/walleye.yaml | 6 +++--- openandroidinstaller/assets/configs/yuga.yaml | 6 +++--- openandroidinstaller/assets/configs/z3.yaml | 12 ++++++------ .../assets/configs/zerofltexx.yaml | 15 ++++++++------- .../assets/configs/zeroltexx.yaml | 12 ++++++------ 8 files changed, 38 insertions(+), 37 deletions(-) diff --git a/openandroidinstaller/assets/configs/starlte.yaml b/openandroidinstaller/assets/configs/starlte.yaml index 24a11763..dd6bb8d0 100644 --- a/openandroidinstaller/assets/configs/starlte.yaml +++ b/openandroidinstaller/assets/configs/starlte.yaml @@ -12,8 +12,8 @@ steps: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -23,6 +23,6 @@ steps: command: heimdall_flash_recovery - type: confirm_button content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the Volume Down + Power buttons for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold Volume Up + Bixby + Power. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the Volume Down + Power buttons for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold Volume Up + Bixby + Power. diff --git a/openandroidinstaller/assets/configs/sunfish.yaml b/openandroidinstaller/assets/configs/sunfish.yaml index ea08d2d2..b0e741f4 100644 --- a/openandroidinstaller/assets/configs/sunfish.yaml +++ b/openandroidinstaller/assets/configs/sunfish.yaml @@ -2,9 +2,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Pixel 4a is_ab_device: true - device_code: sunfish + device_code: sunfish supported_device_codes: - - sunfish + - sunfish additional_steps: - dtbo requirements: @@ -39,7 +39,7 @@ steps: content: > The bootloader is now unlocked. Since the device resets completely, you will need to re-enable USB debugging to continue. boot_recovery: - - type: confirm_button + - type: confirm_button content: > Now you need to boot a custom recovery system on the phone. A recovery is a small subsystem on your phone, that manages updating, adapting and repairing of the operating system. @@ -54,4 +54,4 @@ steps: img: twrp-start.jpeg content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once it's done continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/taimen.yaml b/openandroidinstaller/assets/configs/taimen.yaml index c900636a..20601de8 100644 --- a/openandroidinstaller/assets/configs/taimen.yaml +++ b/openandroidinstaller/assets/configs/taimen.yaml @@ -2,9 +2,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Google Pixel 2 XL is_ab_device: true - device_code: taimen + device_code: taimen supported_device_codes: - - taimen + - taimen requirements: android: 11 steps: @@ -41,4 +41,4 @@ steps: img: twrp-start.jpeg content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once your phone screen looks like the picture on the left, continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/walleye.yaml b/openandroidinstaller/assets/configs/walleye.yaml index 6f35cfbd..01d178d2 100644 --- a/openandroidinstaller/assets/configs/walleye.yaml +++ b/openandroidinstaller/assets/configs/walleye.yaml @@ -2,9 +2,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Google Pixel 2 is_ab_device: true - device_code: walleye + device_code: walleye supported_device_codes: - - walleye + - walleye requirements: android: 11 steps: @@ -41,4 +41,4 @@ steps: img: twrp-start.jpeg content: > Boot a custom recovery (temporarily) by pressing 'Confirm and run'. Once your phone screen looks like the picture on the left, continue. - command: fastboot_boot_recovery \ No newline at end of file + command: fastboot_boot_recovery diff --git a/openandroidinstaller/assets/configs/yuga.yaml b/openandroidinstaller/assets/configs/yuga.yaml index 82d68222..b385d663 100644 --- a/openandroidinstaller/assets/configs/yuga.yaml +++ b/openandroidinstaller/assets/configs/yuga.yaml @@ -20,7 +20,7 @@ steps: - type: link_button_with_confirm content: > Click on the button to open the instructions on Sonys official unlocking website to generate an unlock code for your bootloader. - Once you got the code write it down somewhere and continue to input the code. + Once you got the code write it down somewhere and continue to input the code. link: https://developer.sonymobile.com/unlockbootloader/unlock-yourboot-loader/ - type: confirm_button content: > @@ -36,7 +36,7 @@ steps: command: fastboot_unlock_with_code - type: call_button content: > - Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. + Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. Connect your device to your PC via USB. Then confirm here to continue. command: fastboot_reboot boot_recovery: @@ -47,4 +47,4 @@ steps: - type: call_button content: > Next, you need to boot a custom recovery image. Press the button to flash the selected image. Then continue. - command: fastboot_flash_boot \ No newline at end of file + command: fastboot_flash_boot diff --git a/openandroidinstaller/assets/configs/z3.yaml b/openandroidinstaller/assets/configs/z3.yaml index 649de2f0..0e907cd7 100644 --- a/openandroidinstaller/assets/configs/z3.yaml +++ b/openandroidinstaller/assets/configs/z3.yaml @@ -1,10 +1,10 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Sony Xperia Z3 - is_ab_device: false - device_code: z3 + is_ab_device: false + device_code: z3 supported_device_codes: - - z3 + - z3 requirements: firmware: 23.5.A.1.291 steps: @@ -21,7 +21,7 @@ steps: - type: link_button_with_confirm content: > Click on the button to open the instructions on Sonys official unlocking website to generate an unlock code for your bootloader. - Once you got the code write it down somewhere and continue to input the code. + Once you got the code write it down somewhere and continue to input the code. link: https://developer.sonymobile.com/unlockbootloader/unlock-yourboot-loader/ - type: confirm_button content: > @@ -37,7 +37,7 @@ steps: command: fastboot_unlock_with_code - type: call_button content: > - Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. + Press the button to reboot. Since the device resets completely, you will need to re-enable USB debugging to continue. Connect your device to your PC via USB. Then confirm here to continue. command: fastboot_reboot boot_recovery: @@ -48,4 +48,4 @@ steps: - type: call_button content: > Next, you need to boot a custom recovery image. Press the button to flash the selected image. Then continue. - command: fastboot_flash_boot \ No newline at end of file + command: fastboot_flash_boot diff --git a/openandroidinstaller/assets/configs/zerofltexx.yaml b/openandroidinstaller/assets/configs/zerofltexx.yaml index 806bb820..fc4ba17b 100644 --- a/openandroidinstaller/assets/configs/zerofltexx.yaml +++ b/openandroidinstaller/assets/configs/zerofltexx.yaml @@ -2,16 +2,17 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy S6 is_ab_device: false - device_code: zerofltexx + device_code: zerofltexx supported_device_codes: - - zerofltexx + - zerofltexx + - zeroflte steps: unlock_bootloader: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -22,6 +23,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power button*. diff --git a/openandroidinstaller/assets/configs/zeroltexx.yaml b/openandroidinstaller/assets/configs/zeroltexx.yaml index 9eefe7cd..20bd2d3f 100644 --- a/openandroidinstaller/assets/configs/zeroltexx.yaml +++ b/openandroidinstaller/assets/configs/zeroltexx.yaml @@ -2,7 +2,7 @@ metadata: maintainer: Tobias Sterbak (tsterbak) device_name: Samsung Galaxy S6 Edge is_ab_device: false - device_code: zeroltexx + device_code: zeroltexx supported_device_codes: - zeroltexx - zerolte @@ -11,8 +11,8 @@ steps: boot_recovery: - type: call_button content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone how to start and run an operating system (like Android). Your device should be turned on. + As a first step, you need to boot into the bootloader. A bootloader is the piece of software, + that tells your phone how to start and run an operating system (like Android). Your device should be turned on. Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. command: adb_reboot_download - type: call_button @@ -23,6 +23,6 @@ steps: - type: confirm_button img: samsung-buttons.png content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power button*. \ No newline at end of file + Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds + until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, + hold *Volume Up* + *Home* + *Power button*. From 72d7d3012ed6810da6206dd19fba2116ab462977 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Dec 2023 17:03:38 +0000 Subject: [PATCH 23/27] Bump urllib3 from 2.0.6 to 2.0.7 Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.0.6 to 2.0.7. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/2.0.6...2.0.7) --- updated-dependencies: - dependency-name: urllib3 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- poetry.lock | 1865 +++++++++++++++++++++++++-------------------------- 1 file changed, 909 insertions(+), 956 deletions(-) diff --git a/poetry.lock b/poetry.lock index 65e50450..931d7c27 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,18 +1,26 @@ +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. + [[package]] name = "altgraph" version = "0.17.4" description = "Python graph (network) package" -category = "main" optional = false python-versions = "*" +files = [ + {file = "altgraph-0.17.4-py2.py3-none-any.whl", hash = "sha256:642743b4750de17e655e6711601b077bc6598dbfa3ba5fa2b2a35ce12b508dff"}, + {file = "altgraph-0.17.4.tar.gz", hash = "sha256:1b5afbb98f6c4dcadb2e2ae6ab9fa994bbb8c1d75f4fa96d340f9437ae454406"}, +] [[package]] name = "anyio" version = "4.0.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" -category = "main" optional = false python-versions = ">=3.8" +files = [ + {file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"}, + {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"}, +] [package.dependencies] exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} @@ -28,9 +36,12 @@ trio = ["trio (>=0.22)"] name = "bandit" version = "1.7.5" description = "Security oriented static analyser for python code." -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "bandit-1.7.5-py3-none-any.whl", hash = "sha256:75665181dc1e0096369112541a056c59d1c5f66f9bb74a8d686c3c362b83f549"}, + {file = "bandit-1.7.5.tar.gz", hash = "sha256:bdfc739baa03b880c2d15d0431b31c658ffc348e907fe197e54e0389dd59e11e"}, +] [package.dependencies] colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} @@ -48,893 +59,44 @@ yaml = ["PyYAML"] name = "black" version = "22.12.0" description = "The uncompromising code formatter." -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, + {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, + {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, + {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, + {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, + {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, + {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, + {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, + {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, + {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, + {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, + {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, +] [package.dependencies] click = ">=8.0.0" mypy-extensions = ">=0.4.3" pathspec = ">=0.9.0" -platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} -typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} - -[package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)"] -jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -uvloop = ["uvloop (>=0.15.2)"] - -[[package]] -name = "Brotli" -version = "1.1.0" -description = "Python bindings for the Brotli compression library" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "brotlicffi" -version = "1.1.0.0" -description = "Python CFFI bindings to the Brotli library" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -cffi = ">=1.0.0" - -[[package]] -name = "certifi" -version = "2023.7.22" -description = "Python package for providing Mozilla's CA Bundle." -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "cffi" -version = "1.16.0" -description = "Foreign Function Interface for Python calling C code." -category = "main" -optional = false -python-versions = ">=3.8" - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "charset-normalizer" -version = "3.3.0" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" -optional = false -python-versions = ">=3.7.0" - -[[package]] -name = "click" -version = "8.1.7" -description = "Composable command line interface toolkit" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -category = "main" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" - -[[package]] -name = "contextlib2" -version = "21.6.0" -description = "Backports and enhancements for the contextlib module" -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "coverage" -version = "7.3.2" -description = "Code coverage measurement for Python" -category = "main" -optional = false -python-versions = ">=3.8" - -[package.dependencies] -tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} - -[package.extras] -toml = ["tomli"] - -[[package]] -name = "exceptiongroup" -version = "1.1.3" -description = "Backport of PEP 654 (exception groups)" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "flet" -version = "0.7.4" -description = "Flet for Python - easily build interactive multi-platform apps in Python" -category = "main" -optional = false -python-versions = ">=3.7,<4.0" - -[package.dependencies] -flet-core = "0.7.4" -httpx = ">=0.23.3,<0.24.0" -oauthlib = ">=3.2.2,<4.0.0" -packaging = ">=23.0,<24.0" -watchdog = ">=2.2.1,<3.0.0" -websocket-client = ">=1.4.2,<2.0.0" -websockets = ">=10.4,<11.0" - -[[package]] -name = "flet-core" -version = "0.7.4" -description = "Flet core library" -category = "main" -optional = false -python-versions = ">=3.7,<4.0" - -[package.dependencies] -repath = ">=0.9.0,<0.10.0" - -[[package]] -name = "gitdb" -version = "4.0.10" -description = "Git Object Database" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -smmap = ">=3.0.1,<6" - -[[package]] -name = "GitPython" -version = "3.1.37" -description = "GitPython is a Python library used to interact with Git repositories" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -gitdb = ">=4.0.1,<5" - -[package.extras] -test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-sugar"] - -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "httpcore" -version = "0.16.3" -description = "A minimal low-level HTTP client." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -anyio = ">=3.0,<5.0" -certifi = "*" -h11 = ">=0.13,<0.15" -sniffio = ">=1.0.0,<2.0.0" - -[package.extras] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (>=1.0.0,<2.0.0)"] - -[[package]] -name = "httpx" -version = "0.23.3" -description = "The next generation HTTP client." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -certifi = "*" -httpcore = ">=0.15.0,<0.17.0" -rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} -sniffio = "*" - -[package.extras] -brotli = ["brotli", "brotlicffi"] -cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<13)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (>=1.0.0,<2.0.0)"] - -[[package]] -name = "idna" -version = "3.4" -description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "inflate64" -version = "0.3.1" -description = "deflate64 compression/decompression library" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -check = ["check-manifest", "flake8", "flake8-black", "flake8-deprecated", "isort (>=5.0.3)", "mypy (>=0.940)", "mypy-extensions (>=0.4.1)", "pygments", "readme-renderer", "twine"] -docs = ["docutils", "sphinx (>=5.0)"] -test = ["pyannotate", "pytest"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "isort" -version = "5.12.0" -description = "A Python utility / library to sort Python imports." -category = "main" -optional = false -python-versions = ">=3.8.0" - -[package.extras] -colors = ["colorama (>=0.4.3)"] -pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] -plugins = ["setuptools"] -requirements-deprecated-finder = ["pip-api", "pipreqs"] - -[[package]] -name = "loguru" -version = "0.6.0" -description = "Python logging made (stupidly) simple" -category = "main" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} -win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} - -[package.extras] -dev = ["Sphinx (>=4.1.1)", "black (>=19.10b0)", "colorama (>=0.3.4)", "docutils (==0.16)", "flake8 (>=3.7.7)", "isort (>=5.1.1)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "tox (>=3.9.0)"] - -[[package]] -name = "macholib" -version = "1.16.3" -description = "Mach-O header analysis and editing" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -altgraph = ">=0.17" - -[[package]] -name = "markdown-it-py" -version = "3.0.0" -description = "Python port of markdown-it. Markdown parsing, done right!" -category = "main" -optional = false -python-versions = ">=3.8" - -[package.dependencies] -mdurl = ">=0.1,<1.0" - -[package.extras] -benchmarking = ["psutil", "pytest", "pytest-benchmark"] -code_style = ["pre-commit (>=3.0,<4.0)"] -compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] -linkify = ["linkify-it-py (>=1,<3)"] -plugins = ["mdit-py-plugins"] -profiling = ["gprof2dot"] -rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] - -[[package]] -name = "mdurl" -version = "0.1.2" -description = "Markdown URL utilities" -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "multivolumefile" -version = "0.2.3" -description = "multi volume file wrapper library" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -check = ["check-manifest", "flake8", "flake8-black", "isort (>=5.0.3)", "pygments", "readme-renderer", "twine"] -test = ["coverage[toml] (>=5.2)", "coveralls (>=2.1.1)", "hypothesis", "pyannotate", "pytest", "pytest-cov"] -type = ["mypy", "mypy-extensions"] - -[[package]] -name = "mypy" -version = "1.6.0" -description = "Optional static typing for Python" -category = "main" -optional = false -python-versions = ">=3.8" - -[package.dependencies] -mypy-extensions = ">=1.0.0" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = ">=4.1.0" - -[package.extras] -dmypy = ["psutil (>=4.0)"] -install-types = ["pip"] -reports = ["lxml"] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -description = "Type system extensions for programs checked with the mypy type checker." -category = "main" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "oauthlib" -version = "3.2.2" -description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -rsa = ["cryptography (>=3.0.0)"] -signals = ["blinker (>=1.4.0)"] -signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] - -[[package]] -name = "packaging" -version = "23.2" -description = "Core utilities for Python packages" -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "pathspec" -version = "0.11.2" -description = "Utility library for gitignore style pattern matching of file paths." -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "pbr" -version = "5.11.1" -description = "Python Build Reasonableness" -category = "main" -optional = false -python-versions = ">=2.6" - -[[package]] -name = "pefile" -version = "2023.2.7" -description = "Python PE parsing module" -category = "main" -optional = false -python-versions = ">=3.6.0" - -[[package]] -name = "Pillow" -version = "10.0.1" -description = "Python Imaging Library (Fork)" -category = "main" -optional = false -python-versions = ">=3.8" - -[package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] -tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "platformdirs" -version = "3.11.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] - -[[package]] -name = "pluggy" -version = "1.3.0" -description = "plugin and hook calling mechanisms for python" -category = "main" -optional = false -python-versions = ">=3.8" - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "psutil" -version = "5.9.5" -description = "Cross-platform lib for process and system monitoring in Python." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.extras] -test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] - -[[package]] -name = "py7zr" -version = "0.20.6" -description = "Pure python 7-zip library" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -brotli = {version = ">=1.0.9", markers = "platform_python_implementation == \"CPython\""} -brotlicffi = {version = ">=1.0.9.2", markers = "platform_python_implementation == \"PyPy\""} -inflate64 = {version = ">=0.3.1", markers = "python_version > \"3.6\""} -multivolumefile = ">=0.2.3" -psutil = {version = "*", markers = "sys_platform != \"cygwin\""} -pybcj = ">=0.6.0" -pycryptodomex = ">=3.6.6" -pyppmd = ">=0.18.1,<1.1.0" -pyzstd = ">=0.14.4" -texttable = "*" - -[package.extras] -check = ["black (>=23.1.0)", "check-manifest", "flake8 (<7)", "flake8-black (>=0.3.6)", "flake8-deprecated", "flake8-isort", "isort (>=5.0.3)", "mypy (>=0.940)", "mypy-extensions (>=0.4.1)", "pygments", "readme-renderer", "twine", "types-psutil"] -debug = ["pytest", "pytest-leaks", "pytest-profiling"] -docs = ["docutils", "sphinx (>=5.0)", "sphinx-a4doc", "sphinx-py3doc-enhanced-theme"] -test = ["coverage[toml] (>=5.2)", "coveralls (>=2.1.1)", "py-cpuinfo", "pyannotate", "pytest", "pytest-benchmark", "pytest-cov", "pytest-remotedata", "pytest-timeout"] -test_compat = ["libarchive-c"] - -[[package]] -name = "pybcj" -version = "1.0.1" -description = "bcj filter library" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -check = ["check-manifest", "flake8 (<5)", "flake8-black", "flake8-colors", "flake8-isort", "flake8-pyi", "flake8-typing-imports", "mypy (>=0.812)", "mypy-extensions (>=0.4.3)", "pygments", "readme-renderer"] -test = ["coverage[toml] (>=5.2)", "hypothesis", "pytest (>=6.0)", "pytest-cov"] - -[[package]] -name = "pycparser" -version = "2.21" -description = "C parser in Python" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "pycryptodomex" -version = "3.19.0" -description = "Cryptographic library for Python" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "Pygments" -version = "2.16.1" -description = "Pygments is a syntax highlighting package written in Python." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -plugins = ["importlib-metadata"] - -[[package]] -name = "pyinstaller" -version = "5.13.2" -description = "PyInstaller bundles a Python application and all its dependencies into a single package." -category = "main" -optional = false -python-versions = "<3.13,>=3.7" - -[package.dependencies] -altgraph = "*" -macholib = {version = ">=1.8", markers = "sys_platform == \"darwin\""} -pefile = {version = ">=2022.5.30", markers = "sys_platform == \"win32\""} -pyinstaller-hooks-contrib = ">=2021.4" -pywin32-ctypes = {version = ">=0.2.1", markers = "sys_platform == \"win32\""} -setuptools = ">=42.0.0" - -[package.extras] -encryption = ["tinyaes (>=1.0.0)"] -hook_testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] - -[[package]] -name = "pyinstaller-hooks-contrib" -version = "2023.9" -description = "Community maintained hooks for PyInstaller" -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "pyppmd" -version = "1.0.0" -description = "PPMd compression/decompression library" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -check = ["check-manifest", "flake8", "flake8-black", "isort (>=5.0.3)", "mypy (>=0.812)", "mypy-extensions (>=0.4.3)", "pygments", "readme-renderer"] -docs = ["sphinx (>=2.3)", "sphinx-rtd-theme"] -fuzzer = ["atheris", "hypothesis"] -test = ["coverage[toml] (>=5.2)", "hypothesis", "pytest (>=6.0)", "pytest-benchmark", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "pytest" -version = "7.4.2" -description = "pytest: simple powerful testing with Python" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} - -[package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "pytest-cov" -version = "4.1.0" -description = "Pytest plugin for measuring coverage." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -coverage = {version = ">=5.2.1", extras = ["toml"]} -pytest = ">=4.6" - -[package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] - -[[package]] -name = "pytest-mock" -version = "3.11.1" -description = "Thin-wrapper around the mock package for easier use with pytest" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -pytest = ">=5.0" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "pytest-subprocess" -version = "1.5.0" -description = "A plugin to fake subprocess for pytest" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -pytest = ">=4.0.0" - -[package.extras] -dev = ["changelogd", "nox"] -docs = ["changelogd", "furo", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-napoleon"] -test = ["Pygments (>=2.0)", "anyio", "coverage", "docutils (>=0.12)", "pytest (>=4.0)", "pytest-asyncio (>=0.15.1)", "pytest-rerunfailures"] - -[[package]] -name = "pywin32-ctypes" -version = "0.2.2" -description = "A (partial) reimplementation of pywin32 using ctypes/cffi" -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "PyYAML" -version = "6.0.1" -description = "YAML parser and emitter for Python" -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "pyzstd" -version = "0.15.9" -description = "Python bindings to Zstandard (zstd) compression library, the API style is similar to Python's bz2/lzma/zlib modules." -category = "main" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "regex" -version = "2022.10.31" -description = "Alternative regular expression module, to replace re." -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "repath" -version = "0.9.0" -description = "Generate regular expressions form ExpressJS path patterns" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -six = ">=1.9.0" - -[[package]] -name = "requests" -version = "2.31.0" -description = "Python HTTP for Humans." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "rfc3986" -version = "1.5.0" -description = "Validating URI References per RFC 3986" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} - -[package.extras] -idna2008 = ["idna"] - -[[package]] -name = "rich" -version = "13.6.0" -description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -category = "main" -optional = false -python-versions = ">=3.7.0" - -[package.dependencies] -markdown-it-py = ">=2.2.0" -pygments = ">=2.13.0,<3.0.0" - -[package.extras] -jupyter = ["ipywidgets (>=7.5.1,<9)"] - -[[package]] -name = "ruff" -version = "0.0.25" -description = "An extremely fast Python linter, written in Rust." -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "schema" -version = "0.7.5" -description = "Simple data validation library" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -contextlib2 = ">=0.5.5" - -[[package]] -name = "setuptools" -version = "68.2.2" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" -optional = false -python-versions = ">=3.8" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "smmap" -version = "5.0.1" -description = "A pure Python implementation of a sliding window memory map manager" -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "sniffio" -version = "1.3.0" -description = "Sniff out which async library your code is running under" -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "stevedore" -version = "5.1.0" -description = "Manage dynamic plugins for Python applications" -category = "main" -optional = false -python-versions = ">=3.8" - -[package.dependencies] -pbr = ">=2.0.0,<2.1.0 || >2.1.0" - -[[package]] -name = "texttable" -version = "1.7.0" -description = "module to create simple ASCII tables" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "tomli" -version = "2.0.1" -description = "A lil' TOML parser" -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "typing-extensions" -version = "4.8.0" -description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" -optional = false -python-versions = ">=3.8" - -[[package]] -name = "urllib3" -version = "2.0.6" -description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "watchdog" -version = "2.3.1" -description = "Filesystem events monitoring" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -watchmedo = ["PyYAML (>=3.10)"] - -[[package]] -name = "websocket-client" -version = "1.6.4" -description = "WebSocket client for Python with low level API options" -category = "main" -optional = false -python-versions = ">=3.8" - -[package.extras] -docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"] -optional = ["python-socks", "wsaccel"] -test = ["websockets"] - -[[package]] -name = "websockets" -version = "10.4" -description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "win32-setctime" -version = "1.1.0" -description = "A small Python utility to set file creation time on Windows" -category = "main" -optional = false -python-versions = ">=3.5" - -[package.extras] -dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] - -[metadata] -lock-version = "1.1" -python-versions = "<3.11,>=3.9" -content-hash = "32f9c700cfcdf109b4a1e27576e6d572da1a73cb1fc63738f76325fb7c37cf85" - -[metadata.files] -altgraph = [ - {file = "altgraph-0.17.4-py2.py3-none-any.whl", hash = "sha256:642743b4750de17e655e6711601b077bc6598dbfa3ba5fa2b2a35ce12b508dff"}, - {file = "altgraph-0.17.4.tar.gz", hash = "sha256:1b5afbb98f6c4dcadb2e2ae6ab9fa994bbb8c1d75f4fa96d340f9437ae454406"}, -] -anyio = [ - {file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"}, - {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"}, -] -bandit = [ - {file = "bandit-1.7.5-py3-none-any.whl", hash = "sha256:75665181dc1e0096369112541a056c59d1c5f66f9bb74a8d686c3c362b83f549"}, - {file = "bandit-1.7.5.tar.gz", hash = "sha256:bdfc739baa03b880c2d15d0431b31c658ffc348e907fe197e54e0389dd59e11e"}, -] -black = [ - {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, - {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, - {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, - {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, - {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, - {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, - {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, - {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, - {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, - {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, - {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, - {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, -] -Brotli = [ +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} +typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "Brotli" +version = "1.1.0" +description = "Python bindings for the Brotli compression library" +optional = false +python-versions = "*" +files = [ {file = "Brotli-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e1140c64812cb9b06c922e77f1c26a75ec5e3f0fb2bf92cc8c58720dec276752"}, {file = "Brotli-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8fd5270e906eef71d4a8d19b7c6a43760c6abcfcc10c9101d14eb2357418de9"}, {file = "Brotli-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ae56aca0402a0f9a3431cddda62ad71666ca9d4dc3a10a142b9dce2e3c0cda3"}, @@ -1019,7 +181,14 @@ Brotli = [ {file = "Brotli-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cdad5b9014d83ca68c25d2e9444e28e967ef16e80f6b436918c700c117a85467"}, {file = "Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724"}, ] -brotlicffi = [ + +[[package]] +name = "brotlicffi" +version = "1.1.0.0" +description = "Python CFFI bindings to the Brotli library" +optional = false +python-versions = ">=3.7" +files = [ {file = "brotlicffi-1.1.0.0-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9b7ae6bd1a3f0df532b6d67ff674099a96d22bc0948955cb338488c31bfb8851"}, {file = "brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19ffc919fa4fc6ace69286e0a23b3789b4219058313cf9b45625016bf7ff996b"}, {file = "brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9feb210d932ffe7798ee62e6145d3a757eb6233aa9a4e7db78dd3690d7755814"}, @@ -1048,11 +217,28 @@ brotlicffi = [ {file = "brotlicffi-1.1.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d9eb71bb1085d996244439154387266fd23d6ad37161f6f52f1cd41dd95a3808"}, {file = "brotlicffi-1.1.0.0.tar.gz", hash = "sha256:b77827a689905143f87915310b93b273ab17888fd43ef350d4832c4a71083c13"}, ] -certifi = [ + +[package.dependencies] +cffi = ">=1.0.0" + +[[package]] +name = "certifi" +version = "2023.7.22" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, ] -cffi = [ + +[[package]] +name = "cffi" +version = "1.16.0" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" +files = [ {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, @@ -1106,7 +292,17 @@ cffi = [ {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, ] -charset-normalizer = [ + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "charset-normalizer" +version = "3.3.0" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ {file = "charset-normalizer-3.3.0.tar.gz", hash = "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6"}, {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe"}, {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a"}, @@ -1198,19 +394,50 @@ charset-normalizer = [ {file = "charset_normalizer-3.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884"}, {file = "charset_normalizer-3.3.0-py3-none-any.whl", hash = "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2"}, ] -click = [ + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] -colorama = [ + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -contextlib2 = [ + +[[package]] +name = "contextlib2" +version = "21.6.0" +description = "Backports and enhancements for the contextlib module" +optional = false +python-versions = ">=3.6" +files = [ {file = "contextlib2-21.6.0-py2.py3-none-any.whl", hash = "sha256:3fbdb64466afd23abaf6c977627b75b6139a5a3e8ce38405c5b413aed7a0471f"}, {file = "contextlib2-21.6.0.tar.gz", hash = "sha256:ab1e2bfe1d01d968e1b7e8d9023bc51ef3509bba217bb730cee3827e1ee82869"}, ] -coverage = [ + +[[package]] +name = "coverage" +version = "7.3.2" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.8" +files = [ {file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"}, {file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"}, {file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"}, @@ -1264,11 +491,34 @@ coverage = [ {file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"}, {file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"}, ] -exceptiongroup = [ + +[package.dependencies] +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "exceptiongroup" +version = "1.1.3" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, ] -flet = [ + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "flet" +version = "0.7.4" +description = "Flet for Python - easily build interactive multi-platform apps in Python" +optional = false +python-versions = ">=3.7,<4.0" +files = [ {file = "flet-0.7.4-py3-none-any.whl", hash = "sha256:aa2ea96d883810b1be1d0b3b7ccbab7e159848b1b17ecd4884d27f6e87e44561"}, {file = "flet-0.7.4-py3-none-macosx_10_14_x86_64.whl", hash = "sha256:d182626579b8f8edbd31d054740761862761568090614d7a972e4a3fdc8f3b95"}, {file = "flet-0.7.4-py3-none-macosx_12_0_arm64.whl", hash = "sha256:005eb2656672f938065799b17d2cc6f7f8af767f8fed7658437453978380221a"}, @@ -1280,35 +530,134 @@ flet = [ {file = "flet-0.7.4-py3-none-win_amd64.whl", hash = "sha256:d5056777371895c38e32bfb947be2a1ee97aedaf0b9cf75f2dcdad225aeaf095"}, {file = "flet-0.7.4.tar.gz", hash = "sha256:bc53e337ee7023282d3f4df9a1d00e49d17d3d07ba797cfa089f50d1df12705a"}, ] -flet-core = [ + +[package.dependencies] +flet-core = "0.7.4" +httpx = ">=0.23.3,<0.24.0" +oauthlib = ">=3.2.2,<4.0.0" +packaging = ">=23.0,<24.0" +watchdog = ">=2.2.1,<3.0.0" +websocket-client = ">=1.4.2,<2.0.0" +websockets = ">=10.4,<11.0" + +[[package]] +name = "flet-core" +version = "0.7.4" +description = "Flet core library" +optional = false +python-versions = ">=3.7,<4.0" +files = [ {file = "flet_core-0.7.4-py3-none-any.whl", hash = "sha256:fa208e8cf1a64613a57c497526a9cb6eb46d153bed61f5ebb9518baf56d15c52"}, {file = "flet_core-0.7.4.tar.gz", hash = "sha256:f161bba1d6221ab7b0e06c03f8c52ecd03e60e7ed5fc69a8701a6ba2ab1b08dc"}, ] -gitdb = [ + +[package.dependencies] +repath = ">=0.9.0,<0.10.0" + +[[package]] +name = "gitdb" +version = "4.0.10" +description = "Git Object Database" +optional = false +python-versions = ">=3.7" +files = [ {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, ] -GitPython = [ + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "GitPython" +version = "3.1.37" +description = "GitPython is a Python library used to interact with Git repositories" +optional = false +python-versions = ">=3.7" +files = [ {file = "GitPython-3.1.37-py3-none-any.whl", hash = "sha256:5f4c4187de49616d710a77e98ddf17b4782060a1788df441846bddefbb89ab33"}, {file = "GitPython-3.1.37.tar.gz", hash = "sha256:f9b9ddc0761c125d5780eab2d64be4873fc6817c2899cbcb34b02344bdc7bc54"}, ] -h11 = [ + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[package.extras] +test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-sugar"] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, ] -httpcore = [ + +[[package]] +name = "httpcore" +version = "0.16.3" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.7" +files = [ {file = "httpcore-0.16.3-py3-none-any.whl", hash = "sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0"}, {file = "httpcore-0.16.3.tar.gz", hash = "sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb"}, ] -httpx = [ + +[package.dependencies] +anyio = ">=3.0,<5.0" +certifi = "*" +h11 = ">=0.13,<0.15" +sniffio = "==1.*" + +[package.extras] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + +[[package]] +name = "httpx" +version = "0.23.3" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.7" +files = [ {file = "httpx-0.23.3-py3-none-any.whl", hash = "sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6"}, {file = "httpx-0.23.3.tar.gz", hash = "sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9"}, ] -idna = [ + +[package.dependencies] +certifi = "*" +httpcore = ">=0.15.0,<0.17.0" +rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<13)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] -inflate64 = [ + +[[package]] +name = "inflate64" +version = "0.3.1" +description = "deflate64 compression/decompression library" +optional = false +python-versions = ">=3.7" +files = [ {file = "inflate64-0.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d4e2a337c6c03b0e96ccd79940cbb04fe2063974d56fff6d78f8d57839546c57"}, {file = "inflate64-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c142fbbbfbe0877fe821ff8bc4cc10f96d344b7400721579b3d17deeae28f59"}, {file = "inflate64-0.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3a17e1dd1a5a872edfc02bc4a048868ada4865a3f4ee3ad5d224b192f2e53df7"}, @@ -1379,35 +728,130 @@ inflate64 = [ {file = "inflate64-0.3.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4e7b0a598adaa11366ffbbb7b3d3110db29edd4b732d9336570891363b22b002"}, {file = "inflate64-0.3.1.tar.gz", hash = "sha256:b52dd8fefd2ba179e5dfa18d6eca7e2fc822584616271c039d5ef1f9ca90c71c"}, ] -iniconfig = [ + +[package.extras] +check = ["check-manifest", "flake8", "flake8-black", "flake8-deprecated", "isort (>=5.0.3)", "mypy (>=0.940)", "mypy-extensions (>=0.4.1)", "pygments", "readme-renderer", "twine"] +docs = ["docutils", "sphinx (>=5.0)"] +test = ["pyannotate", "pytest"] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] -isort = [ + +[[package]] +name = "isort" +version = "5.12.0" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.8.0" +files = [ {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, ] -loguru = [ + +[package.extras] +colors = ["colorama (>=0.4.3)"] +pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] +plugins = ["setuptools"] +requirements-deprecated-finder = ["pip-api", "pipreqs"] + +[[package]] +name = "loguru" +version = "0.6.0" +description = "Python logging made (stupidly) simple" +optional = false +python-versions = ">=3.5" +files = [ {file = "loguru-0.6.0-py3-none-any.whl", hash = "sha256:4e2414d534a2ab57573365b3e6d0234dfb1d84b68b7f3b948e6fb743860a77c3"}, {file = "loguru-0.6.0.tar.gz", hash = "sha256:066bd06758d0a513e9836fd9c6b5a75bfb3fd36841f4b996bc60b547a309d41c"}, ] -macholib = [ + +[package.dependencies] +colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} +win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} + +[package.extras] +dev = ["Sphinx (>=4.1.1)", "black (>=19.10b0)", "colorama (>=0.3.4)", "docutils (==0.16)", "flake8 (>=3.7.7)", "isort (>=5.1.1)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "tox (>=3.9.0)"] + +[[package]] +name = "macholib" +version = "1.16.3" +description = "Mach-O header analysis and editing" +optional = false +python-versions = "*" +files = [ {file = "macholib-1.16.3-py2.py3-none-any.whl", hash = "sha256:0e315d7583d38b8c77e815b1ecbdbf504a8258d8b3e17b61165c6feb60d18f2c"}, {file = "macholib-1.16.3.tar.gz", hash = "sha256:07ae9e15e8e4cd9a788013d81f5908b3609aa76f9b1421bae9c4d7606ec86a30"}, ] -markdown-it-py = [ + +[package.dependencies] +altgraph = ">=0.17" + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, ] -mdurl = [ + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, ] -multivolumefile = [ + +[[package]] +name = "multivolumefile" +version = "0.2.3" +description = "multi volume file wrapper library" +optional = false +python-versions = ">=3.6" +files = [ {file = "multivolumefile-0.2.3-py3-none-any.whl", hash = "sha256:237f4353b60af1703087cf7725755a1f6fcaeeea48421e1896940cd1c920d678"}, {file = "multivolumefile-0.2.3.tar.gz", hash = "sha256:a0648d0aafbc96e59198d5c17e9acad7eb531abea51035d08ce8060dcad709d6"}, ] -mypy = [ + +[package.extras] +check = ["check-manifest", "flake8", "flake8-black", "isort (>=5.0.3)", "pygments", "readme-renderer", "twine"] +test = ["coverage[toml] (>=5.2)", "coveralls (>=2.1.1)", "hypothesis", "pyannotate", "pytest", "pytest-cov"] +type = ["mypy", "mypy-extensions"] + +[[package]] +name = "mypy" +version = "1.6.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.8" +files = [ {file = "mypy-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:091f53ff88cb093dcc33c29eee522c087a438df65eb92acd371161c1f4380ff0"}, {file = "mypy-1.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eb7ff4007865833c470a601498ba30462b7374342580e2346bf7884557e40531"}, {file = "mypy-1.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49499cf1e464f533fc45be54d20a6351a312f96ae7892d8e9f1708140e27ce41"}, @@ -1436,31 +880,95 @@ mypy = [ {file = "mypy-1.6.0-py3-none-any.whl", hash = "sha256:9e1589ca150a51d9d00bb839bfeca2f7a04f32cd62fad87a847bc0818e15d7dc"}, {file = "mypy-1.6.0.tar.gz", hash = "sha256:4f3d27537abde1be6d5f2c96c29a454da333a2a271ae7d5bc7110e6d4b7beb3f"}, ] -mypy-extensions = [ + +[package.dependencies] +mypy-extensions = ">=1.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = ">=4.1.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] -oauthlib = [ + +[[package]] +name = "oauthlib" +version = "3.2.2" +description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" +optional = false +python-versions = ">=3.6" +files = [ {file = "oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca"}, {file = "oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918"}, ] -packaging = [ + +[package.extras] +rsa = ["cryptography (>=3.0.0)"] +signals = ["blinker (>=1.4.0)"] +signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] + +[[package]] +name = "packaging" +version = "23.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] -pathspec = [ + +[[package]] +name = "pathspec" +version = "0.11.2" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.7" +files = [ {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, ] -pbr = [ + +[[package]] +name = "pbr" +version = "5.11.1" +description = "Python Build Reasonableness" +optional = false +python-versions = ">=2.6" +files = [ {file = "pbr-5.11.1-py2.py3-none-any.whl", hash = "sha256:567f09558bae2b3ab53cb3c1e2e33e726ff3338e7bae3db5dc954b3a44eef12b"}, {file = "pbr-5.11.1.tar.gz", hash = "sha256:aefc51675b0b533d56bb5fd1c8c6c0522fe31896679882e1c4c63d5e4a0fccb3"}, ] -pefile = [ + +[[package]] +name = "pefile" +version = "2023.2.7" +description = "Python PE parsing module" +optional = false +python-versions = ">=3.6.0" +files = [ {file = "pefile-2023.2.7-py3-none-any.whl", hash = "sha256:da185cd2af68c08a6cd4481f7325ed600a88f6a813bad9dea07ab3ef73d8d8d6"}, {file = "pefile-2023.2.7.tar.gz", hash = "sha256:82e6114004b3d6911c77c3953e3838654b04511b8b66e8583db70c65998017dc"}, ] -Pillow = [ + +[[package]] +name = "Pillow" +version = "10.0.1" +description = "Python Imaging Library (Fork)" +optional = false +python-versions = ">=3.8" +files = [ {file = "Pillow-10.0.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:8f06be50669087250f319b706decf69ca71fdecd829091a37cc89398ca4dc17a"}, {file = "Pillow-10.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:50bd5f1ebafe9362ad622072a1d2f5850ecfa44303531ff14353a4059113b12d"}, {file = "Pillow-10.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6a90167bcca1216606223a05e2cf991bb25b14695c518bc65639463d7db722d"}, @@ -1516,15 +1024,48 @@ Pillow = [ {file = "Pillow-10.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6caf3cd38449ec3cd8a68b375e0c6fe4b6fd04edb6c9766b55ef84a6e8ddf2d"}, {file = "Pillow-10.0.1.tar.gz", hash = "sha256:d72967b06be9300fed5cfbc8b5bafceec48bf7cdc7dab66b1d2549035287191d"}, ] -platformdirs = [ + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "platformdirs" +version = "3.11.0" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +optional = false +python-versions = ">=3.7" +files = [ {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"}, {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"}, ] -pluggy = [ + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] + +[[package]] +name = "pluggy" +version = "1.3.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, ] -psutil = [ + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "psutil" +version = "5.9.5" +description = "Cross-platform lib for process and system monitoring in Python." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ {file = "psutil-5.9.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:be8929ce4313f9f8146caad4272f6abb8bf99fc6cf59344a3167ecd74f4f203f"}, {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ab8ed1a1d77c95453db1ae00a3f9c50227ebd955437bcf2a574ba8adbf6a74d5"}, {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:4aef137f3345082a3d3232187aeb4ac4ef959ba3d7c10c33dd73763fbc063da4"}, @@ -1540,11 +1081,47 @@ psutil = [ {file = "psutil-5.9.5-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c607bb3b57dc779d55e1554846352b4e358c10fff3abf3514a7a6601beebdb30"}, {file = "psutil-5.9.5.tar.gz", hash = "sha256:5410638e4df39c54d957fc51ce03048acd8e6d60abc0f5107af51e5fb566eb3c"}, ] -py7zr = [ + +[package.extras] +test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] + +[[package]] +name = "py7zr" +version = "0.20.6" +description = "Pure python 7-zip library" +optional = false +python-versions = ">=3.7" +files = [ {file = "py7zr-0.20.6-py3-none-any.whl", hash = "sha256:c7cfb7183fb8f48038f1036a116ca89dc8bd57979d05b75567f00e88a5afe698"}, {file = "py7zr-0.20.6.tar.gz", hash = "sha256:d036dee11fce69ad8d4fa86025ccfc4a3511ec27ee1c6b5bd8d6759313dbd077"}, ] -pybcj = [ + +[package.dependencies] +brotli = {version = ">=1.0.9", markers = "platform_python_implementation == \"CPython\""} +brotlicffi = {version = ">=1.0.9.2", markers = "platform_python_implementation == \"PyPy\""} +inflate64 = {version = ">=0.3.1", markers = "python_version > \"3.6\""} +multivolumefile = ">=0.2.3" +psutil = {version = "*", markers = "sys_platform != \"cygwin\""} +pybcj = ">=0.6.0" +pycryptodomex = ">=3.6.6" +pyppmd = ">=0.18.1,<1.1.0" +pyzstd = ">=0.14.4" +texttable = "*" + +[package.extras] +check = ["black (>=23.1.0)", "check-manifest", "flake8 (<7)", "flake8-black (>=0.3.6)", "flake8-deprecated", "flake8-isort", "isort (>=5.0.3)", "mypy (>=0.940)", "mypy-extensions (>=0.4.1)", "pygments", "readme-renderer", "twine", "types-psutil"] +debug = ["pytest", "pytest-leaks", "pytest-profiling"] +docs = ["docutils", "sphinx (>=5.0)", "sphinx-a4doc", "sphinx-py3doc-enhanced-theme"] +test = ["coverage[toml] (>=5.2)", "coveralls (>=2.1.1)", "py-cpuinfo", "pyannotate", "pytest", "pytest-benchmark", "pytest-cov", "pytest-remotedata", "pytest-timeout"] +test-compat = ["libarchive-c"] + +[[package]] +name = "pybcj" +version = "1.0.1" +description = "bcj filter library" +optional = false +python-versions = ">=3.6" +files = [ {file = "pybcj-1.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:20fc0d8f67e2d9747e0c31082d5f64b112258ae602a85aa5c7e6bf5a7cad287b"}, {file = "pybcj-1.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:43e8bc75773ca06ee7a64602b799613171e4edf4d9d8fd38fa5c49f1cdbb4407"}, {file = "pybcj-1.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a81f14f213a75597f9be44feb97740a51adda558465fb159114472dc2ab39ef8"}, @@ -1624,11 +1201,29 @@ pybcj = [ {file = "pybcj-1.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:6ca6ddae1302477879099d4c4efc65790f4610d71ceff7fbe8f8b60f6ac6dcff"}, {file = "pybcj-1.0.1.tar.gz", hash = "sha256:8b682ed08caabfb7c042d4be083e28ddc692afb1deff5567111f8855071b75c3"}, ] -pycparser = [ + +[package.extras] +check = ["check-manifest", "flake8 (<5)", "flake8-black", "flake8-colors", "flake8-isort", "flake8-pyi", "flake8-typing-imports", "mypy (>=0.812)", "mypy-extensions (>=0.4.3)", "pygments", "readme-renderer"] +test = ["coverage[toml] (>=5.2)", "hypothesis", "pytest (>=6.0)", "pytest-cov"] + +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, ] -pycryptodomex = [ + +[[package]] +name = "pycryptodomex" +version = "3.19.0" +description = "Cryptographic library for Python" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ {file = "pycryptodomex-3.19.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff64fd720def623bf64d8776f8d0deada1cc1bf1ec3c1f9d6f5bb5bd098d034f"}, {file = "pycryptodomex-3.19.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:61056a1fd3254f6f863de94c233b30dd33bc02f8c935b2000269705f1eeeffa4"}, {file = "pycryptodomex-3.19.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:258c4233a3fe5a6341780306a36c6fb072ef38ce676a6d41eec3e591347919e8"}, @@ -1662,11 +1257,28 @@ pycryptodomex = [ {file = "pycryptodomex-3.19.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:50cb18d4dd87571006fd2447ccec85e6cec0136632a550aa29226ba075c80644"}, {file = "pycryptodomex-3.19.0.tar.gz", hash = "sha256:af83a554b3f077564229865c45af0791be008ac6469ef0098152139e6bd4b5b6"}, ] -Pygments = [ + +[[package]] +name = "Pygments" +version = "2.16.1" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.7" +files = [ {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, ] -pyinstaller = [ + +[package.extras] +plugins = ["importlib-metadata"] + +[[package]] +name = "pyinstaller" +version = "5.13.2" +description = "PyInstaller bundles a Python application and all its dependencies into a single package." +optional = false +python-versions = "<3.13,>=3.7" +files = [ {file = "pyinstaller-5.13.2-py3-none-macosx_10_13_universal2.whl", hash = "sha256:16cbd66b59a37f4ee59373a003608d15df180a0d9eb1a29ff3bfbfae64b23d0f"}, {file = "pyinstaller-5.13.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8f6dd0e797ae7efdd79226f78f35eb6a4981db16c13325e962a83395c0ec7420"}, {file = "pyinstaller-5.13.2-py3-none-manylinux2014_i686.whl", hash = "sha256:65133ed89467edb2862036b35d7c5ebd381670412e1e4361215e289c786dd4e6"}, @@ -1680,11 +1292,37 @@ pyinstaller = [ {file = "pyinstaller-5.13.2-py3-none-win_arm64.whl", hash = "sha256:27cd64e7cc6b74c5b1066cbf47d75f940b71356166031deb9778a2579bb874c6"}, {file = "pyinstaller-5.13.2.tar.gz", hash = "sha256:c8e5d3489c3a7cc5f8401c2d1f48a70e588f9967e391c3b06ddac1f685f8d5d2"}, ] -pyinstaller-hooks-contrib = [ + +[package.dependencies] +altgraph = "*" +macholib = {version = ">=1.8", markers = "sys_platform == \"darwin\""} +pefile = {version = ">=2022.5.30", markers = "sys_platform == \"win32\""} +pyinstaller-hooks-contrib = ">=2021.4" +pywin32-ctypes = {version = ">=0.2.1", markers = "sys_platform == \"win32\""} +setuptools = ">=42.0.0" + +[package.extras] +encryption = ["tinyaes (>=1.0.0)"] +hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] + +[[package]] +name = "pyinstaller-hooks-contrib" +version = "2023.9" +description = "Community maintained hooks for PyInstaller" +optional = false +python-versions = ">=3.7" +files = [ {file = "pyinstaller-hooks-contrib-2023.9.tar.gz", hash = "sha256:76084b5988e3957a9df169d2a935d65500136967e710ddebf57263f1a909cd80"}, {file = "pyinstaller_hooks_contrib-2023.9-py2.py3-none-any.whl", hash = "sha256:f34f4c6807210025c8073ebe665f422a3aa2ac5f4c7ebf4c2a26cc77bebf63b5"}, ] -pyppmd = [ + +[[package]] +name = "pyppmd" +version = "1.0.0" +description = "PPMd compression/decompression library" +optional = false +python-versions = ">=3.6" +files = [ {file = "pyppmd-1.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8049c19af4b78b400b2347bff4514763257b55516c359144e9d8091991ed12e8"}, {file = "pyppmd-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1c0fd06aaf782e65b7b5bbc47f8a9dbe050c1ba18474ccbe0a2b37f57a8d8c72"}, {file = "pyppmd-1.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e17b08a5c283faf48b4ee888f8fa53f919cd8afd0930eae4d59f719f6be519fb"}, @@ -1764,32 +1402,113 @@ pyppmd = [ {file = "pyppmd-1.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f1e7a1747518b5822eb755f3715d88bd1459e24de828aed86b7c1aa35e3ed76"}, {file = "pyppmd-1.0.0.tar.gz", hash = "sha256:075c9bd297e3b0a87dd7aeabca7fee668218acbe69ecc1c6511064558de8840f"}, ] -pytest = [ + +[package.extras] +check = ["check-manifest", "flake8", "flake8-black", "isort (>=5.0.3)", "mypy (>=0.812)", "mypy-extensions (>=0.4.3)", "pygments", "readme-renderer"] +docs = ["sphinx (>=2.3)", "sphinx-rtd-theme"] +fuzzer = ["atheris", "hypothesis"] +test = ["coverage[toml] (>=5.2)", "hypothesis", "pytest (>=6.0)", "pytest-benchmark", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "pytest" +version = "7.4.2" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.7" +files = [ {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"}, {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"}, ] -pytest-cov = [ + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-cov" +version = "4.1.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.7" +files = [ {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, ] -pytest-mock = [ + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] + +[[package]] +name = "pytest-mock" +version = "3.11.1" +description = "Thin-wrapper around the mock package for easier use with pytest" +optional = false +python-versions = ">=3.7" +files = [ {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"}, {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"}, ] -pytest-subprocess = [ + +[package.dependencies] +pytest = ">=5.0" + +[package.extras] +dev = ["pre-commit", "pytest-asyncio", "tox"] + +[[package]] +name = "pytest-subprocess" +version = "1.5.0" +description = "A plugin to fake subprocess for pytest" +optional = false +python-versions = ">=3.6" +files = [ {file = "pytest-subprocess-1.5.0.tar.gz", hash = "sha256:d7693b96f588f39b84c7b2b5c04287459246dfae6be1dd4098937a728ad4fbe3"}, {file = "pytest_subprocess-1.5.0-py3-none-any.whl", hash = "sha256:dfd75b10af6800a89a9b758f2e2eceff9de082a27bd1388521271b6e8bde298b"}, ] -pywin32-ctypes = [ + +[package.dependencies] +pytest = ">=4.0.0" + +[package.extras] +dev = ["changelogd", "nox"] +docs = ["changelogd", "furo", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-napoleon"] +test = ["Pygments (>=2.0)", "anyio", "coverage", "docutils (>=0.12)", "pytest (>=4.0)", "pytest-asyncio (>=0.15.1)", "pytest-rerunfailures"] + +[[package]] +name = "pywin32-ctypes" +version = "0.2.2" +description = "A (partial) reimplementation of pywin32 using ctypes/cffi" +optional = false +python-versions = ">=3.6" +files = [ {file = "pywin32-ctypes-0.2.2.tar.gz", hash = "sha256:3426e063bdd5fd4df74a14fa3cf80a0b42845a87e1d1e81f6549f9daec593a60"}, {file = "pywin32_ctypes-0.2.2-py3-none-any.whl", hash = "sha256:bf490a1a709baf35d688fe0ecf980ed4de11d2b3e37b51e5442587a75d9957e7"}, ] -PyYAML = [ + +[[package]] +name = "PyYAML" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -1797,8 +1516,15 @@ PyYAML = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -1815,6 +1541,7 @@ PyYAML = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -1822,11 +1549,19 @@ PyYAML = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, ] -pyzstd = [ + +[[package]] +name = "pyzstd" +version = "0.15.9" +description = "Python bindings to Zstandard (zstd) compression library, the API style is similar to Python's bz2/lzma/zlib modules." +optional = false +python-versions = ">=3.5" +files = [ {file = "pyzstd-0.15.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:209a92fbe892bd69cde58ffcb4861468e2c3c2d0626763e16e122bb55cb1fb1a"}, {file = "pyzstd-0.15.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f6d8a881b50bb2015e9bdba5edb0331e85d41ff44ab33cde551047480b98d748"}, {file = "pyzstd-0.15.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdc09de97b1b3f6c3d87fec04d6fe29dd4fefe6b354ad2d822fc369b8aa0942b"}, @@ -1856,6 +1591,20 @@ pyzstd = [ {file = "pyzstd-0.15.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:542808d88464d538f5d2c6b48b545a7fe15f0d20c7fa703b469d039a08c9fa10"}, {file = "pyzstd-0.15.9-cp311-cp311-win32.whl", hash = "sha256:e79babb67b415aa54abb213897ceaa011515a5f3e146a2a97f4e6486b9743af4"}, {file = "pyzstd-0.15.9-cp311-cp311-win_amd64.whl", hash = "sha256:ef3399e0544b46d31c2a8ff14ae1fb3c3571ae1153bbbc5ddf0d242c67bde624"}, + {file = "pyzstd-0.15.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:418e9a676cc7ce00edd2fd044ee063c8639fd8cd6897ffda395a152cdc66ec97"}, + {file = "pyzstd-0.15.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:52dcae42f32f7a25c6b90bd479f3d04902700e3214e8fffe1bfe70053eb35ccb"}, + {file = "pyzstd-0.15.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c36dbbf71480f1fffeaeca901adb31e0c7d59270a239eca63fe26e4647b7aca8"}, + {file = "pyzstd-0.15.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfa981cedd54bb8862d9033440a0afac38845db89e7099ceeb4f4d064dffd2f8"}, + {file = "pyzstd-0.15.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:937f118fdd7a23654886634f650d6502a2dd12c8a8e2bf14beb2fa5fa95058bf"}, + {file = "pyzstd-0.15.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:922f1bb8ef80c42a2fca297ba0b03442c143a9a1f717e83db79f190514888803"}, + {file = "pyzstd-0.15.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78c38850af6b990e8ec1bc87b48f73ed5cc633f4baaa7bbc78f9b2f4449cf081"}, + {file = "pyzstd-0.15.9-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5453ebe42a2c7462fa532fd03cbf64e5c6baf5508b3089736c78444148d3c593"}, + {file = "pyzstd-0.15.9-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:da070933d4bcfcbf58472da12ffa77c9fbc90efb39e21a9b74eb04b5af4b412a"}, + {file = "pyzstd-0.15.9-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:c8d1966e38c220d5940f8cb6303651af261f0bcfce77218a030b1a24ec986e2f"}, + {file = "pyzstd-0.15.9-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:145ca5ed6240af2cbfc09faa50aada8aacf1e2928ed6dd9da1d6b8ebe39cdc4c"}, + {file = "pyzstd-0.15.9-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9638d40ec02a5b194a4c98a5b6e36cdfde4e9d6b721ae6167ef8e57d2e69002f"}, + {file = "pyzstd-0.15.9-cp312-cp312-win32.whl", hash = "sha256:f73821d429bfbb04645b80ec491ab05b35078f031f9fa3273fbf9027d1406233"}, + {file = "pyzstd-0.15.9-cp312-cp312-win_amd64.whl", hash = "sha256:02c95d7109052c985b7d90dac6f6010bc0630227f15aec16302162107137bdbc"}, {file = "pyzstd-0.15.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cd6a8d43a0c294918e3afb7e4b1d8c04d2e4c3ea9ddf05475fdaf366c7e5b3a6"}, {file = "pyzstd-0.15.9-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aed5fc86d0bfc5f16e871cbb35ec93df61476d7fde4c1c6081015a075ecfbc1"}, {file = "pyzstd-0.15.9-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f9eb97fb6fd4551ff9d5012b4fcee9abeea9c8af6b9e3ebc3c76cc2bd0a43a7"}, @@ -1914,6 +1663,11 @@ pyzstd = [ {file = "pyzstd-0.15.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3351ad2feb51dcbb936defd47cab00d6f114214f224636503ed08298f30164c9"}, {file = "pyzstd-0.15.9-cp39-cp39-win32.whl", hash = "sha256:3bc0e7e2cccf78e562ab416daf68448b6552a5b6450a1ff3e15cabfc19254883"}, {file = "pyzstd-0.15.9-cp39-cp39-win_amd64.whl", hash = "sha256:40bdb468281a5cd525e2e990b97344f0974e0589bd1b395501c25471fcd7edda"}, + {file = "pyzstd-0.15.9-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c9589cb79d4e401630481755c92b072aa7ba5505ec81dec865ef43932ec037e4"}, + {file = "pyzstd-0.15.9-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a26df749589d898cd3253d2139eb85b867ddffc49286059c8bdb3cb9ce9b545"}, + {file = "pyzstd-0.15.9-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9934277abdddf9c733267e4dcc4886de8a3302d28f390237d447e215e8ce47d"}, + {file = "pyzstd-0.15.9-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca19213785f864781848e0216cba07e97f563f60a50bbc7885b54461d8c64873"}, + {file = "pyzstd-0.15.9-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:84aa6eecba967bdac167451501dcaceec548d8b8c4ca7fa41ceda4dbfc279297"}, {file = "pyzstd-0.15.9-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:47c2a4c319300c381f194274203f47b12c433e1fd86b90ecdc7fb258c630f93b"}, {file = "pyzstd-0.15.9-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86e0e65e205793b337d62d9764700dfd02b5f83b01e26ad345736e7ac0554ebd"}, {file = "pyzstd-0.15.9-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64564f4c175c5bb8e744de5816d69ee0b940e472160a5e665f30adc412b694f3"}, @@ -1933,7 +1687,14 @@ pyzstd = [ {file = "pyzstd-0.15.9-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:289e25871fe232d2482c0985a75a1faa7c92e10a6c3e3914d165f62d005d0aa6"}, {file = "pyzstd-0.15.9.tar.gz", hash = "sha256:cbfdde6c5768ffa5d2f14127bbc1d7c3c2d03c0ceaeb0736946197e06275ccc7"}, ] -regex = [ + +[[package]] +name = "regex" +version = "2022.10.31" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.6" +files = [ {file = "regex-2022.10.31-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f"}, {file = "regex-2022.10.31-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9"}, {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b"}, @@ -2023,23 +1784,84 @@ regex = [ {file = "regex-2022.10.31-cp39-cp39-win_amd64.whl", hash = "sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692"}, {file = "regex-2022.10.31.tar.gz", hash = "sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83"}, ] -repath = [ + +[[package]] +name = "repath" +version = "0.9.0" +description = "Generate regular expressions form ExpressJS path patterns" +optional = false +python-versions = "*" +files = [ {file = "repath-0.9.0-py3-none-any.whl", hash = "sha256:ee079d6c91faeb843274d22d8f786094ee01316ecfe293a1eb6546312bb6a318"}, {file = "repath-0.9.0.tar.gz", hash = "sha256:8292139bac6a0e43fd9d70605d4e8daeb25d46672e484ed31a24c7ce0aef0fb7"}, ] -requests = [ + +[package.dependencies] +six = ">=1.9.0" + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, ] -rfc3986 = [ + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "rfc3986" +version = "1.5.0" +description = "Validating URI References per RFC 3986" +optional = false +python-versions = "*" +files = [ {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, ] -rich = [ + +[package.dependencies] +idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} + +[package.extras] +idna2008 = ["idna"] + +[[package]] +name = "rich" +version = "13.6.0" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.7.0" +files = [ {file = "rich-13.6.0-py3-none-any.whl", hash = "sha256:2b38e2fe9ca72c9a00170a1a2d20c63c790d0e10ef1fe35eba76e1e7b1d7d245"}, {file = "rich-13.6.0.tar.gz", hash = "sha256:5c14d22737e6d5084ef4771b62d5d4363165b403455a30a1c8ca39dc7b644bef"}, ] -ruff = [ + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + +[[package]] +name = "ruff" +version = "0.0.25" +description = "An extremely fast Python linter, written in Rust." +optional = false +python-versions = ">=3.7" +files = [ {file = "ruff-0.0.25-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:196714934f0c902ef4d1bf2fad8dd60a23c03a1077dad8ecd9a4ce9c3dc10937"}, {file = "ruff-0.0.25-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:f50842b5ea74e9a2e286bc83a9c4ff54a5c7439238843b46998d07838d7f4cd0"}, {file = "ruff-0.0.25-py3-none-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e774538075e7f3d1e3d4ea4f18d8d50e5964fd2c7fff54ddf39010b10ee1b49f"}, @@ -2057,47 +1879,141 @@ ruff = [ {file = "ruff-0.0.25-py3-none-win_amd64.whl", hash = "sha256:fa4df41b5a9622661402766015588663176f6c4b8abf403b739eec3f058fac2b"}, {file = "ruff-0.0.25.tar.gz", hash = "sha256:00383f785841f2c04d9eb281d316fd74e0b4f9171b641bd20fab98273b39c097"}, ] -schema = [ + +[[package]] +name = "schema" +version = "0.7.5" +description = "Simple data validation library" +optional = false +python-versions = "*" +files = [ {file = "schema-0.7.5-py2.py3-none-any.whl", hash = "sha256:f3ffdeeada09ec34bf40d7d79996d9f7175db93b7a5065de0faa7f41083c1e6c"}, {file = "schema-0.7.5.tar.gz", hash = "sha256:f06717112c61895cabc4707752b88716e8420a8819d71404501e114f91043197"}, ] -setuptools = [ + +[package.dependencies] +contextlib2 = ">=0.5.5" + +[[package]] +name = "setuptools" +version = "68.2.2" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, ] -six = [ + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -smmap = [ + +[[package]] +name = "smmap" +version = "5.0.1" +description = "A pure Python implementation of a sliding window memory map manager" +optional = false +python-versions = ">=3.7" +files = [ {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, ] -sniffio = [ + +[[package]] +name = "sniffio" +version = "1.3.0" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +files = [ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, ] -stevedore = [ + +[[package]] +name = "stevedore" +version = "5.1.0" +description = "Manage dynamic plugins for Python applications" +optional = false +python-versions = ">=3.8" +files = [ {file = "stevedore-5.1.0-py3-none-any.whl", hash = "sha256:8cc040628f3cea5d7128f2e76cf486b2251a4e543c7b938f58d9a377f6694a2d"}, {file = "stevedore-5.1.0.tar.gz", hash = "sha256:a54534acf9b89bc7ed264807013b505bf07f74dbe4bcfa37d32bd063870b087c"}, ] -texttable = [ + +[package.dependencies] +pbr = ">=2.0.0,<2.1.0 || >2.1.0" + +[[package]] +name = "texttable" +version = "1.7.0" +description = "module to create simple ASCII tables" +optional = false +python-versions = "*" +files = [ {file = "texttable-1.7.0-py2.py3-none-any.whl", hash = "sha256:72227d592c82b3d7f672731ae73e4d1f88cd8e2ef5b075a7a7f01a23a3743917"}, {file = "texttable-1.7.0.tar.gz", hash = "sha256:2d2068fb55115807d3ac77a4ca68fa48803e84ebb0ee2340f858107a36522638"}, ] -tomli = [ + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.7" +files = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] -typing-extensions = [ + +[[package]] +name = "typing-extensions" +version = "4.8.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, ] -urllib3 = [ - {file = "urllib3-2.0.6-py3-none-any.whl", hash = "sha256:7a7c7003b000adf9e7ca2a377c9688bbc54ed41b985789ed576570342a375cd2"}, - {file = "urllib3-2.0.6.tar.gz", hash = "sha256:b19e1a85d206b56d7df1d5e683df4a7725252a964e3993648dd0fb5a1c157564"}, + +[[package]] +name = "urllib3" +version = "2.0.7" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.7" +files = [ + {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, + {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, ] -watchdog = [ + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "watchdog" +version = "2.3.1" +description = "Filesystem events monitoring" +optional = false +python-versions = ">=3.6" +files = [ {file = "watchdog-2.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1f1200d4ec53b88bf04ab636f9133cb703eb19768a39351cee649de21a33697"}, {file = "watchdog-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:564e7739abd4bd348aeafbf71cc006b6c0ccda3160c7053c4a53b67d14091d42"}, {file = "watchdog-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:95ad708a9454050a46f741ba5e2f3468655ea22da1114e4c40b8cbdaca572565"}, @@ -2127,11 +2043,33 @@ watchdog = [ {file = "watchdog-2.3.1-py3-none-win_ia64.whl", hash = "sha256:4109cccf214b7e3462e8403ab1e5b17b302ecce6c103eb2fc3afa534a7f27b96"}, {file = "watchdog-2.3.1.tar.gz", hash = "sha256:d9f9ed26ed22a9d331820a8432c3680707ea8b54121ddcc9dc7d9f2ceeb36906"}, ] -websocket-client = [ + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + +[[package]] +name = "websocket-client" +version = "1.6.4" +description = "WebSocket client for Python with low level API options" +optional = false +python-versions = ">=3.8" +files = [ {file = "websocket-client-1.6.4.tar.gz", hash = "sha256:b3324019b3c28572086c4a319f91d1dcd44e6e11cd340232978c684a7650d0df"}, {file = "websocket_client-1.6.4-py3-none-any.whl", hash = "sha256:084072e0a7f5f347ef2ac3d8698a5e0b4ffbfcab607628cadabc650fc9a83a24"}, ] -websockets = [ + +[package.extras] +docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"] +optional = ["python-socks", "wsaccel"] +test = ["websockets"] + +[[package]] +name = "websockets" +version = "10.4" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +optional = false +python-versions = ">=3.7" +files = [ {file = "websockets-10.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d58804e996d7d2307173d56c297cf7bc132c52df27a3efaac5e8d43e36c21c48"}, {file = "websockets-10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc0b82d728fe21a0d03e65f81980abbbcb13b5387f733a1a870672c5be26edab"}, {file = "websockets-10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ba089c499e1f4155d2a3c2a05d2878a3428cf321c848f2b5a45ce55f0d7d310c"}, @@ -2202,7 +2140,22 @@ websockets = [ {file = "websockets-10.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:05a7233089f8bd355e8cbe127c2e8ca0b4ea55467861906b80d2ebc7db4d6b72"}, {file = "websockets-10.4.tar.gz", hash = "sha256:eef610b23933c54d5d921c92578ae5f89813438fded840c2e9809d378dc765d3"}, ] -win32-setctime = [ + +[[package]] +name = "win32-setctime" +version = "1.1.0" +description = "A small Python utility to set file creation time on Windows" +optional = false +python-versions = ">=3.5" +files = [ {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, ] + +[package.extras] +dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] + +[metadata] +lock-version = "2.0" +python-versions = "<3.11,>=3.9" +content-hash = "32f9c700cfcdf109b4a1e27576e6d572da1a73cb1fc63738f76325fb7c37cf85" From cc7444ce69e22dee0508137f610ec636d1b3a145 Mon Sep 17 00:00:00 2001 From: Tobias Sterbak Date: Sun, 24 Dec 2023 11:29:29 +0000 Subject: [PATCH 24/27] Refactor metadata loading from ROM image; improve Makefile --- Makefile | 14 ++++++ openandroidinstaller/utils.py | 82 ++++++++++++++++++++++++----------- 2 files changed, 71 insertions(+), 25 deletions(-) diff --git a/Makefile b/Makefile index 4b7aeae7..93f0e1a5 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,17 @@ +.phoney: install export format lint typing test app test-app build-app clean-build + +help: + @echo "install - install dependencies" + @echo "export - export dependencies to requirements.txt" + @echo "format - format code with black" + @echo "lint - lint code with ruff" + @echo "typing - type check code with mypy" + @echo "test - run tests" + @echo "app - run app" + @echo "test-app - run app in test mode with test config for sargo" + @echo "build-app - build app" + @echo "clean-build - clean build" + poetry: curl -sSL https://install.python-poetry.org | python3 - diff --git a/openandroidinstaller/utils.py b/openandroidinstaller/utils.py index a8511611..b29745df 100644 --- a/openandroidinstaller/utils.py +++ b/openandroidinstaller/utils.py @@ -40,6 +40,34 @@ def get_download_link(devicecode: str) -> Optional[str]: return None +def retrieve_image_metadata(image_path: str) -> dict: + """Retrieve metadata from the selected image. + + Args: + image_path: Path to the image file. + + Returns: + Dictionary containing the metadata. + """ + metapath = "META-INF/com/android/metadata" + try: + with zipfile.ZipFile(image_path) as image_zip: + with image_zip.open(metapath, mode="r") as image_metadata: + metadata = image_metadata.readlines() + metadata_dict = {} + for line in metadata: + metadata_dict[line[: line.find(b"=")].decode("utf-8")] = line[ + line.find(b"=") + 1 : -1 + ].decode("utf-8") + logger.info(f"Metadata retrieved from image {image_path.split('/')[-1]}.") + return metadata_dict + except FileNotFoundError: + logger.error( + f"Metadata file {metapath} not found in {image_path.split('/')[-1]}." + ) + return dict() + + def image_works_with_device(supported_device_codes: List[str], image_path: str) -> bool: """Determine if an image works for the given device. @@ -50,22 +78,21 @@ def image_works_with_device(supported_device_codes: List[str], image_path: str) Returns: True if the image works with the device, False otherwise. """ - with zipfile.ZipFile(image_path) as image_zip: - with image_zip.open( - "META-INF/com/android/metadata", mode="r" - ) as image_metadata: - metadata = image_metadata.readlines() - supported_devices = str(metadata[-1]).split("=")[-1][:-3].split(",") - logger.info(f"Image works with device: {supported_devices}") - - if any(code in supported_devices for code in supported_device_codes): - logger.success("Device supported by the selected image.") - return True - else: - logger.error( - f"Image file {image_path.split('/')[-1]} is not supported." - ) - return False + metadata = retrieve_image_metadata(image_path) + try: + supported_devices = metadata["pre-device"].split(",") + logger.info(f"Image works with the following device(s): {supported_devices}") + if any(code in supported_devices for code in supported_device_codes): + logger.success("Device supported by the selected image.") + return True + else: + logger.error(f"Image file {image_path.split('/')[-1]} is not supported.") + return False + except KeyError: + logger.error( + f"Could not determine supported devices for {image_path.split('/')[-1]}." + ) + return False def image_sdk_level(image_path: str) -> int: @@ -73,16 +100,21 @@ def image_sdk_level(image_path: str) -> int: Example: Android 13: 33 + + Args: + image_path: Path to the image file. + + Returns: + Android version as integer. """ - with zipfile.ZipFile(image_path) as image_zip: - with image_zip.open( - "META-INF/com/android/metadata", mode="r" - ) as image_metadata: - metadata = image_metadata.readlines() - for line in metadata: - if b"sdk-level" in line: - return int(line[line.find(b"=") + 1 : -1].decode("utf-8")) - return 0 + metadata = retrieve_image_metadata(image_path) + try: + sdk_level = metadata["post-sdk-level"] + logger.info(f"Android version of {image_path}: {sdk_level}") + return int(sdk_level) + except (ValueError, TypeError, KeyError) as e: + logger.error(f"Could not determine Android version of {image_path}. Error: {e}") + return 0 def recovery_works_with_device( From d0b6c6fc5be3afab169e113c025a8472d352aa10 Mon Sep 17 00:00:00 2001 From: Tobias Sterbak Date: Sun, 24 Dec 2023 12:19:25 +0000 Subject: [PATCH 25/27] Rework the user messages of the image/recovery selection and the validation process --- openandroidinstaller/utils.py | 107 +++++++++++++++------- openandroidinstaller/views/select_view.py | 55 ++++++----- 2 files changed, 102 insertions(+), 60 deletions(-) diff --git a/openandroidinstaller/utils.py b/openandroidinstaller/utils.py index b29745df..4a16062f 100644 --- a/openandroidinstaller/utils.py +++ b/openandroidinstaller/utils.py @@ -14,12 +14,35 @@ # Author: Tobias Sterbak import zipfile +from dataclasses import dataclass +from enum import Enum from typing import Optional, List import requests from loguru import logger +class CompatibilityStatus(Enum): + """Enum for the compatibility status of a device.""" + + UNKNOWN = 0 + COMPATIBLE = 1 + INCOMPATIBLE = 2 + + +@dataclass +class CheckResult: + """Dataclass for the result of a check. + + Attributes: + status: Compatibility status of the device. + message: Message to be displayed to the user. + """ + + status: CompatibilityStatus + message: str + + def get_download_link(devicecode: str) -> Optional[str]: """Check if a lineageOS version for this device exists on download.lineageos.com and return the respective download link.""" url = f"https://download.lineageos.org/api/v2/devices/{devicecode}" @@ -61,14 +84,42 @@ def retrieve_image_metadata(image_path: str) -> dict: ].decode("utf-8") logger.info(f"Metadata retrieved from image {image_path.split('/')[-1]}.") return metadata_dict - except FileNotFoundError: + except (FileNotFoundError, KeyError): logger.error( f"Metadata file {metapath} not found in {image_path.split('/')[-1]}." ) return dict() -def image_works_with_device(supported_device_codes: List[str], image_path: str) -> bool: +def image_sdk_level(image_path: str) -> int: + """Determine Android version of the selected image. + + Examples: + Android 10: 29 + Android 11: 30 + Android 12: 31 + Android 12.1: 32 + Android 13: 33 + + Args: + image_path: Path to the image file. + + Returns: + Android version as integer. + """ + metadata = retrieve_image_metadata(image_path) + try: + sdk_level = metadata["post-sdk-level"] + logger.info(f"Android version of {image_path}: {sdk_level}") + return int(sdk_level) + except (ValueError, TypeError, KeyError) as e: + logger.error(f"Could not determine Android version of {image_path}. Error: {e}") + return -1 + + +def image_works_with_device( + supported_device_codes: List[str], image_path: str +) -> CheckResult: """Determine if an image works for the given device. Args: @@ -76,7 +127,7 @@ def image_works_with_device(supported_device_codes: List[str], image_path: str) image_path: Path to the image file. Returns: - True if the image works with the device, False otherwise. + CheckResult object containing the compatibility status and a message. """ metadata = retrieve_image_metadata(image_path) try: @@ -84,42 +135,29 @@ def image_works_with_device(supported_device_codes: List[str], image_path: str) logger.info(f"Image works with the following device(s): {supported_devices}") if any(code in supported_devices for code in supported_device_codes): logger.success("Device supported by the selected image.") - return True + return CheckResult( + CompatibilityStatus.COMPATIBLE, + "Device supported by the selected image.", + ) else: logger.error(f"Image file {image_path.split('/')[-1]} is not supported.") - return False + return CheckResult( + CompatibilityStatus.INCOMPATIBLE, + f"Image file {image_path.split('/')[-1]} is not supported by device code.", + ) except KeyError: logger.error( f"Could not determine supported devices for {image_path.split('/')[-1]}." ) - return False - - -def image_sdk_level(image_path: str) -> int: - """Determine Android version of the selected image. - - Example: - Android 13: 33 - - Args: - image_path: Path to the image file. - - Returns: - Android version as integer. - """ - metadata = retrieve_image_metadata(image_path) - try: - sdk_level = metadata["post-sdk-level"] - logger.info(f"Android version of {image_path}: {sdk_level}") - return int(sdk_level) - except (ValueError, TypeError, KeyError) as e: - logger.error(f"Could not determine Android version of {image_path}. Error: {e}") - return 0 + return CheckResult( + CompatibilityStatus.UNKNOWN, + f"Could not determine supported devices for {image_path.split('/')[-1]}. Missing metadata file? You may try to flash the image anyway.", + ) def recovery_works_with_device( supported_device_codes: List[str], recovery_path: str -) -> bool: +) -> CheckResult: """Determine if a recovery works for the given device. BEWARE: THE RECOVERY PART IS STILL VERY BASIC! @@ -129,14 +167,19 @@ def recovery_works_with_device( recovery_path: Path to the recovery file. Returns: - True if the recovery works with the device, False otherwise. + CheckResult object containing the compatibility status and a message. """ recovery_file_name = recovery_path.split("/")[-1] if any(code in recovery_file_name for code in supported_device_codes) and ( "twrp" in recovery_file_name ): logger.success("Device supported by the selected recovery.") - return True + return CheckResult( + CompatibilityStatus.COMPATIBLE, "Device supported by the selected recovery." + ) else: logger.error(f"Recovery file {recovery_file_name} is not supported.") - return False + return CheckResult( + CompatibilityStatus.INCOMPATIBLE, + f"Recovery file {recovery_file_name} is not supported by device code in file name.", + ) diff --git a/openandroidinstaller/views/select_view.py b/openandroidinstaller/views/select_view.py index d5937870..f0921abb 100644 --- a/openandroidinstaller/views/select_view.py +++ b/openandroidinstaller/views/select_view.py @@ -46,6 +46,8 @@ image_works_with_device, recovery_works_with_device, image_sdk_level, + CheckResult, + CompatibilityStatus, ) @@ -145,6 +147,9 @@ def init_visuals( icon=icons.ARROW_BACK, expand=True, ) + # store image and recovery compatibility + self.image_compatibility: CheckResult | None = None + self.recovery_compatibility: CheckResult | None = None def build(self): self.clear() @@ -533,17 +538,21 @@ def pick_image_result(self, e: FilePickerResultEvent): logger.info("No image selected.") # check if the image works with the device and show the filename in different colors accordingly if e.files: - if image_works_with_device( + self.image_compatibility = image_works_with_device( supported_device_codes=self.state.config.supported_device_codes, image_path=self.state.image_path, - ): + ) + if self.image_compatibility.status == CompatibilityStatus.COMPATIBLE: self.selected_image.color = colors.GREEN + elif self.image_compatibility.status == CompatibilityStatus.UNKNOWN: + self.selected_image.color = colors.ORANGE else: self.selected_image.color = colors.RED + self.selected_image.value += f"\n> {self.image_compatibility.message}" # if the image works and the sdk level is 33 or higher, show the additional image selection if self.state.flash_recovery: if ( - self.selected_image.color == colors.GREEN + self.image_compatibility and image_sdk_level(self.state.image_path) >= 33 ): self.toggle_additional_image_selection() @@ -567,13 +576,17 @@ def pick_recovery_result(self, e: FilePickerResultEvent): logger.info("No image selected.") # check if the recovery works with the device and show the filename in different colors accordingly if e.files: - if recovery_works_with_device( + self.recovery_compatibility = recovery_works_with_device( supported_device_codes=self.state.config.supported_device_codes, recovery_path=self.state.recovery_path, - ): + ) + if self.recovery_compatibility.status == CompatibilityStatus.COMPATIBLE: self.selected_recovery.color = colors.GREEN + elif self.recovery_compatibility.status == CompatibilityStatus.UNKNOWN: + self.selected_recovery.color = colors.ORANGE else: self.selected_recovery.color = colors.RED + self.selected_recovery.value += f"\n> {self.recovery_compatibility.message}" # update self.selected_recovery.update() @@ -654,15 +667,10 @@ def enable_button_if_ready(self, e): if (".zip" in self.selected_image.value) and ( ".img" in self.selected_recovery.value ): - if not ( - image_works_with_device( - supported_device_codes=self.state.config.supported_device_codes, - image_path=self.state.image_path, - ) - and recovery_works_with_device( - supported_device_codes=self.state.config.supported_device_codes, - recovery_path=self.state.recovery_path, - ) + if ( + self.image_compatibility.status == CompatibilityStatus.INCOMPATIBLE + ) or ( + self.recovery_compatibility.status == CompatibilityStatus.INCOMPATIBLE ): # if image and recovery work for device allow to move on, otherwise display message logger.error( @@ -670,7 +678,7 @@ def enable_button_if_ready(self, e): ) self.info_field.controls = [ Text( - "Image and/or recovery don't work with the device. Make sure you use a TWRP-based recovery.", + "Something is wrong with the selected files.", color=colors.RED, weight="bold", ) @@ -695,12 +703,10 @@ def enable_button_if_ready(self, e): or "vendor_boot" not in self.state.config.additional_steps, ] ): - logger.error( - "Some additional images don't match or are missing. Please select different ones." - ) + logger.error("Some additional images don't match or are missing.") self.info_field.controls = [ Text( - "Some additional images don't match or are missing. Please select the right ones.", + "Some additional images don't match or are missing.", color=colors.RED, weight="bold", ) @@ -715,16 +721,9 @@ def enable_button_if_ready(self, e): self.continue_eitherway_button.disabled = True self.right_view.update() elif (".zip" in self.selected_image.value) and (not self.state.flash_recovery): - if not ( - image_works_with_device( - supported_device_codes=self.state.config.supported_device_codes, - image_path=self.state.image_path, - ) - ): + if self.image_compatibility.status != CompatibilityStatus.COMPATIBLE: # if image works for device allow to move on, otherwise display message - logger.error( - "Image doesn't work with the device. Please select a different one." - ) + logger.error("Image doesn't work with the device.") self.info_field.controls = [ Text( "Image doesn't work with the device.", From ff63520836007eb76d91aa83517e0d29eeeaebab Mon Sep 17 00:00:00 2001 From: Tobias Sterbak Date: Sun, 24 Dec 2023 12:30:08 +0000 Subject: [PATCH 26/27] Prevent failing when progress goes over 100% --- openandroidinstaller/widgets.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/openandroidinstaller/widgets.py b/openandroidinstaller/widgets.py index e4400c5a..51279193 100644 --- a/openandroidinstaller/widgets.py +++ b/openandroidinstaller/widgets.py @@ -141,7 +141,7 @@ def display_progress_bar(self, line: str): percentage_done = int(result.group(1)) if percentage_done == 0: percentage_done = 1 - elif percentage_done == 100: + elif percentage_done >= 100: percentage_done = 99 # update the progress bar @@ -153,9 +153,10 @@ def set_progress_bar(self, percentage_done: int): Args: percentage_done (int): Percentage of the progress bar to be filled. """ - assert ( - percentage_done >= 0 and percentage_done <= 100 - ), "Percentage must be between 0 and 100" + assert percentage_done >= 0, "Percentage must be non-negative." + # clip the percentage to 100 + if percentage_done > 100: + percentage_done = 100 if self.progress_bar: self.progress_bar.value = percentage_done / 100 self.percentage_text.value = f"{percentage_done}%" From bb1cd2046d18fa6f4449cfb4b10901d08b2bb398 Mon Sep 17 00:00:00 2001 From: Tobias Sterbak Date: Tue, 26 Dec 2023 09:41:21 +0000 Subject: [PATCH 27/27] Minor improvements to progressbar --- openandroidinstaller/widgets.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/openandroidinstaller/widgets.py b/openandroidinstaller/widgets.py index e4400c5a..49227912 100644 --- a/openandroidinstaller/widgets.py +++ b/openandroidinstaller/widgets.py @@ -68,7 +68,7 @@ def write_line(self, line: str): Ignores empty lines. """ - if (type(line) == str) and line.strip(): + if isinstance(line, str) and line.strip(): self._box.content.controls[0].value += f"\n>{line.strip()}" self._box.content.controls[0].value = self._box.content.controls[ 0 @@ -115,7 +115,7 @@ def display_progress_bar(self, line: str): percentage_done = None result = None # create the progress bar - if self.progress_bar == None: + if not self.progress_bar: self.progress_bar = ProgressBar( value=1 / 100, width=500, @@ -129,7 +129,7 @@ def display_progress_bar(self, line: str): Row([self.percentage_text, self.progress_bar]) ) # get the progress numbers from the output lines - if (type(line) == str) and line.strip(): + if isinstance(line, str) and line.strip(): result = re.search( r"\(\~(\d{1,3})\%\)|(Total xfer:|adb: failed to read command: Success)", line.strip(), @@ -139,10 +139,7 @@ def display_progress_bar(self, line: str): percentage_done = 99 elif result.group(1): percentage_done = int(result.group(1)) - if percentage_done == 0: - percentage_done = 1 - elif percentage_done == 100: - percentage_done = 99 + percentage_done = max(1, min(99, percentage_done)) # update the progress bar self.set_progress_bar(percentage_done)