ZipFile.namelist() produces a string per file. The filename could contain
newline chars, including at the beginning and end. ^$ in regex matches
around newline chars. \A\Z matches the beginning/end of the full string.
This is exactly the same as obfusk's r'\AMETA-INF/(?s:.)*\.(DSA|EC|RSA)\Z'
but in a readable format that is also easily searchable, and standard for
this code base.
https://github.com/obfusk/fdroid-fakesigner-poc/blob/master/fdroidserver-regex.patch#1251
Some places in the code that need this, like verify.py, do not have
app and build instances, but do have appid and versionCode. And
fdroidserver/build.py is going away.
Currently translated at 100.0% (611 of 611 strings)
Translated using Weblate: Tamil (ta) by தமிழ்நேரம் <anishprabu.t@gmail.com>
Currently translated at 100.0% (611 of 611 strings)
Co-authored-by: தமிழ்நேரம் <anishprabu.t@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/ta/
Translation: F-Droid/F-Droid Server
Currently translated at 95.9% (586 of 611 strings)
Translated using Weblate: French (fr) by Ldm Public <ldmpub@gmail.com>
Currently translated at 95.9% (586 of 611 strings)
Translated using Weblate: French (fr) by Ldm Public <ldmpub@gmail.com>
Currently translated at 95.4% (583 of 611 strings)
Translated using Weblate: French (fr) by Ldm Public <ldmpub@gmail.com>
Currently translated at 95.0% (581 of 611 strings)
Co-authored-by: Ldm Public <ldmpub@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
Currently translated at 95.9% (586 of 611 strings)
Translated using Weblate: French (fr) by Lzebulon <lzebulon@crans.org>
Currently translated at 95.4% (583 of 611 strings)
Translated using Weblate: French (fr) by Lzebulon <lzebulon@crans.org>
Currently translated at 95.0% (581 of 611 strings)
Translated using Weblate: French (fr) by Lzebulon <lzebulon@crans.org>
Currently translated at 94.9% (580 of 611 strings)
Co-authored-by: Lzebulon <lzebulon@crans.org>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/
Translation: F-Droid/F-Droid Server
index.xml is for old clients that are stuck in the past forever. So the
format should not change at all. Python 3.13 changed minidom so it no
longer converts " to an XML entity.
154477be72
Currently translated at 18.1% (111 of 611 strings)
Translated using Weblate: Persian (fa) by Danial Behzadi <dani.behzi@ubuntu.com>
Currently translated at 9.9% (61 of 611 strings)
Translated using Weblate: Persian (fa) by Danial Behzadi <dani.behzi@ubuntu.com>
Currently translated at 9.9% (61 of 611 strings)
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/fa/
Translation: F-Droid/F-Droid Server
Currently translated at 100.0% (611 of 611 strings)
Translated using Weblate: Portuguese (pt) by Hugo Carvalho <hugokarvalho@hotmail.com>
Currently translated at 97.3% (595 of 611 strings)
Translated using Weblate: Portuguese (Portugal) (pt_PT) by Hugo Carvalho <hugokarvalho@hotmail.com>
Currently translated at 100.0% (611 of 611 strings)
Translated using Weblate: Portuguese (Portugal) (pt_PT) by Hugo Carvalho <hugokarvalho@hotmail.com>
Currently translated at 97.3% (595 of 611 strings)
Co-authored-by: Hugo Carvalho <hugokarvalho@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/
Translate-URL: https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/
Translation: F-Droid/F-Droid Server
This makes writing test cases a lot easier. For example:
======================================================================
ERROR: test_devices (tests.test_install.InstallTest.test_devices)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/hans/code/fdroid/server/tests/test_install.py", line 31, in test_devices
devices = fdroidserver.install.devices()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/hans/code/fdroid/server/fdroidserver/install.py", line 225, in devices
p = common.SdkToolsPopen(['adb', "devices"])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/hans/code/fdroid/server/fdroidserver/common.py", line 2921, in SdkToolsPopen
return FDroidPopen([abscmd] + commands[1:],
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/hans/code/fdroid/server/fdroidserver/common.py", line 3024, in FDroidPopen
result = FDroidPopenBytes(commands, cwd, envs, output, stderr_to_stdout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/hans/code/fdroid/server/fdroidserver/common.py", line 2987, in FDroidPopenBytes
if output and options.verbose:
^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'verbose'