Python 3.5

فيما يلي قائمة بمقترحات PEP المنتهية/المقبولة للإصدار Python 3.5 مُجمّعة حسب تأثيرها على MicroPython.

إضافات إلى بناء الجملة

الحالة

PEP 448

تعميمات إضافية لفك التغليف

جزئي

PEP 465

عامل جديد لضرب المصفوفات

مكتمل

PEP 492

الكوروتينات مع بناء الجملة async و await

مكتمل

إضافات وتغييرات على وقت التشغيل

PEP 461

تنسيق % للسلاسل الثنائية

مكتمل

PEP 475

إعادة محاولة استدعاءات النظام التي تفشل بـ EINTR

مكتمل

PEP 479

تغيير معالجة StopIteration داخل المولّدات

مكتمل

تغييرات المكتبة القياسية

PEP 471

os.scandir()

PEP 485

math.isclose()، دالة لاختبار التساوي التقريبي

مكتمل

تغييرات متنوعة

PEP 441

تحسين دعم تطبيق zip في Python

PEP 486

جعل مُشغّل Python على دراية بالبيئات الافتراضية

غير ذي صلة

PEP 484

تلميحات الأنواع (إرشادية فقط)

مكتمل [1]

PEP 488

إلغاء ملفات PYO

غير ذي صلة

PEP 489

إعادة تصميم تحميل وحدات الامتدادات

تغييرات أخرى في اللغة:

أُضيف معالج الأخطاء namereplace. وأصبح معالج الأخطاء backslashreplace يعمل الآن مع فك الترميز والترجمة.

أصبحت سلاسل توثيق الخصائص (docstrings) قابلة للكتابة الآن. وهذا مفيد بشكل خاص لسلاسل توثيق collections.namedtuple()

أصبحت عمليات الاستيراد الدائرية التي تتضمن استيرادات نسبية مدعومة الآن.

وحدات جديدة:

التغييرات على الوحدات المدمجة:

collections

أصبح الصنف OrderedDict مُنفَّذًا الآن بلغة C، مما يجعله أسرع بمقدار 4 إلى 100 ضعف.

أصبحت العروض OrderedDict.items() و OrderedDict.keys() و OrderedDict.values() تدعم الآن التكرار العكسي عبر reversed().

تُعرِّف الآن فئة deque توابع index() و*insert()* و*copy()*, وتدعم عاملَي + و*.

أصبح بالإمكان الآن تحديث سلاسل التوثيق التي تنتجها namedtuple().

أصبح الصنف UserString ينفّذ الآن الطرق __getnewargs__() و __rmod__() و casefold() و format_map() و isprintable() و maketrans() لمطابقة الطرق المقابلة في str.

heapq

أصبح بالإمكان الآن تخصيص مقارنة العناصر في merge() بتمرير دالة مفتاح في وسيط مفتاحي اختياري جديد key، ويمكن استخدام وسيط مفتاحي اختياري جديد reverse لعكس مقارنة العناصر

io

طريقة جديدة BufferedIOBase.readinto1()، تستخدم استدعاءً واحدًا على الأكثر للطريقتين RawIOBase.read() أو RawIOBase.readinto() الخاصتين بالتدفق الخام الأساسي

json

أصبح مُفكّك ترميز JSON يطلق الآن JSONDecodeError بدلًا من ValueError لتوفير معلومات سياقية أفضل عن الخطأ.

math

أُضيف ثابتان جديدان إلى وحدة math: inf و nan.

مكتمل

توفّر دالة جديدة isclose() طريقة لاختبار التساوي التقريبي.

أُضيفت دالة جديدة gcd(). وأصبحت الدالة fractions.gcd() مُهمَلة الآن.

os

أُضيفت الدالة الجديدة scandir() التي تعيد مُكرِّرًا لكائنات DirEntry.

أصبحت الدالة urandom() تستخدم الآن استدعاء النظام getrandom() على Linux 3.17 أو أحدث، و getentropy() على OpenBSD 5.6 وأحدث، مما يلغي الحاجة إلى استخدام /dev/urandom ويتجنب الإخفاقات الناتجة عن النفاد المحتمل لواصفات الملفات.

تتيح الدالتان الجديدتان get_blocking() و set_blocking() الحصول على وضع الحجب لواصف الملف وضبطه (O_NONBLOCK.)

هناك دالة جديدة os.path.commonpath() تعيد أطول مسار فرعي مشترك بين كل اسم مسار مُمرَّر

re

أصبحت المراجع والمراجع الشرطية للمجموعات ذات الطول الثابت مسموحًا بها الآن في تأكيدات النظر للخلف (lookbehind)

لم يعد عدد مجموعات الالتقاط في التعبيرات النمطية محدودًا بـ 100.

أصبحت الدالتان sub() و subn() تستبدلان الآن المجموعات غير المطابقة بسلاسل فارغة بدلًا من إطلاق استثناء.

أصبح لاستثناءات re.error سمات جديدة هي msg و pattern و pos و lineno و colno، التي توفّر معلومات سياقية أفضل عن الخطأ

socket

أصبحت الدوال ذات المهلات الزمنية تستخدم الآن ساعة رتيبة (monotonic) بدلًا من ساعة النظام.

تتيح الطريقة الجديدة socket.sendfile() إرسال ملف عبر مقبس باستخدام الدالة عالية الأداء os.sendfile() على UNIX، مما يجعل عمليات الرفع أسرع بمقدار 2 إلى 3 أضعاف مقارنة باستخدام socket.send() العادية

لم تعد الطريقة socket.sendall() تعيد ضبط المهلة الزمنية للمقبس في كل مرة تُستقبل فيها بايتات أو تُرسل. أصبحت المهلة الزمنية للمقبس الآن هي الحد الأقصى للمدة الإجمالية لإرسال كل البيانات.

أصبح وسيط backlog في الطريقة socket.listen() اختياريًا الآن. وافتراضيًا يُضبط على SOMAXCONN أو على 128، أيهما أقل.

مكتمل

ssl

دعم Memory BIO

دعم التفاوض على بروتوكول طبقة التطبيق

هناك طريقة جديدة SSLSocket.version() للاستعلام عن إصدار البروتوكول الفعلي المستخدم.

أصبح الصنف SSLSocket ينفّذ الآن طريقة SSLSocket.sendfile().

أصبحت الطريقة SSLSocket.send() تطلق الآن إما الاستثناء ssl.SSLWantReadError أو ssl.SSLWantWriteError على مقبس غير حاجب إذا كانت العملية ستُحجَب. في السابق، كانت تعيد 0.

أصبحت الدالة cert_time_to_seconds() تفسّر الآن وقت الإدخال على أنه UTC وليس وقتًا محليًا، وفقًا لـ RFC 5280. علاوة على ذلك، تكون القيمة المُعادة دائمًا عددًا صحيحًا (int).

تعيد الطريقتان الجديدتان SSLObject.shared_ciphers() و SSLSocket.shared_ciphers() قائمة الشيفرات التي أرسلها العميل أثناء المصافحة.

لم تعد الطرق SSLSocket.do_handshake() و SSLSocket.read() و SSLSocket.shutdown() و SSLSocket.write() الخاصة بالصنف SSLSocket تعيد ضبط المهلة الزمنية للمقبس في كل مرة تُستقبل فيها بايتات أو تُرسل.

أصبحت الدالة match_hostname() تدعم الآن مطابقة عناوين IP.

sys

تتيح الدالة الجديدة set_coroutine_wrapper() ضبط خطاف عام (hook) سيُستدعى كلما أُنشئ كائن كوروتين بواسطة دالة async def. ويمكن استخدام الدالة المقابلة get_coroutine_wrapper() للحصول على المُغلِّف المضبوط حاليًا.

يمكن استخدام دالة جديدة is_finalizing() للتحقق مما إذا كان مفسّر Python في طور الإغلاق.

time

أصبحت الدالة monotonic() متاحة دائمًا الآن

ملاحظات