Rocksolid Light

groups  faq  privacy  How to post  login

Message-ID:  

Best of all is never to have been born. Second best is to die soon.


rocksolid / de.comp.lang.python / Re: [Python-de] Muss ich % immer escapen?

SubjectAuthor
* [Python-de] Muss ich % immer escapen?c.buhtz
`* Re: [Python-de] Muss ich % immer escapen?Peter J. Holzer
 `* [Python-de] Re: Muss ich % immer escapen?c.buhtz
  +* Re: [Python-de] Re: Muss ich % immer escapen?Peter J. Holzer
  |`* [Python-de] Re: Muss ich % immer escapen?c.buhtz
  | `- Re: [Python-de] Re: Muss ich % immer escapen?Peter J. Holzer
  `- [Python-de] Re: Muss ich % immer escapen?Henning Reich

1
Subject: [Python-de] Muss ich % immer escapen?
From: c.bu...@posteo.jp
Newsgroups: de.comp.lang.python
Date: Wed, 21 Jun 2023 18:29 UTC
Path: i2pn2.org!i2pn.org!news.swapon.de!fu-berlin.de!uni-berlin.de!not-for-mail
From: c.bu...@posteo.jp
Newsgroups: de.comp.lang.python
Subject: [Python-de]_Muss_ich_%_immer_escapen?
Date: Wed, 21 Jun 2023 18:29:46 +0000
Lines: 31
Message-ID: <f0307b1643db4b81edba11cc449a7d25@posteo.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8;
format=flowed
Content-Transfer-Encoding: quoted-printable
X-Trace: news.uni-berlin.de M3nABYpfSME2KuKmq61TlAnHgeSPUz3uLvjNRmNwyoyQ==
Authentication-Results: mail.python.org; dkim=pass
reason="2048-bit key; unprotected key"
header.d=posteo.jp header.i=@posteo.jp header.b=aot8s/pO;
dkim-adsp=pass; dkim-atps=neutral
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.jp; s=2017;
t=1687372186; bh=ABCDfEvsMPVn3C5Z8kk9jETZOe34dsFq8HRiR9MfHPA=;
h=MIME-Version:Content-Transfer-Encoding:Date:From:To:Subject:
Message-ID:From;
b=aot8s/pOA71Zpy5wGu9YSgsanzRRlhaclUlep09wB3TMLj91oA5YJNPLTlQf8bnzk
NkKPcAu3D4ijW5fD1dlSEUj7g92THsf4M309iu5Y2nwfYnObZPOe2wg3lJ91s5ZfDk
J6ju38PNlx9GiHNYh4zGScEU4GaGRDEvLC3hZt5KxB2BNpHK+w0ZGI9sBIxy9KMLPF
db26Fk+RRl+FIPZGdCUPNl+9QQLfuAr3B0xOuJKClgnn9/fIR89BMbG7ZEVJEArlb2
tcgOdSWcJKHcvdwO6/pio6qbPL93ZTQtRxXa6PlFlu3p9wSu8gt2CPCY7gVaZpIkAb
topqsQmeOXzbA==
Message-ID-Hash: CRONBQTGHC43PUD56W66CGI32GUFKVKA
X-Message-ID-Hash: CRONBQTGHC43PUD56W66CGI32GUFKVKA
X-MailFrom: c.buhtz@posteo.jp
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-python-de.python.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9b1
Precedence: list
List-Id: Die Deutsche Python Mailingliste <python-de.python.org>
Archived-At: <https://mail.python.org/archives/list/python-de@python.org/message/CRONBQTGHC43PUD56W66CGI32GUFKVKA/>
List-Archive: <https://mail.python.org/archives/list/python-de@python.org/>
List-Help: <mailto:python-de-request@python.org?subject=help>
List-Owner: <mailto:python-de-owner@python.org>
List-Post: <mailto:python-de@python.org>
List-Subscribe: <mailto:python-de-join@python.org>
List-Unsubscribe: <mailto:python-de-leave@python.org>
View all headers

Hallo,

ein Beispiel zum Einstieg.

val = '15'
print('Trying to keep min {perc}% free inodes'.format(perc=val))

Ist das korrektes valides PEP konformes Python? Meine Linter
(pycodestyle und ruff) sind zufrieden.

Alternative (und etwas ältere) Schreibweise wäre noch:

val = '15'
print('Trying to keep min %(perc)f%% free inodes'.format(perc=val))
print('Trying to keep min f%% free inodes'.format(val))

Der Punkt beim letzen Codeblock ist, dass das %-Zeichen ganz klar
escaped werden muss.

Beim ersten Codeblock scheint das nicht notwendig zu sein. Unabhängig
davon, was die Linter und der Python-Interpreter dazu sagen, ist meine
Frage, ob das formal korrekt ist. Oder muss ich eigentlich auch im
ersten Beispiel das % escapen, wenn ich es pedantisch richtig mache
möchte?

In PEP3101 kann ich zum % Zeichen nichts finden. Dort wird nur
beschrieben, wie man geschweifte Klammern escaped.
https://peps.python.org/pep-3101/

Christian

Subject: Re: [Python-de] Muss ich % immer escapen?
From: Peter J. Holzer
Newsgroups: de.comp.lang.python
Organization: LUGA
Date: Thu, 22 Jun 2023 12:03 UTC
References: 1
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsfeed.xs3.de!callisto.xs3.de!tahina.priv.at!news.luga.at!.POSTED.212.17.106.130!not-for-mail
From: hjp-usen...@hjp.at (Peter J. Holzer)
Newsgroups: de.comp.lang.python
Subject: Re: [Python-de] Muss ich % immer escapen?
Date: Thu, 22 Jun 2023 14:03:46 +0200
Organization: LUGA
Message-ID: <slrnu98e52.l2m1.hjp-usenet3@trintignant.hjp.at>
References: <f0307b1643db4b81edba11cc449a7d25@posteo.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Injection-Info: vinge.luga.at; posting-host="212.17.106.130";
logging-data="7414"; mail-complaints-to="usenet@vinge.luga.at"
User-Agent: slrn/1.0.3 (Linux)
View all headers

On 2023-06-21 18:29, c.buhtz@posteo.jp <c.buhtz@posteo.jp> wrote:
> ein Beispiel zum Einstieg.
>
> val = '15'
> print('Trying to keep min {perc}% free inodes'.format(perc=val))
>
> Ist das korrektes valides PEP konformes Python? Meine Linter
> (pycodestyle und ruff) sind zufrieden.

Ja. Warum nicht?

> Alternative (und etwas ältere) Schreibweise wäre noch:
>
> val = '15'
> print('Trying to keep min %(perc)f%% free inodes'.format(perc=val))
> print('Trying to keep min f%% free inodes'.format(val))

Die funktionieren beide nicht.

>>> print('Trying to keep min %(perc)f%% free inodes'.format(perc=val))
Trying to keep min %(perc)f%% free inodes
>>> print('Trying to keep min f%% free inodes'.format(val))
Trying to keep min f%% free inodes

Bringst Du das mit %-Interpolation durcheinander?

>>> val = 15
>>> print('Trying to keep min %f%% free inodes' % val)
Trying to keep min 15.000000% free inodes
>>> print('Trying to keep min %(perc)f%% free inodes' % { "perc": val })
Trying to keep min 15.000000% free inodes

(f-Strings gibt es auch noch)

hp

Subject: [Python-de] Re: Muss ich % immer escapen?
From: c.bu...@posteo.jp
Newsgroups: de.comp.lang.python
Date: Thu, 22 Jun 2023 12:52 UTC
References: 1 2
Path: i2pn2.org!i2pn.org!news.swapon.de!fu-berlin.de!uni-berlin.de!not-for-mail
From: c.bu...@posteo.jp
Newsgroups: de.comp.lang.python
Subject: [Python-de]_Re:_Muss_ich_%_immer_escapen?
Date: Thu, 22 Jun 2023 12:52:02 +0000
Lines: 43
Message-ID: <7801e735e8824948771ff5a4a0239904@posteo.de>
References: <f0307b1643db4b81edba11cc449a7d25@posteo.de>
<slrnu98e52.l2m1.hjp-usenet3@trintignant.hjp.at>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8;
format=flowed
Content-Transfer-Encoding: quoted-printable
X-Trace: news.uni-berlin.de SqCYXKHyRh4J+ay9Bbzk6QogS2lMdaoxXYkknTNySY5g==
Authentication-Results: mail.python.org; dkim=pass
reason="2048-bit key; unprotected key"
header.d=posteo.jp header.i=@posteo.jp header.b=LNoZZgZF;
dkim-adsp=pass; dkim-atps=neutral
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.jp; s=2017;
t=1687438323; bh=hhF23RN+SfL385idSaOR/SJxkUdee90NyZyY+QB5VLg=;
h=MIME-Version:Content-Transfer-Encoding:Date:From:To:Subject:
Message-ID:From;
b=LNoZZgZFAToTOcgm2kx7kKnNaOGN88tn26cAU+IOv+4JtqUMH+0/uUvdFkIY3hoG+
Dwz+oPBC9X7WW/FWWbm+NBEIJ3BtdJAm1hS4sl7KKcJ06x7BZVQGPVhvTxHkuxzGrY
myB/Osiv6oivwahdAVLSWxzvd6TFm6oMji5vGSD59nAB+HP+zWVyDrfYxW+EtdEfQG
FaZbzJYyj1BXN7u6gLuiphP8vKL8Wu0ixeuwiVXFMp1RViXXB7hhU1KFLi0Yxkt7vx
qFUTwA+XUwvrz1V2zaiWIT2D6WyWFnWEqoc6t0a8mjMRiw0LBYobzBgv+RjxOE0+mC
pV9jKw+QPWIQw==
In-Reply-To: <slrnu98e52.l2m1.hjp-usenet3@trintignant.hjp.at>
Message-ID-Hash: OOS4S47CDAYEIKADTJPQBXEC5NT3IN4O
X-Message-ID-Hash: OOS4S47CDAYEIKADTJPQBXEC5NT3IN4O
X-MailFrom: c.buhtz@posteo.jp
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-python-de.python.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9b1
Precedence: list
List-Id: Die Deutsche Python Mailingliste <python-de.python.org>
Archived-At: <https://mail.python.org/archives/list/python-de@python.org/message/OOS4S47CDAYEIKADTJPQBXEC5NT3IN4O/>
List-Archive: <https://mail.python.org/archives/list/python-de@python.org/>
List-Help: <mailto:python-de-request@python.org?subject=help>
List-Owner: <mailto:python-de-owner@python.org>
List-Post: <mailto:python-de@python.org>
List-Subscribe: <mailto:python-de-join@python.org>
List-Unsubscribe: <mailto:python-de-leave@python.org>
View all headers

Hallo Petter,

danke für die Rückmeldung und entschuldige meinen Bullshit-Code. Das
ging daneben.

OK, vielleicht ist das reale Beispiel einfacher. So habe ich print nie
verwendet, aber das scheint valider Code zu sein.

print(_('Trying to keep min %d%% free inodes') % minFreeInodes)

Nun wollte ich das "modernisieren", auch weil die Übersetzer mit "%d%%"
oft nichts anfangen können.

print(_('Trying to keep min {perc}% free
inodes').format(perc=minFreeInodes))

Das geht auch. Aber meine Übersetzungsplatform (Weblate 4.17) moniert
hier ein Problem: Nach dem % ist ein Leerzeichen und danach kommt ein f
. Weblate denkt, es müsste dort %f heißen und moniert es. Würde ich das
% an der Stelle escapen meckert Weblate nicht.

Liegt Weblate hier falsch bzw. ist einfach zu umodern/unflexibel? Muss
ich bei dem zweiten Beispiel das % eigentlich escapen und der Python
Interpreter ist hier einfach nur gnädig mit mir und lässt es mir
durchgehen, obwohl es nicht Standard/PEP-konform ist?

Natürlich kann ich einen einfachen Workaround machen, um Weblate
zufrieden zu stellen.

print(_('Trying to keep min {perc} free
inodes').format(perc=f'{minFreeInodes}%'))

Abgesehen von Weblate, ist die Frage hier eigentlich nur, ob ich ein %
escapen muss, wenn ich die moderne Form von Format-Strings mit den
geschweiften Klammern nutze?

Schöne Grüße
Christian

Subject: Re: [Python-de] Re: Muss ich % immer escapen?
From: Peter J. Holzer
Newsgroups: de.comp.lang.python
Organization: LUGA
Date: Thu, 22 Jun 2023 13:58 UTC
References: 1 2 3
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!tahina.priv.at!news.luga.at!.POSTED.212.17.106.130!not-for-mail
From: hjp-usen...@hjp.at (Peter J. Holzer)
Newsgroups: de.comp.lang.python
Subject: Re: [Python-de] Re: Muss ich % immer escapen?
Date: Thu, 22 Jun 2023 15:58:40 +0200
Organization: LUGA
Message-ID: <slrnu98ksg.l9q5.hjp-usenet3@trintignant.hjp.at>
References: <f0307b1643db4b81edba11cc449a7d25@posteo.de>
<slrnu98e52.l2m1.hjp-usenet3@trintignant.hjp.at>
<7801e735e8824948771ff5a4a0239904@posteo.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Injection-Info: vinge.luga.at; posting-host="212.17.106.130";
logging-data="10616"; mail-complaints-to="usenet@vinge.luga.at"
User-Agent: slrn/1.0.3 (Linux)
View all headers

On 2023-06-22 12:52, c.buhtz@posteo.jp <c.buhtz@posteo.jp> wrote:
> Hallo Petter,

Nur ein t. Ich wohne vermutlich südlich von dir, nicht nördlich ;-).

> danke für die Rückmeldung und entschuldige meinen Bullshit-Code. Das
> ging daneben.
>
> OK, vielleicht ist das reale Beispiel einfacher. So habe ich print nie
> verwendet, aber das scheint valider Code zu sein.
>
> print(_('Trying to keep min %d%% free inodes') % minFreeInodes)
>
> Nun wollte ich das "modernisieren", auch weil die Übersetzer mit "%d%%"
> oft nichts anfangen können.
>
> print(_('Trying to keep min {perc}% free
> inodes').format(perc=minFreeInodes))
>
> Das geht auch. Aber meine Übersetzungsplatform (Weblate 4.17) moniert
> hier ein Problem: Nach dem % ist ein Leerzeichen und danach kommt ein f
> . Weblate denkt, es müsste dort %f heißen und moniert es.

Sagt es: "Das ist falsch" oder "Das schaut verdächtig aus, könnte ein
Tippfehler sein, schau Dir das noch einmal an"?

> Würde ich das % an der Stelle escapen meckert Weblate nicht.

Wie würdest Du das denn escapen?

> Liegt Weblate hier falsch bzw. ist einfach zu umodern/unflexibel?

Möglich. Kann man Weblate sagen, welcher Syntax diese Strings gehorchen
sollen? Das ist ja von Programmiersprache zu Programmiersprache
unterschiedlich und selbst innerhalb der gleichen Programmiersprache
gibt es oft mehrere Möglichkeiten (wie man hier sieht).

Offensichtlich glaubt Weblate, dass der String entweder für die
C-Funktion printf oder den Python-Operator % oder etwas ähnliches
gedacht ist. Das ist hier aber nicht der Fall.

> Muss ich bei dem zweiten Beispiel das % eigentlich escapen

Nein. Das %-Zeichen hat für str.format() keine spezielle Bedeutung. Du
kannst es daher IMHO auch gar nicht escapen. (Du könntest natürlich
"\x25" statt "%" schreiben, kann sein dass das Weblate zufriedenstellt,
aber für Python ist es genau das Gleiche).

> und der Python Interpreter ist hier einfach nur gnädig mit mir und
> lässt es mir durchgehen, obwohl es nicht Standard/PEP-konform ist?

Kleine Anmerkung: PEP-008 ist ein Styleguide für die Python-Library. Die
ist für Leute, die Module schreiben, die Teil des Python-Standard-Pakets
sind, mehr oder weniger verpflichtend (es gibt auch dort alten Code, der
nicht PEP-008-konform ist). Für alle anderen ist das bestenfalls eine
freundliche Empfehlung. Code, der sich nicht an diese Empfehlung hält
ist deshalb nicht falsch und der Python-Interpreter wird das nie
anmeckern. (Linter schon, denn deren Zweck ist es ja, zu meckern, und
die sind erstens konfigurierbar und zweitens kann sich der Entwickler
aussuchen, ob er überhaupt einen verwendet, wenn ja, welchen und mit
welchen Optionen, und was er dann mit dem Ergebnis macht.)

Abgesehen davon sind alle drei Formatierungsmöglichkeiten ok. Keine ist
veraltet oder nicht empfehlenswert.

hp

Subject: [Python-de] Re: Muss ich % immer escapen?
From: Henning Reich
Newsgroups: de.comp.lang.python
Date: Thu, 22 Jun 2023 13:20 UTC
References: 1 2 3
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!news.imp.ch!fu-berlin.de!uni-berlin.de!not-for-mail
From: inf...@qupfer.de (Henning Reich)
Newsgroups: de.comp.lang.python
Subject: [Python-de]_Re:_Muss_ich_%_immer_escapen?
Date: Thu, 22 Jun 2023 15:20:05 +0200
Lines: 40
Message-ID: <CAAUWxv=gw97LHuTOQ6LeT-dEZOwLzACjJtuvx3cspykuLRDUeA@mail.gmail.com>
References: <f0307b1643db4b81edba11cc449a7d25@posteo.de> <slrnu98e52.l2m1.hjp-usenet3@trintignant.hjp.at>
<7801e735e8824948771ff5a4a0239904@posteo.de>
Mime-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
X-Trace: news.uni-berlin.de vOLJg6eqCgZmCOqpUk8gtA8tCiOBagdltGUkthFY4ZPg==
Authentication-Results: mail.python.org; dkim=pass
reason="2048-bit key; unprotected key"
header.d=qupfer-de.20221208.gappssmtp.com header.i=@qupfer-de.20221208.gappssmtp.com
header.b=rJqCXvqE; dkim-adsp=none (unprotected policy);
dkim-atps=neutral
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=qupfer-de.20221208.gappssmtp.com; s=20221208; t=1687440017; x=1690032017;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=n4Z0Mh75G1uWPtFOt0MQSKKbCoOrHdWNxwDlVLXL/ec=;
b=rJqCXvqEKenbGKIsMKLXpQHB2S7VuRggX0IUYXrIX9W2s11PjDNzp00DDC/+YU0OK+
LkmbaZDD8zok3lOmPhqb3TwIeaHDg0ge46P98MgsnWF9Nqc22yxMC6Nas6QYJke2lOvr
8Klj1ekd52S9TR0KtrebaHWt55YJi/aP9jEKNzNDW8mANAaA8uvn0LWYuizJ8jj3OQT9
rOI7ZzGQBOFsldWCbS2rwX+MSO8amfOQWwBxv728VfM+fj3/CCxrwM3exzbWkYV6+pXX
Gucprc6LbHsaVOk0Zx5udsBS5IgzjZE2qYsU4EMTs8z5GcmzMu7wpl6r+2DgDqw6BBJT
z/sg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20221208; t=1687440017; x=1690032017;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=n4Z0Mh75G1uWPtFOt0MQSKKbCoOrHdWNxwDlVLXL/ec=;
b=lQrBeO7qbq1n/s4S4FotzoufHxxcfm2YH070Q2AgRRremtwbdKvQ0hBf2spbZ6q3mN
q/U/oTXfdkIw3dNiDoGkrmPHWNZ78mYQp0vx2lAL3wZkN2GRLuDrQc7aD2vfhAj7PkHT
WlXHJqsLyrUcKGrb2/YNkmw/Le8FCr9orjkZmwAsAwARp7RVF6mFAngG9L9qc/oRQCGx
RlhV+xG5WJcBVAGjIB9wE0fVYCyMEQvd/wdv+HwxPG0byN7Tsu0almreBAyIhzQ+8vwU
CoN8f1XhMklirNbx6iKnfSWLvazqLAlTR361rjW8ZM0z0GUkGHOhKoXSpSo/LYmLSyjP
P32A==
X-Gm-Message-State: AC+VfDzDlrzyCJYL5u+8bNZsKJxRsV/Xg+eFZb0sJr06+qwkcaSDF5LK
EziJlC3OYCJmPgW08B9hLykJwsA4zegPkITbKfNnIIpvYh59EYauVrqnyQ==
X-Google-Smtp-Source: ACHHUZ4jm0x6EiNPBpGq0S2sqpIpDtthvAIk6YWHHAeKHo0yiIyEmt0ZiYvJgN2Cts0/9FlS2rs0wiTisFlougoEq6U=
X-Received: by 2002:a17:907:60d4:b0:988:a986:b11c with SMTP id
hv20-20020a17090760d400b00988a986b11cmr9507192ejc.29.1687440016679; Thu, 22
Jun 2023 06:20:16 -0700 (PDT)
In-Reply-To: <7801e735e8824948771ff5a4a0239904@posteo.de>
X-MailFrom: info@qupfer.de
X-Mailman-Rule-Hits: nonmember-moderation
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-python-de.python.org-0
Message-ID-Hash: KOIGEVFILEKDLNON3YIYR5SBHNEYYDCJ
X-Message-ID-Hash: KOIGEVFILEKDLNON3YIYR5SBHNEYYDCJ
X-Mailman-Approved-At: Thu, 22 Jun 2023 10:05:02 -0400
X-Content-Filtered-By: Mailman/MimeDel 3.3.9b1
X-Mailman-Version: 3.3.9b1
Precedence: list
List-Id: Die Deutsche Python Mailingliste <python-de.python.org>
Archived-At: <https://mail.python.org/archives/list/python-de@python.org/message/KOIGEVFILEKDLNON3YIYR5SBHNEYYDCJ/>
List-Archive: <https://mail.python.org/archives/list/python-de@python.org/>
List-Help: <mailto:python-de-request@python.org?subject=help>
List-Owner: <mailto:python-de-owner@python.org>
List-Post: <mailto:python-de@python.org>
List-Subscribe: <mailto:python-de-join@python.org>
List-Unsubscribe: <mailto:python-de-leave@python.org>
View all headers

Rein aus Python Sicht brauchts kein Escaping fürs %. Ich würde aber dennoch
auf F-Strings wechseln, da deutlich besser Lesbar.
>>> minFreeInodes=123
>>> print(f'There are {minFreeInodes}% free')
There are 123% free
ggf. mit deinem Workaround:
>>> minFreeInodes=123
>>> minFreeInodes_percent=f'{minFreeInodes}%'
>>> print(f'There are {minFreeInodes_percent} free')
There are 123% free

Am Do., 22. Juni 2023 um 14:53 Uhr schrieb <c.buhtz@posteo.jp>:
> Hallo Petter,
>
> danke für die Rückmeldung und entschuldige meinen Bullshit-Code. Das
> ging daneben.
>
> OK, vielleicht ist das reale Beispiel einfacher. So habe ich print nie
> verwendet, aber das scheint valider Code zu sein.
>
> print(_('Trying to keep min %d%% free inodes') % minFreeInodes)
>
> Nun wollte ich das "modernisieren", auch weil die Übersetzer mit "%d%%"
> oft nichts anfangen können.
>
> print(_('Trying to keep min {perc}% free
> inodes').format(perc=minFreeInodes))
>
> Das geht auch. Aber meine Übersetzungsplatform (Weblate 4.17) moniert
> hier ein Problem: Nach dem % ist ein Leerzeichen und danach kommt ein f
> . Weblate denkt, es müsste dort %f heißen und moniert es. Würde ich das
> % an der Stelle escapen meckert Weblate nicht.
>
> Liegt Weblate hier falsch bzw. ist einfach zu umodern/unflexibel? Muss
> ich bei dem zweiten Beispiel das % eigentlich escapen und der Python
> Interpreter ist hier einfach nur gnädig mit mir und lässt es mir
> durchgehen, obwohl es nicht Standard/PEP-konform ist?
>
> Natürlich kann ich einen einfachen Workaround machen, um Weblate
> zufrieden zu stellen.
>
> print(_('Trying to keep min {perc} free
> inodes').format(perc=f'{minFreeInodes}%'))
>
> Abgesehen von Weblate, ist die Frage hier eigentlich nur, ob ich ein %
> escapen muss, wenn ich die moderne Form von Format-Strings mit den
> geschweiften Klammern nutze?
>
> Schöne Grüße
> Christian
> _______________________________________________
> python-de Mailingliste -- python-de@python.org
> Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an
> python-de-leave@python.org
> https://mail.python.org/mailman3/lists/python-de.python.org/
> Mitgliedsadresse: python@qupfer.de
>

Subject: [Python-de] Re: Muss ich % immer escapen?
From: c.bu...@posteo.jp
Newsgroups: de.comp.lang.python
Date: Thu, 22 Jun 2023 14:14 UTC
References: 1 2 3 4
Path: i2pn2.org!i2pn.org!news.swapon.de!fu-berlin.de!uni-berlin.de!not-for-mail
From: c.bu...@posteo.jp
Newsgroups: de.comp.lang.python
Subject: [Python-de]_Re:_Muss_ich_%_immer_escapen?
Date: Thu, 22 Jun 2023 14:14:16 +0000
Lines: 34
Message-ID: <9d08e441add946011a0ec23a8b121f0f@posteo.de>
References: <f0307b1643db4b81edba11cc449a7d25@posteo.de>
<slrnu98e52.l2m1.hjp-usenet3@trintignant.hjp.at>
<7801e735e8824948771ff5a4a0239904@posteo.de>
<slrnu98ksg.l9q5.hjp-usenet3@trintignant.hjp.at>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8;
format=flowed
Content-Transfer-Encoding: quoted-printable
X-Trace: news.uni-berlin.de QSbWY+mQtyt+DjnhDs5DJAhuARLyIjlcWXdZbczk52AQ==
Authentication-Results: mail.python.org; dkim=pass
reason="2048-bit key; unprotected key"
header.d=posteo.jp header.i=@posteo.jp header.b=rRl7bs7p;
dkim-adsp=pass; dkim-atps=neutral
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.jp; s=2017;
t=1687443257; bh=NHKIJWDCGecMWmjtwNzddjS2amABTST46gcGjbhkg5M=;
h=MIME-Version:Content-Transfer-Encoding:Date:From:To:Subject:
Message-ID:From;
b=rRl7bs7pNF5v2D59/xG41ic7CMJKODWe9/QOxw44z/SaBD1aQoiQeHbYIbqIT6Qix
fP7xGVMRgsO5+2xm1PRWtEFuoACSUNMabibFefsP3sQIt15GWtW0mXcSHPwB2PJkOp
RaF5dyP+ERl42eJyJJQ+R471Afno6PcJ/InF0kcVD+pCQoe+7yPSj4wzL/r8Eq0Esq
cP8YE6a2ZkvsA1hzyRQZMEHsPRlWNh3YpJEGgRKQvp+wNSZHYc2vcctjWlPUjz8SBJ
8nJC5oCX5N0K28EZcGdEir4Q35DIUxGC2L0Fsu4V4m2wxlAB/lMJr0dVxWNbzEIVvq
G+oZVE5M5hvmw==
In-Reply-To: <slrnu98ksg.l9q5.hjp-usenet3@trintignant.hjp.at>
Message-ID-Hash: JOTDL6F5DOEECF5JZZT67YJPH4DN563B
X-Message-ID-Hash: JOTDL6F5DOEECF5JZZT67YJPH4DN563B
X-MailFrom: c.buhtz@posteo.jp
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-python-de.python.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9b1
Precedence: list
List-Id: Die Deutsche Python Mailingliste <python-de.python.org>
Archived-At: <https://mail.python.org/archives/list/python-de@python.org/message/JOTDL6F5DOEECF5JZZT67YJPH4DN563B/>
List-Archive: <https://mail.python.org/archives/list/python-de@python.org/>
List-Help: <mailto:python-de-request@python.org?subject=help>
List-Owner: <mailto:python-de-owner@python.org>
List-Post: <mailto:python-de@python.org>
List-Subscribe: <mailto:python-de-join@python.org>
List-Unsubscribe: <mailto:python-de-leave@python.org>
View all headers

Hallo Peter,

danke für deine Hilfe bei dem Thema.

Am 22.06.2023 15:58 schrieb Peter J. Holzer:
> Sagt es: "Das ist falsch" oder "Das schaut verdächtig aus, könnte ein
> Tippfehler sein, schau Dir das noch einmal an"?

Gute Frage.
Es ist ein "Check". Weblate zeigt eine rote Headlne "Things to check".
Also kein Error in dem Sinne.
Konkret sind es vier Meldungen, die für den technisch kaum bis gar nicht
versierten Übersetzenden überhaut nicht hilfreich sind und am Ende dann
ich als Maintainer Hand anlegen muss.

Following format strings are missing: % f
Following format strings are extra: %%
Following format strings are extra: %d
Following format strings are missing: {perc}

Hier mal ein Beispiel:


https://translate.codeberg.org/translate/backintime/common/da/?checksum=1724cff2478589dd

Egal. Ich nutze den Workaround und habe bei Weblate in Ticket
aufgemacht.

Schöne Grüße
Christian

Subject: Re: [Python-de] Re: Muss ich % immer escapen?
From: Peter J. Holzer
Newsgroups: de.comp.lang.python
Organization: LUGA
Date: Thu, 22 Jun 2023 16:27 UTC
References: 1 2 3 4 5
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsfeed.xs3.de!callisto.xs3.de!tahina.priv.at!news.luga.at!.POSTED.212.17.106.130!not-for-mail
From: hjp-usen...@hjp.at (Peter J. Holzer)
Newsgroups: de.comp.lang.python
Subject: Re: [Python-de] Re: Muss ich % immer escapen?
Date: Thu, 22 Jun 2023 18:27:50 +0200
Organization: LUGA
Message-ID: <slrnu98tk7.lsqt.hjp-usenet3@trintignant.hjp.at>
References: <f0307b1643db4b81edba11cc449a7d25@posteo.de>
<slrnu98e52.l2m1.hjp-usenet3@trintignant.hjp.at>
<7801e735e8824948771ff5a4a0239904@posteo.de>
<slrnu98ksg.l9q5.hjp-usenet3@trintignant.hjp.at>
<9d08e441add946011a0ec23a8b121f0f@posteo.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Injection-Info: vinge.luga.at; posting-host="212.17.106.130";
logging-data="15261"; mail-complaints-to="usenet@vinge.luga.at"
User-Agent: slrn/1.0.3 (Linux)
View all headers

On 2023-06-22 14:14, c.buhtz@posteo.jp <c.buhtz@posteo.jp> wrote:
> Am 22.06.2023 15:58 schrieb Peter J. Holzer:
>> Sagt es: "Das ist falsch" oder "Das schaut verdächtig aus, könnte ein
>> Tippfehler sein, schau Dir das noch einmal an"?
>
> Gute Frage.
> Es ist ein "Check". Weblate zeigt eine rote Headlne "Things to check".
> Also kein Error in dem Sinne.
> Konkret sind es vier Meldungen, die für den technisch kaum bis gar nicht
> versierten Übersetzenden überhaut nicht hilfreich sind und am Ende dann
> ich als Maintainer Hand anlegen muss.
>
> Following format strings are missing: % f
> Following format strings are extra: %%
> Following format strings are extra: %d
> Following format strings are missing: {perc}
>
> Hier mal ein Beispiel:
>
>
> https://translate.codeberg.org/translate/backintime/common/da/?checksum=1724cff2478589dd

Ich kenne Weblate nicht und verstehe vielleicht die Meldungen falsch,
aber ich glaube, die beziehen sich auf den Unterschied zwischen Original
und Übersetzung.

Die Übersetzung von

Trying to keep min {perc}% free inodes

müsste IMHO lauten

Prøv at beholde minimum {perc}% inoder fri

Da da aber

Prøv at beholde minimum %d%% inoder fri

steht, meckert Weblate an, dass da unerwarteterweise "%d" und "%%"
vorkommen und dafür "{perc}" fehlt. (und auch, dass "% f" fehlt, aber
das ist ein Fehler)

hp


rocksolid / de.comp.lang.python / Re: [Python-de] Muss ich % immer escapen?

1
server_pubkey.txt

rocksolid light 0.9.136
clearnet tor