Python 3.5

Níže je uveden seznam dokončených/přijatých PEP pro Python 3.5 seskupených podle jejich dopadu na MicroPython.

Rozšíření syntaxe

Stav

PEP 448

Další zobecnění rozbalování

Částečné

PEP 465

Nový operátor maticového násobení

Dokončeno

PEP 492

Korutiny se syntaxí async a await

Dokončeno

Rozšíření a změny běhového prostředí

PEP 461

Formátování pomocí % pro binární řetězce

Dokončeno

PEP 475

Opakování systémových volání, která selžou s EINTR

Dokončeno

PEP 479

Změna zpracování StopIteration uvnitř generátorů

Dokončeno

Změny standardní knihovny

PEP 471

os.scandir()

PEP 485

math.isclose(), funkce pro testování přibližné rovnosti

Dokončeno

Různé změny

PEP 441

Vylepšená podpora aplikací Python zip

PEP 486

Zajištění, aby Python Launcher rozpoznával virtuální prostředí

Není relevantní

PEP 484

Typové nápovědy (pouze poradní)

Dokončeno [1]

PEP 488

Odstranění souborů PYO

Není relevantní

PEP 489

Přepracování načítání modulů rozšíření

Další změny jazyka:

Byly přidány obslužné rutiny chyb namereplace. Obslužné rutiny chyb backslashreplace nyní fungují s dekódováním a překladem.

Dokumentační řetězce vlastností jsou nyní zapisovatelné. To je obzvláště užitečné pro dokumentační řetězce collections.namedtuple()

Cyklické importy zahrnující relativní importy jsou nyní podporovány.

Nové moduly:

Změny ve vestavěných modulech:

collections

Třída OrderedDict je nyní implementována v jazyce C, což ji činí 4 až 100krát rychlejší.

Pohledy OrderedDict.items(), OrderedDict.keys(), OrderedDict.values() nyní podporují iteraci pomocí reversed().

The deque class now defines index(), insert(), and copy(), and supports the + and * operators.

Dokumentační řetězce vytvořené pomocí namedtuple() lze nyní aktualizovat.

Třída UserString nyní implementuje metody __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() a maketrans(), aby odpovídaly příslušným metodám třídy str.

heapq

Porovnávání prvků v merge() lze nyní přizpůsobit předáním klíčové funkce v novém volitelném klíčovém argumentu key a nový volitelný klíčový argument reverse lze použít k obrácení porovnávání prvků

io

Nová metoda BufferedIOBase.readinto1(), která používá nejvýše jedno volání metod RawIOBase.read() nebo RawIOBase.readinto() podkladového surového proudu

json

Dekodér JSON nyní vyvolává JSONDecodeError namísto ValueError, aby poskytl lepší kontextové informace o chybě.

math

Do modulu math byly přidány dvě nové konstanty: inf a nan.

Dokončeno

Nová funkce isclose() poskytuje způsob testování přibližné rovnosti.

Byla přidána nová funkce gcd(). Funkce fractions.gcd() je nyní zastaralá.

os

Byla přidána nová funkce scandir(), která vrací iterátor objektů DirEntry.

Funkce urandom() nyní používá systémové volání getrandom() v Linuxu 3.17 nebo novějším a getentropy() v OpenBSD 5.6 a novějším, čímž odpadá potřeba používat /dev/urandom a předchází se selháním kvůli potenciálnímu vyčerpání deskriptorů souborů.

Nové funkce get_blocking() a set_blocking() umožňují získat a nastavit blokovací režim deskriptoru souboru (O_NONBLOCK.)

Existuje nová funkce os.path.commonpath(), která vrací nejdelší společnou podcestu každého předaného názvu cesty

re

Odkazy a podmíněné odkazy na skupiny s pevnou délkou jsou nyní povoleny v lookbehind asercích

Počet zachytávajících skupin v regulárních výrazech již není omezen na 100.

Funkce sub() a subn() nyní nahrazují neshodující se skupiny prázdnými řetězci namísto vyvolání výjimky.

Výjimky re.error mají nové atributy msg, pattern, pos, lineno a colno, které poskytují lepší kontextové informace o chybě

socket

Funkce s časovými limity nyní používají monotónní hodiny namísto systémových hodin.

Nová metoda socket.sendfile() umožňuje odeslat soubor přes soket pomocí vysoce výkonné funkce os.sendfile() v systému UNIX, což má za následek 2 až 3krát rychlejší nahrávání než při použití prostého socket.send()

Metoda socket.sendall() již neresetuje časový limit soketu pokaždé, když jsou bajty přijaty nebo odeslány. Časový limit soketu je nyní maximální celková doba pro odeslání všech dat.

Argument backlog metody socket.listen() je nyní volitelný. Ve výchozím nastavení je nastaven na SOMAXCONN nebo na 128, podle toho, co je menší.

Dokončeno

ssl

Podpora Memory BIO

Podpora Application-Layer Protocol Negotiation

Existuje nová metoda SSLSocket.version() pro dotazování na skutečně používanou verzi protokolu.

Třída SSLSocket nyní implementuje metodu SSLSocket.sendfile().

Metoda SSLSocket.send() nyní na neblokujícím soketu vyvolá buď výjimku ssl.SSLWantReadError, nebo ssl.SSLWantWriteError, pokud by operace blokovala. Dříve vracela 0.

Funkce cert_time_to_seconds() nyní interpretuje vstupní čas jako UTC, a nikoli jako místní čas, v souladu s RFC 5280. Návratová hodnota je navíc vždy typu int.

Nové metody SSLObject.shared_ciphers() a SSLSocket.shared_ciphers() vracejí seznam šifer odeslaných klientem během handshake.

Metody SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown() a SSLSocket.write() třídy SSLSocket již neresetují časový limit soketu pokaždé, když jsou bajty přijaty nebo odeslány.

Funkce match_hostname() nyní podporuje porovnávání IP adres.

sys

Nová funkce set_coroutine_wrapper() umožňuje nastavit globální háček, který bude volán pokaždé, když je objekt korutiny vytvořen funkcí async def. Odpovídající get_coroutine_wrapper() lze použít k získání aktuálně nastaveného wrapperu.

Novou funkci is_finalizing() lze použít ke kontrole, zda se interpret Pythonu vypíná.

time

Funkce monotonic() je nyní vždy dostupná

Poznámky