ValueError: illegal newline value on 0x85 (NEL)

Offen
#97,544 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
backend

Rechercherichtung

Beginne mit dem gemeldeten open(..., newline=...) Reproducer und vergleiche ihn für die aufgeführten newline-Zeichen mit str.splitlines(). Verfolge die CPython-Text-I/O-Behandlung zur Validierung von newline und ermittle die relevanten Tests oder füge sie hinzu. Die Arbeit ist abgeschlossen, wenn die vorgesehenen newline-Werte ein definiertes, getestetes Verhalten aufweisen, ohne die bestehende newline-Übersetzung zu beeinträchtigen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

interpreter-core type-feature

In attempting to harmonize the path pie implementation with more modern constructs, I'm seeking also to utilize the newline argument to open instead of explicitly substituting characters.

When I do, however, I find that some tests start to fail when NEL is passed as a newline character:

$ py -c "open('foo', 'w', newline='\x85')"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ValueError: illegal newline value: …

At least in some contexts, Python recognizes NEL as a line separator:

>>> 'a\x85b\x1ec'.splitlines()
['a', 'b', 'c']

See also #66428 for some background.

According to the wikipedia article, a conforming application should honor a number of characters as newlines:

>>> newlines = '\x0a', '\x0b', '\x0c', '\x0d', '\x0d\x0a', '\u0085', '\u2028', '\u2029'
>>> for candidate in newlines:
...   try: x=open('foo', 'w', newline=candidate)
...   except ValueError: print('failed on', repr(candidate))
... 
failed on '\x0b'
failed on '\x0c'
failed on '\x85'
failed on '\u2028'
failed on '\u2029'
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
36k
Ø Merge
1 T. 9 Std.
Gemergte PRs (30 T.)
558

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus python/cpython

Alle Issues in python/cpython

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.