Commit Graph

4811 Commits

Author SHA1 Message Date
codefiles 34b3cecced
Refactor TranslationHandler locales directory (#4692) 2026-08-03 21:39:22 +10:00
codefiles 0d6ffc3795
Refactor default PartitionTable (#4689)
Addresses the following:

pyright

```
  archinstall/lib/models/device.py:262:10 - error: Type "Literal[PartitionTable.GPT, PartitionTable.MBR]" is not assignable to return type "Self@PartitionTable"
    Type "Literal[PartitionTable.GPT, PartitionTable.MBR]" is not assignable to type "Self@PartitionTable" (reportReturnType)
```

ty

```
error[invalid-return-type]: Return type does not match returned value
   --> archinstall/lib/models/device.py:261:22
    |
261 |     def default(cls) -> Self:
    |                         ---- Expected `Self@default` because of return type
262 |         return cls.GPT if SysInfo.has_uefi() else cls.MBR
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Self@default`, found `PartitionTable`
    |
```
2026-08-03 21:38:20 +10:00
codefiles c7e512a294
Refactor CPUVendor (#4691)
Addresses the following:

pyright

```
  archinstall/lib/hardware.py:25:11 - error: Type "Literal[CpuVendor._Unknown]" is not assignable to return type "Self@CpuVendor"
    Type "Literal[CpuVendor._Unknown]" is not assignable to type "Self@CpuVendor" (reportReturnType)
```

pyrefly

```
ERROR Returned type `Literal[CpuVendor._Unknown]` is not assignable to declared return type `Self@CpuVendor` [bad-return]
  --> archinstall/lib/hardware.py:25:11
   |
20 |     def get_vendor(cls, name: str) -> Self:
   |                                       ---- declared return type
21 |         if vendor := getattr(cls, name, None):
22 |             return vendor
23 |         else:
24 |             debug(f"Unknown CPU vendor '{name}' detected.")
25 |             return cls._Unknown
   |                    ^^^^^^^^^^^^
   |
```

ty

```
error[invalid-return-type]: Return type does not match returned value
  --> archinstall/lib/hardware.py:20:36
   |
20 |     def get_vendor(cls, name: str) -> Self:
   |                                       ---- Expected `Self@get_vendor` because of return type
21 |         if vendor := getattr(cls, name, None):
22 |             return vendor
23 |         else:
24 |             debug(f"Unknown CPU vendor '{name}' detected.")
25 |             return cls._Unknown
   |                    ^^^^^^^^^^^^ expected `Self@get_vendor`, found `Literal[CpuVendor._Unknown]`
   |
```
2026-08-03 21:37:09 +10:00
codefiles c7da3cd8b9
Use staticmethod for Bootloader.get_default (#4690)
Addresses the following:

pyright

```
  archinstall/lib/models/bootloader.py:42:11 - error: Type "Literal[Bootloader.NO_BOOTLOADER]" is not assignable to return type "Self@Bootloader"
    Type "Literal[Bootloader.NO_BOOTLOADER]" is not assignable to type "Self@Bootloader" (reportReturnType)
  archinstall/lib/models/bootloader.py:44:11 - error: Type "Literal[Bootloader.Systemd]" is not assignable to return type "Self@Bootloader"
    Type "Literal[Bootloader.Systemd]" is not assignable to type "Self@Bootloader" (reportReturnType)
  archinstall/lib/models/bootloader.py:46:11 - error: Type "Literal[Bootloader.Grub]" is not assignable to return type "Self@Bootloader"
    Type "Literal[Bootloader.Grub]" is not assignable to type "Self@Bootloader" (reportReturnType)
```

pyrefly

```
ERROR Returned type `Literal[Bootloader.NO_BOOTLOADER]` is not assignable to declared return type `Self@Bootloader` [bad-return]
  --> archinstall/lib/models/bootloader.py:42:11
   |
40 |     def get_default(cls, uefi: bool, skip_boot: bool = False) -> Self:
   |                                                                  ---- declared return type
41 |         if skip_boot:
42 |             return cls.NO_BOOTLOADER
   |                    ^^^^^^^^^^^^^^^^^
   |
ERROR Returned type `Literal[Bootloader.Systemd]` is not assignable to declared return type `Self@Bootloader` [bad-return]
  --> archinstall/lib/models/bootloader.py:44:11
   |
40 |     def get_default(cls, uefi: bool, skip_boot: bool = False) -> Self:
   |                                                                  ---- declared return type
41 |         if skip_boot:
42 |             return cls.NO_BOOTLOADER
43 |         elif uefi:
44 |             return cls.Systemd
   |                    ^^^^^^^^^^^
   |
ERROR Returned type `Literal[Bootloader.Grub]` is not assignable to declared return type `Self@Bootloader`
[bad-return]
  --> archinstall/lib/models/bootloader.py:46:11
   |
40 |     def get_default(cls, uefi: bool, skip_boot: bool = False) -> Self:
   |                                                                  ---- declared return type
41 |         if skip_boot:
42 |             return cls.NO_BOOTLOADER
43 |         elif uefi:
44 |             return cls.Systemd
45 |         else:
46 |             return cls.Grub
   |                    ^^^^^^^^
   |
```

ty

```
error[invalid-return-type]: Return type does not match returned value
  --> archinstall/lib/models/bootloader.py:40:63
   |
40 |     def get_default(cls, uefi: bool, skip_boot: bool = False) -> Self:
   |                                                                  ---- Expected `Self@get_default` because of return type
41 |         if skip_boot:
42 |             return cls.NO_BOOTLOADER
   |                    ^^^^^^^^^^^^^^^^^ expected `Self@get_default`, found `Literal[Bootloader.NO_BOOTLOADER]`
   |

error[invalid-return-type]: Return type does not match returned value
  --> archinstall/lib/models/bootloader.py:40:63
   |
40 |     def get_default(cls, uefi: bool, skip_boot: bool = False) -> Self:
   |                                                                  ---- Expected `Self@get_default` because of return type
41 |         if skip_boot:
42 |             return cls.NO_BOOTLOADER
43 |         elif uefi:
44 |             return cls.Systemd
   |                    ^^^^^^^^^^^ expected `Self@get_default`, found `Literal[Bootloader.Systemd]`
   |

error[invalid-return-type]: Return type does not match returned value
  --> archinstall/lib/models/bootloader.py:46:11
   |
46 |             return cls.Grub
   |                    ^^^^^^^^ expected `Self@get_default`, found `Literal[Bootloader.Grub]`
   |
  ::: archinstall/lib/models/bootloader.py:40:63
   |
40 |     def get_default(cls, uefi: bool, skip_boot: bool = False) -> Self:
   |                                                                  ---- Expected `Self@get_default` because of return type
   |
```
2026-08-03 21:35:39 +10:00
renovate[bot] d43da6a1c2
Update pre-commit hook astral-sh/ruff-pre-commit to v0.16.1 (#4684)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-31 22:15:46 +10:00
renovate[bot] 3c56d9735e
Update dependency ruff to v0.16.1 (#4683)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-31 22:15:25 +10:00
Sanjay Santhanam 0f7c5c58fb
fix(applications): add ghostscript to print service packages (#4670)
* fix(applications): add ghostscript to print service packages

Selecting the print service installs cups, system-config-printer and
cups-pk-helper, but not ghostscript. cups relies on ghostscript for the
PDF/PostScript rendering filter, so driverless (IPP Everywhere) print
jobs fail out of the box with:

  cfFilterGhostscript: Unable to launch Ghostscript: gs: No such file or directory

Add ghostscript to the package list and cover it with a regression test.

Closes #4595

* test: drop low-value print service package assertion
2026-07-31 22:15:00 +10:00
codefiles 3576eec234
Remove unused parameter from _prepare_fs_type (#4685) 2026-07-31 14:46:45 +10:00
codefiles 274f6c2190
Remove superfluous PacmanConfiguration.default (#4682) 2026-07-31 14:44:05 +10:00
codefiles c0affc895c
Remove superfluous underscore variable assignment (#4679) 2026-07-31 14:43:37 +10:00
codefiles 1d66204940
Remove reintroduced __future__ import (#4678) 2026-07-31 14:43:03 +10:00
Matteo a327efcd6d
Update Italian translation (#4675)
* Added new strings
* Updated strings
* Deleted some redundant unused strings
2026-07-28 19:15:01 +10:00
utuhiro78 88e524231b
Update Japanese translation (#4672)
* Update Japanese translation

* Update Japanese translation
2026-07-27 22:10:00 +10:00
codefiles c25589e772
Support AArch64 root partition type GUID (#4671) 2026-07-27 22:07:28 +10:00
codefiles bb0df33556
Deduplicate enabling systemd-resolved stub mode (#4669) 2026-07-27 22:05:20 +10:00
codefiles fe16238983
Refactor run_custom_user_commands (#4668) 2026-07-25 15:33:22 +10:00
codefiles c1dcce8c2c
Add constant for path /sys/class/net (#4667) 2026-07-25 15:32:22 +10:00
correctmost 615c3341dc
Enable flake8-gettext checks in ruff (#4664)
This will help catch incorrect translation placeholders, like those
fixed in commit dccd0c8cc.

This commit also removes custom checking code from the
locales_generator.sh script.
2026-07-25 08:01:39 +10:00
Steev Klimaszewski 3653fbd695
Support aarch64 for GRUB and Limine EFI installation (#4641)
On aarch64 both the GRUB and Limine installers assume x86 and fail.

GRUB names its EFI target 'arm64', but platform.machine() returns
'aarch64', so passing --target=aarch64-efi is rejected. Map aarch64
to the arm64 target name expected by grub-install.

Limine ships architecture-specific default EFI binaries: BOOTAA64.EFI
on aarch64 versus BOOTIA32.EFI and BOOTX64.EFI on x86. Select the
correct binaries in the three places that reference them: when copying
them into the ESP, when building the pacman hook that refreshes them on
update, and when choosing the 64-bit EFI boot menu loader path.

Co-authored-by: Steev Klimaszewski <steev@parrotsec.org>
2026-07-24 21:30:54 +10:00
renovate[bot] 11e45aebeb
Update pre-commit hook astral-sh/ruff-pre-commit to v0.16.0 (#4660)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-24 12:31:30 +10:00
codefiles 4004593852
Refactor MirrorStatusEntryV3 field validator (#4661) 2026-07-24 10:01:03 +10:00
codefiles a68dcd6a28
Return bytes from fetch_data_from_url() (#4653) 2026-07-24 09:59:55 +10:00
renovate[bot] 639de7e953
Update dependency ruff to v0.16.0 (#4659)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-24 09:58:32 +10:00
codefiles 39e0fb39d2
Refactor MirrorStatusListV3 model validator (#4657) 2026-07-23 22:08:31 +10:00
codefiles ed388cab3f
Enable non-empty-init-module ruff rule (#4656) 2026-07-23 22:07:38 +10:00
codefiles 865ff3f65a
Make type field in lsblk required (#4655) 2026-07-23 22:07:05 +10:00
Softer 7fd4b4382b
Extract TUI binding descriptions into base.pot and translate raw widget bindings (#4587)
* Extract binding descriptions into base.pot and translate raw widget bindings (#4584)

xgettext only knew the tr keyword, so binding descriptions - translated
at runtime via tr(b.description) in _translate_bindings() - never made
it into base.pot. The strings added manually in #4363 were wiped by the
regeneration in #4557.

Teach the generator two more keywords: Binding:3 picks up our own
binding definitions, and tr_noop marks strings that only exist inside
the textual package, listed in the new tui/binding_descriptions.py.
The list walks the full MRO of the textual classes used in components.py,
since _translate_bindings() operates on the merged bindings map (e.g.
Scroll Up comes from ScrollView and carries live translations in 18
locales today).

Raw Input and Button widgets never went through _translate_bindings(),
so their help-panel descriptions stayed English regardless of .po
content - subclass them (_Input/_Button) following the _OptionList
pattern to make those translations real.

test_tooling/check_binding_descriptions.py verifies the list against
the installed textual after upgrades (manual, not wired into CI).

* Document key binding descriptions in the locales README
2026-07-23 13:02:22 +10:00
codefiles a633fc5d27
Use run for lsblk command (#4654) 2026-07-22 18:25:55 +10:00
codefiles 6dff8525fd
Remove unused format_cols (#4652) 2026-07-22 10:01:55 +10:00
renovate[bot] b7ad6f7514
Update dependency pre-commit to v4.6.1 (#4650)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-22 10:00:37 +10:00
renovate[bot] 05ceb5789f
Update actions/checkout digest to 3d3c42e (#4649)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-22 10:00:02 +10:00
Franco Castillo fc7dd17ebd
Update Spanish translation (#4651)
Signed-off-by: Franco Castillo <castillofrancodamian@gmail.com>
2026-07-22 09:41:26 +10:00
codefiles 2bf116030b
Fix too-many-statements-in-try-clause violations (#4648)
* Fix too-many-statements-in-try-clause violations

* Remove obsolete _wpa_cli comments

* Refactor _wpa_cli try block
2026-07-22 09:39:42 +10:00
renovate[bot] 389f4cfc64
Update actions/setup-python action to v7 (#4647)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-21 21:03:30 +10:00
Ksan 91d6d4dca1
Add Serbian translation (#4642) 2026-07-21 21:02:55 +10:00
codefiles 2f344a84ff
Remove redundant is_valid_path (#4646) 2026-07-21 20:50:56 +10:00
codefiles 2751716d2e
Set LANG to fully qualified locale name (#4645) 2026-07-21 20:44:10 +10:00
renovate[bot] b6d8fe25a1
Update dependency arch/python-markdown-it-py to v4.2.0 (#4644)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-21 20:39:28 +10:00
renovate[bot] b0bfb43661
Update dependency ruff to v0.15.22 (#4636)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-18 21:17:15 +10:00
renovate[bot] 39dbebf26c
Update pre-commit hook astral-sh/ruff-pre-commit to v0.15.22 (#4637)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-18 21:16:43 +10:00
Jonathan Pichel caff461f0b
Fix Galician locale (#4630)
* Sync Galician translation with template

* Delete all outdated Galician translation entries

* Improve Galician translation
2026-07-14 21:13:26 +10:00
Softer 01c9432afd
Use sentence case for summary labels (#4617)
str.title() title-cased every label word, which is wrong outside
English: it turned the Ukrainian "Ім'я хоста" into "Ім'Я Хоста" and
broke acronyms ("NTP" -> "Ntp"). The source strings and their
translations are already written with the correct casing.

Capitalize only the first letter of each label instead.
2026-07-14 21:12:53 +10:00
renovate[bot] 53158a8aad
Update pre-commit hook pre-commit/mirrors-mypy to v2.3.0 (#4629)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-14 10:14:03 +10:00
renovate[bot] 46320deb33
Update dependency mypy to v2.3.0 (#4628)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-14 10:13:43 +10:00
renovate[bot] 12baa2e64a
Update pre-commit hook pre-commit/mirrors-mypy to v2.2.0 (#4627)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 13:09:55 +10:00
renovate[bot] 2531825b59
Update dependency mypy to v2.2.0 (#4626)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 13:09:27 +10:00
renovate[bot] e3e9d43324
Update pre-commit hook astral-sh/ruff-pre-commit to v0.15.21 (#4623)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 13:09:05 +10:00
renovate[bot] 781728b91b
Update dependency ruff to v0.15.21 (#4622)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 13:08:47 +10:00
renovate[bot] 34c299e42e
Update astral-sh/ruff-action action to v4.1.0 (#4625)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 07:05:31 +10:00
renovate[bot] 3f4f815a34
Update dependency arch/python-textual to v8.2.8 (#4624)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 07:04:41 +10:00