{"id":327157,"date":"2022-01-10T08:46:57","date_gmt":"2022-01-10T08:46:57","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=327157"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=327157","title":{"rendered":"<span>TalkPython: \u043b\u0443\u0447\u0448\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b Python \u043f\u043e \u0438\u0442\u043e\u0433\u0430\u043c 2021 \u0433\u043e\u0434\u0430<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\" class=\"article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"1080\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ad4\/271\/da8\/ad4271da8fc3181accf414295514a305.png\" data-width=\"1920\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430 \u041a\u0414\u041f\u0412 \u0432 \u0433\u043e\u0441\u0442\u044f\u0445 \u0443 TalkPython \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u0413\u0432\u0438\u0434\u043e \u0432\u0430\u043d \u0420\u043e\u0441\u0441\u0443\u043c\u0430 \u2014 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044f Python, \u041c\u0430\u0440\u043a\u0430 \u0428\u0435\u043d\u043d\u043e\u043d\u0430, \u043f\u043b\u0430\u043d \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f Python \u0432 5 \u0440\u0430\u0437 \u0437\u0430 4 \u0433\u043e\u0434\u0430 \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0430\u0432\u0442\u043e\u0440\u0430 \u043f\u043e\u0434\u043a\u0430\u0441\u0442\u0430. \u0410 \u043c\u044b \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u043e\u0439 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 Python, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0448\u043b\u0430 \u0440\u0435\u0447\u044c \u0432 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0445 \u0437\u0430 \u0443\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0433\u043e\u0434.<\/p>\n<hr\/>\n<h2>346. Sumy \u2014 \u0440\u0435\u0437\u044e\u043c\u0435 HTML<\/h2>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0410\u043d\u0442\u043e\u043d\u0438\u043e \u0410\u043d\u0434\u0440\u0430\u0434\u0435 <a href=\"https:\/\/twitter.com\/AntonioAndrade\">@AntonioAndrade<\/a> | <a href=\"https:\/\/www.linkedin.com\/in\/antonioxandrade\/\">LinkedIn<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 #1: sumy \u2014 \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0437\u044e\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 HTML-\u0441\u0442\u0440\u0430\u043d\u0438\u0446<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/sumy\">PyPi<\/a> | <a href=\"https:\/\/github.com\/miso-belica\/sumy\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/miso-belica\/sumy\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/346\/20-recommended-packages-in-review\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"338\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ca0\/83e\/f4a\/ca083ef4ab8db0526d34056a3043c798.png\" data-width=\"605\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u043e\u0441\u0442\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u043b\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u044e\u043c\u0435 \u0438\u0437 HTML-\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432. \u041f\u0430\u043a\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043e\u0446\u0435\u043d\u043a\u0438 \u0434\u043b\u044f \u0440\u0435\u0437\u044e\u043c\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432. \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u042f \u0442\u0430\u043a\u0436\u0435 \u0432\u0435\u0434\u0443 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 #2: gTTS \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Python \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 CLI \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 API \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0440\u0435\u0447\u044c \u043e\u0442 Google Translate.<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/gTTS\">PyPi<\/a> | <a href=\"http:\/\/gtts.readthedocs.org\/\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/pndurette\/gTTS\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/346\/20-recommended-packages-in-review\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"720\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2f4\/c8b\/ff8\/2f4c8bff8196b2c145f0e77306cb1ed8.png\" data-width=\"1280\"\/><figcaption><\/figcaption><\/figure>\n<p>gTTS (Google Text-to-Speech), \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Python \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 CLI \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 API \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0440\u0435\u0447\u044c Google Translate. \u0417\u0430\u043f\u0438\u0441\u044c \u043e\u0437\u0432\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 mp3 \u0432 \u0444\u0430\u0439\u043b, \u0444\u0430\u0439\u043b\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 (bytestring) \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0441\u043e \u0437\u0432\u0443\u043a\u043e\u043c \u0438\u043b\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 stdout. \u0418\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0439\u0442\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 Google Translate TTS, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0438\u0445 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435.<\/p>\n<h3>345. 10 \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0414\u0436\u0435\u0439 \u041c\u0438\u043b\u043b\u0435\u0440 <a href=\"https:\/\/twitter.com\/kjaymiller\">@kjaymiller<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 #1: black \u2014 \u0431\u0435\u0441\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043d\u043e\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Python<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/black\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/psf\/black\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/psf\/black\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/345\/10-tips-and-tools-for-developer-productivity\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"451\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a3b\/539\/571\/a3b539571687a2bf5d7cf5e3fe0354e2.png\" data-width=\"958\"\/><figcaption><\/figcaption><\/figure>\n<p>Black \u2014 \u044d\u0442\u043e \u0431\u0435\u0441\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442\u0442\u0435\u0440 \u043a\u043e\u0434\u0430 Python. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0435\u0433\u043e, \u0432\u044b \u0441\u043e\u0433\u043b\u0430\u0448\u0430\u0435\u0442\u0435\u0441\u044c \u0443\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u043c\u0435\u043b\u043e\u0447\u0430\u043c\u0438 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412\u0437\u0430\u043c\u0435\u043d Black \u0434\u0430\u0451\u0442 \u0432\u0430\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0437\u043c \u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u0443 \u043e\u0442 \u0432\u043e\u0440\u0447\u0430\u043d\u0438\u044f pycodestyle. \u0412\u044b \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u0435 \u0432\u0440\u0435\u043c\u044f \u0438 \u0434\u0443\u0448\u0435\u0432\u043d\u044b\u0435 \u0441\u0438\u043b\u044b.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 #2: rumps \u2014 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f macOS Python Statusbar<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/rumps\">PyPi<\/a> | <a href=\"https:\/\/github.com\/jaredks\/rumps\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/jaredks\/rumps\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/345\/10-tips-and-tools-for-developer-productivity\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"224\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aa7\/41c\/686\/aa741c6869048bb185229f073d9effc1.png\" data-width=\"598\"\/><figcaption><\/figcaption><\/figure>\n<p>rumps (Ridiculously Uncomplicated macOS Python Statusbar) \u043c\u043e\u0436\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 PyObjC \u043d\u0435 \u043d\u0443\u0436\u0435\u043d! rumps \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0443\u0436\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043c\u0435\u043d\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430.<\/p>\n<h3>344. SQLAlchemy 2.0<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u041c\u0430\u0439\u043a \u0411\u0435\u0439\u0435\u0440 <a href=\"https:\/\/twitter.com\/zzzeek\">@zzzeek<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: nplusone \u2014 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 N+1 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/nplusone\">PyPi<\/a> | <a href=\"https:\/\/github.com\/jmcarp\/nplusone\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/jmcarp\/nplusone\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/344\/sqlalchemy-2.0\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<p>nplusone \u2014 \u044d\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b n+1 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u041e\u0420\u041c \u043d\u0430 Python, \u0432\u043a\u043b\u044e\u0447\u0430\u044f SQLAlchemy, Peewee \u0438 \u041e\u0420\u041c Django.<\/p>\n<h3>343. \u0414\u0435\u043b\u0430\u0439\u0442\u0435 \u0432\u0441\u0451 \u0432 Excel, \u043f\u043e\u043b\u0443\u0447\u0430\u0439\u0442\u0435 \u043a\u043e\u0434 Python \u0434\u043b\u044f \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Mito<\/h3>\n<p>\u0413\u043e\u0441\u0442\u0438: \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438 (\u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0432 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0438\u043c\u0451\u043d \u0438 \u0441\u0441\u044b\u043b\u043e\u043a)<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: Pandas Profiling \u2014 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0440\u0435\u0439\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 Pandas<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/pandas-profiling\/\">PyPi<\/a> | <a href=\"https:\/\/pandas-profiling.github.io\/pandas-profiling\/\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/pandas-profiling\/pandas-profiling\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/343\/do-excel-things-get-notebook-python-code-with-mito\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"576\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d6e\/aa8\/41d\/d6eaa841d04d8a2a07f25be09cc5755b.png\" data-width=\"1024\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f pandas DataFrame. \u0424\u0443\u043d\u043a\u0446\u0438\u044f pandas df.describe() \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u0430, \u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0432\u0430\u0442\u0430 \u0434\u043b\u044f \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0433\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. pandas_profiling \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 pandas DataFrame \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e df.profile_report(), \u0447\u0442\u043e\u0431\u044b \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u044b\u0441\u0442\u0440\u043e. \u042f \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0421\u043f\u0430\u0441\u0438\u0431\u043e, \u0447\u0442\u043e \u043e\u043d\u0430 \u0435\u0441\u0442\u044c!<\/p>\n<h3>342. Python \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u0437\u0434\u0430\u043d\u0438\u0439<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0413\u0438 \u0422\u0430\u043b\u0430\u0440\u0438\u043a\u043e, \u0435\u0433\u043e <a href=\"https:\/\/github.com\/gtalarico\/gtalarico\">GitHub<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: pythonic \u2014 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/pythonic\">PyPi<\/a> | <a href=\"https:\/\/github.com\/hANSIc99\/Pythonic\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/hANSIc99\/Pythonic\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/342\/python-in-architecture-as-in-actual-buildings\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"858\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3e9\/99e\/617\/3e999e6176a0d02864a241cdb2188dfa.png\" data-width=\"1323\"\/><figcaption><\/figcaption><\/figure>\n<p>Pythonic \u2014 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439.<\/p>\n<h3>341. 25 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 Pandas, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u043d\u0435 \u0437\u043d\u0430\u043b\u0438<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0411\u0435\u043a\u0441 \u0422\u0443\u0439\u0447\u0438\u0435\u0432, <a href=\"https:\/\/www.linkedin.com\/in\/bextuychiev\/\">LinkedIn<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: umap-learn \u2014 Uniform Manifold Approximation and Projection<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/umap-learn\">PyPi<\/a> | <a href=\"https:\/\/umap-learn.readthedocs.io\/en\/latest\/\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/lmcinnes\/umap\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/341\/25-pandas-functions-you-didn-t-know-existed\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"477\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/914\/562\/cba\/914562cbaaf18d6853e0d67ffe960686.png\" data-width=\"1320\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0438\u0449\u0435\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0431\u043b\u0438\u0437\u043a\u0443\u044e \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044e \u043d\u0438\u0437\u043a\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438? Uniform Manifold Approximation and Projection (UMAP) \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u0430\u043a t-SNE, \u0430 \u0435\u0449\u0451 \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h3>340. Pyjion \u2014 \u0432\u0440\u0435\u043c\u044f JIT \u043f\u0440\u0438\u0448\u043b\u043e \u0434\u043b\u044f Python?<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u042d\u043d\u0442\u043e\u043d\u0438 \u0428\u043e\u0443 <a href=\"https:\/\/twitter.com\/anthonypjshaw\">@anthonypjshaw<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 1: tortoise ORM \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 async ORM \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/tortoise-orm\/\">PyPi<\/a> | <a href=\"https:\/\/tortoise.github.io\/\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/tortoise\/tortoise-orm\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/340\/time-to-jit-your-python-with-pyjion\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"608\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b06\/b60\/5a6\/b06b605a68ecf9c2c753a057f126cc51.png\" data-width=\"1381\"\/><figcaption><\/figcaption><\/figure>\n<p>Tortoise ORM \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 asyncio ORM (Object Relational Mapper), \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0439 Django. Tortoise ORM \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0442\u0435\u043e\u0440\u0438\u0438 \u0438 \u0441 \u0432\u043e\u0441\u0445\u0438\u0449\u0451\u043d\u043d\u043e\u0439 \u043e\u0433\u043b\u044f\u0434\u043a\u043e\u0439 \u043d\u0430 Django ORM. \u041f\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u0437\u0430\u043c\u044b\u0441\u043b\u0443 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438, \u043d\u043e \u0441 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 2: beanie \u2014 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 ODM \u0434\u043b\u044f MongoDB<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/Beanie\/\">PyPi<\/a> | <a href=\"https:\/\/roman-right.github.io\/beanie\/\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/roman-right\/beanie\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/340\/time-to-jit-your-python-with-pyjion\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"94\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/580\/908\/9d1\/5809089d15ba4c703cccce69a2ba0130.png\" data-width=\"294\"\/><figcaption><\/figcaption><\/figure>\n<p>Beanie \u2014 \u044d\u0442\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043d\u044b\u0439 \u043c\u0430\u043f\u043f\u0435\u0440 (ODM) \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python \u0434\u043b\u044f MongoDB, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Motor \u0438 Pydantic. \u0412 Beanie \u043a\u0430\u0436\u0434\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u044d\u0442\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0435\u0439. \u041f\u043e\u043c\u0438\u043c\u043e \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 Beanie \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 3: hathi \u2014 \u0441\u043a\u0430\u043d\u0435\u0440 \u0445\u043e\u0441\u0442\u043e\u0432 SQL \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0430\u0442\u0430\u043a \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044e<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/hathi\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/tonybaloney\/hathi\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/tonybaloney\/hathi\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/340\/\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"522\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f1a\/ffa\/b51\/f1affab5168163f000d0b0c64d6068f1.png\" data-width=\"1600\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u043a\u0430\u043d\u0435\u0440 \u0445\u043e\u0441\u0442\u043e\u0432 SQL \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0430\u0442\u0430\u043a \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044e. \u041f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c (filter_pass.py) \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0445 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h3>339. \u0413\u0432\u0438\u0434\u043e \u0432\u0430\u043d \u0420\u043e\u0441\u0441\u0443\u043c \u0438 \u041c\u0430\u0440\u043a \u0428\u0435\u043d\u043d\u043e\u043d: \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u043c Python<\/h3>\n<p>\u0413\u043e\u0441\u0442\u0438: \u0413\u0432\u0438\u0434\u043e \u0432\u0430\u043d \u0420\u043e\u0441\u0441\u0443\u043c, <a href=\"https:\/\/twitter.com\/gvanrossum\">@gvanrossum<\/a> | \u041c\u0430\u0440\u043a \u0428\u0435\u043d\u043d\u043e\u043d, <a href=\"https:\/\/www.linkedin.com\/in\/mark-shannon-bb459551\/\">LinkedIn<\/a><\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u044d\u043f\u0438\u0437\u043e\u0434\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430, \u043d\u043e \u043c\u044b \u0446\u0435\u043d\u0438\u043c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c Python \u0431\u044b\u0441\u0442\u0440\u0435\u0435 (\u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c).<\/p>\n<p>\u0421\u0441\u044b\u043b\u043a\u0430 <a href=\"https:\/\/talkpython.fm\/episodes\/show\/339\/making-python-faster-with-guido-and-mark\">\u043d\u0430 \u044d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<h3>338. \u041f\u0430\u043a\u0435\u0442 cibuildwheel \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438 scikit-HEP<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: Henry Schreiner <a href=\"https:\/\/twitter.com\/HenrySchreiner3\">@HenrySchreiner3<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: plotext \u2014 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u0440\u044f\u043c\u043e \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/plotext\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/piccolomo\/plotext\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/piccolomo\/plotext\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/338\/using-cibuildwheel-to-manage-the-scikit-hep-packages\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"140\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/503\/a6e\/f76\/503a6ef76a2a6c31f8f97ebd7dc39e20.png\" data-width=\"485\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041b\u044e\u0431\u0438\u0442\u0435\u043b\u0438 CLI, plotext \u0441\u0442\u0440\u043e\u0438\u0442 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u0440\u044f\u043c\u043e \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435, \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 matplotlib.<\/p>\n<h3>337. Kedro \u2014 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b Data Science<\/h3>\n<p>\u0413\u043e\u0441\u0442\u0438: \u0423\u044d\u043b\u043e\u043d \u0423\u043e\u043a\u0435\u0440 <a href=\"https:\/\/twitter.com\/_WaylonWalker\">@_WaylonWalker<\/a> | Yetunde Dada <a href=\"https:\/\/twitter.com\/yetudada\">@yetudada<\/a> | Ivan Danov <a href=\"https:\/\/twitter.com\/ivandanov\">@ivandanov<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 #1: fsspec \u2014 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0434\u043b\u044f Python<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/fsspec\/\">PyPi<\/a> | <a href=\"https:\/\/filesystem-spec.readthedocs.io\/en\/latest\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/intake\/filesystem_spec\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/337\/kedro-for-maintainable-data-science\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<p>Filesystem Spec (fsspec) \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0438\u0442\u043e\u043d-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445, \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u0431\u0430\u0439\u0442-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449. \u041a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c \u0441 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u0430\u043a \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c!<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 2: dynaconf \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c\u0438<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/dynaconf\/\">PyPi<\/a> | <a href=\"https:\/\/www.dynaconf.com\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/rochacbruno\/dynaconf\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/337\/\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"216\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3bf\/d3d\/4e4\/3bfd3d4e4760816d2410c6b6a4565a15.png\" data-width=\"400\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041b\u0435\u043d\u0438\u0432\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043d\u0430 \u0441\u0442\u0435\u0440\u043e\u0438\u0434\u0430\u0445!<\/p>\n<h3>336. \u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043c\u044b\u0441\u043b\u0430\u0445 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0423\u0438\u043b\u043b \u041c\u0430\u043a\u0413\u0443\u0433\u0430\u043d <a href=\"https:\/\/twitter.com\/willmcgugan\">@willmcgugan<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: objexplore \u2014 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u043a\u0442\u043e\u0432 Python<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/objexplore\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/kylepollina\/objexplore\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/kylepollina\/objexplore\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/336\/terminal-magic-with-rich-and-textual\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"254\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9d5\/23b\/93a\/9d523b93ab2a960d104be944446106fa.png\" data-width=\"808\"\/><figcaption><\/figcaption><\/figure>\n<p>Objexplore \u2014 \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Python \u0434\u043b\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0435\u0433\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0438\u043b\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0438\u043b\u0438 \u0447\u0435\u0433\u043e \u0443\u0433\u043e\u0434\u043d\u043e!<\/p>\n<h3>335. \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0433\u0435\u043d\u043e\u0432 \u043d\u0430 Python<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0414\u044d\u0432\u0438\u0434 \u0411\u043e\u0440\u043d <a href=\"https:\/\/twitter.com\/Hypostulate\">@Hypostulate<\/a> | <a href=\"https:\/\/beamtx.com\">Beam Therapeutics<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 1: AWS Cloud Development Kit (AWS CDK)<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/aws-cdk.core\/\">PyPi<\/a> | <a href=\"https:\/\/docs.aws.amazon.com\/cdk\/latest\/guide\/work-with-cdk-python.html\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/aws\/aws-cdk\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/335\/gene-editing-with-python\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"138\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/88b\/636\/58e\/88b63658e87b5d2c65ad271d160fda77.png\" data-width=\"365\"\/><figcaption><\/figcaption><\/figure>\n<p>AWS Cloud Development Kit (AWS CDK) \u2014 \u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0432 \u043a\u043e\u0434\u0435 \u0438 \u0435\u0451 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 AWS CloudFormation.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 2: luigi \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c + \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447 + \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/p>\n<p><a href=\"https:\/\/pypi.org\/project\/luigi\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/spotify\/luigi\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/spotify\/luigi\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/335\/gene-editing-with-python\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"172\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6bf\/720\/e08\/6bf720e08cb0d52f94671332ff6da01e.png\" data-width=\"322\"\/><figcaption><\/figcaption><\/figure>\n<p>Luigi \u2014 \u044d\u0442\u043e \u043f\u0430\u043a\u0435\u0442 \u0434\u043b\u044f Python (\u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 3.6\u20133.9), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u044b \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0445 \u0442\u0430\u0441\u043a\u043e\u0432. \u0412 \u043d\u0451\u043c \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0431\u043e\u0435\u0432, \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.<\/p>\n<h3>334. \u041f\u043b\u0430\u043d\u0435\u0442\u0430\u0440\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 Microsoft<\/h3>\n<p>\u0413\u043e\u0441\u0442\u0438: \u0420\u043e\u0431 \u042d\u043c\u0430\u043d\u0443\u044d\u043b\u044c <a href=\"https:\/\/twitter.com\/lossyrob\">@lossyrob<\/a> | Tom Augspurger <a href=\"https:\/\/twitter.com\/TomAugspurger\">@TomAugspurger<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: seaborn \u2014 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/seaborn\/\">PyPi<\/a> | <a href=\"https:\/\/seaborn.pydata.org\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/cupy\/cupy\/\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/334\/microsoft-planetary-computer\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"228\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6c6\/887\/78d\/6c688778d9df0ab8413b0fe1f65b33bb.png\" data-width=\"795\"\/><figcaption><\/figcaption><\/figure>\n<p>Seaborn \u2014 \u044d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 matplotlib \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python. \u041e\u043d\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432. \u0415\u0441\u043b\u0438 matplotlib \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Android, \u0442\u043e seaborn \u2014 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 iPhone!<\/p>\n<h3>333. \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 Data Science \u0432 2021 \u0433\u043e\u0434\u0443<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0421\u0442\u044d\u043d \u0417\u0430\u0439\u0431\u0435\u0440\u0442 <a href=\"https:\/\/twitter.com\/seibert\">@seibert<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: cupy \u2014 NumPy \u0438 SciPy \u0434\u043b\u044f GPU<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/cupy\/\">PyPi<\/a> | <a href=\"https:\/\/cupy.dev\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/cupy\/cupy\/\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/333\/state-of-data-science-in-2021\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"428\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/528\/d9d\/694\/528d9d6947e1a4fc6fc587b8b055eb9f.png\" data-width=\"1000\"\/><figcaption><\/figcaption><\/figure>\n<p>CuPy \u2014 \u044d\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0441 GPU-\u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python. CuPy \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 CUDA Toolkit, \u0432\u043a\u043b\u044e\u0447\u0430\u044f cuBLAS, cuRAND, cuSOLVER, cuSPARSE, cuFFT, cuDNN \u0438 NCCL, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 GPU \u043f\u043e \u043f\u043e\u043b\u043d\u043e\u0439. \u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e NumPy \u0438 SciPy \u043d\u0430 \u0441\u0442\u0435\u0440\u043e\u0438\u0434\u0430\u0445!<\/p>\n<h3>332. \u041d\u0430\u0434\u0451\u0436\u043d\u044b\u0439 Python<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u041f\u0430\u0442\u0440\u0438\u043a \u0412\u0438\u0430\u0444\u043e\u0440\u0435 <a href=\"https:\/\/twitter.com\/PatViaforever\">@PatViaforever<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: stevedore \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Python<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/stevedore\/\">PyPi<\/a> | <a href=\"https:\/\/docs.openstack.org\/stevedore\/latest\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/opendev.org\/openstack\/stevedore\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/332\/robust-python\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<p>Python \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043a\u043e\u0434\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0432\u0430\u043c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0443\u0442\u0451\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 (\u00ab\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432\u00bb) \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u044e\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u0438 \u044d\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 import \u0438\u043b\u0438 importlib. Stevedore \u0438\u0437\u0431\u0435\u0433\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0435\u0449\u0451 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u0441\u0442\u0440\u043e\u0438\u0442 \u0435\u0433\u043e \u043f\u043e\u0432\u0435\u0440\u0445 \u0442\u043e\u0447\u0435\u043a \u0432\u0445\u043e\u0434\u0430 setuptools. \u041e\u0434\u043d\u0430\u043a\u043e \u043a\u043e\u0434 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u0432\u0445\u043e\u0434\u0430 \u0438\u043c\u0435\u0435\u0442 \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 stevedore \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043b\u0430\u0441\u0441\u044b \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0431\u0449\u0438\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439.<\/p>\n<h3>330. \u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 Apache Airflow<\/h3>\n<p>\u0413\u043e\u0441\u0442\u0438: \u042f\u0440\u0435\u043a \u041f\u043e\u0442\u044e\u043a <a href=\"https:\/\/www.linkedin.com\/in\/jarekpotiuk\/\">LinkedIn<\/a> | \u041d\u0430\u0439\u043a \u041a\u0430\u043a\u0441\u0438\u043b\u044c <a href=\"https:\/\/twitter.com\/kaxil\">@kaxil<\/a> | \u041b\u0435\u0430 \u041a\u043e\u0443\u043b <a href=\"https:\/\/twitter.com\/leahecole\">@leahecole<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: Apache Airflow \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<p><a href=\"https:\/\/pypi.org\/project\/apache-airflow\/\">PyPi<\/a> | <a href=\"https:\/\/airflow.apache.org\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/apache\/airflow\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/330\/apache-airflow-open-source-workflow-with-python\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"618\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d82\/597\/20b\/d8259720baa7bab4797d8a92f052d4a0.png\" data-width=\"1600\"\/><figcaption><\/figcaption><\/figure>\n<p>Airflow \u2014 \u044d\u0442\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b. Airflow \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b \u0438 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e. \u041a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 DAG \u0441\u0445\u043e\u0436\u0430 \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u043a \u0434\u0440\u0443\u0433\u043e\u043c\u0443, \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0441\u0442\u044c. \u0421\u0440\u0435\u0434\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u2014 Luigi, Oozie \u0438 Azkaban.<\/p>\n<p>Airflow \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u043e \u0435\u0441\u0442\u044c \u043c\u043d\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0438\u0434\u0435\u0430\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u044b\u043c\u0438 (\u0442. \u0435. \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f) \u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043e\u0431\u044a\u0451\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043a \u0434\u0440\u0443\u0433\u043e\u0439 (\u0445\u043e\u0442\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Xcom \u0432 Airflow). \u041f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430 \u0437\u0430\u0434\u0430\u0447, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0431\u044a\u0451\u043c\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u043b\u0443\u0447\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u2014 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u043c\u043e\u0447\u0438\u0439 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0441\u043b\u0443\u0436\u0431\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u043e\u0434\u0430.<\/p>\n<h3>328. Piccolo \u2014 \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f ORM \u0434\u043b\u044f Python (\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e)<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0414\u044d\u043d\u0438\u0435\u043b \u0422\u0430\u0443\u043d\u0441\u0435\u043d\u0434 <a href=\"https:\/\/twitter.com\/danieltownsend\">@danieltownsend<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: pydantic \u2014 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/pydantic\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/samuelcolvin\/pydantic\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/samuelcolvin\/pydantic\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/328\/piccolo-a-fast-async-orm-for-python-updated\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"891\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f62\/74f\/10f\/f6274f10f20b363143b8c3c37c3ea88f.png\" data-width=\"1600\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u044b\u0439, pydantic \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442\u0441\u044f \u0441 \u0432\u0430\u0448\u0438\u043c\u0438 \u043b\u0438\u043d\u0442\u0435\u0440\u0430\u043c\u0438, IDE \u0438 \u043c\u043e\u0437\u0433\u0430\u043c\u0438. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435, \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432 \u0447\u0438\u0441\u0442\u043e\u043c, \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c Python 3.6+; \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e pydantic.<\/p>\n<h3>327. \u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/h3>\n<ul>\n<li>\n<p>\u0413\u043e\u0441\u0442\u0438: \u0420\u0438\u0432\u0435\u0440\u0441 \u041a\u0443\u043e\u043c\u043e <a href=\"https:\/\/twitter.com\/RiversCuomo\">@RiversCuomo<\/a> | \u0414\u0436\u0435\u0439 \u041c\u0438\u043b\u043b\u0435\u0440 <a href=\"https:\/\/twitter.com\/kjaymiller\">@kjaymiller<\/a> | \u041a\u0438\u043c \u0432\u0430\u043d \u0412\u0438\u043a <a href=\"https:\/\/twitter.com\/kim_vanwyk\">@kim_vanwyk<\/a> | \u0420\u0430\u0441\u0442\u0438 \u0413\u0440\u0435\u0433\u043e\u0440\u0438 <a href=\"https:\/\/twitter.com\/greenermountain\">@greenermountain<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0430\u043a\u0435\u0442: pipx \u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Python \u0432 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0430\u0445<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/pipx\">PyPi<\/a> | <a href=\"https:\/\/pypa.github.io\/pipx\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/pypa\/pipx\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/327\/little-automation-tools-in-python\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"360\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a27\/760\/27e\/a2776027e42cc32936b95836d6e1770b.png\" data-width=\"376\"\/><figcaption><\/figcaption><\/figure>\n<p>\u042d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u044d\u043f\u0438\u0437\u043e\u0434\u043e\u0432 \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0442\u043e\u0442, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0430\u043c\u044b\u0439 \u043b\u0443\u0447\u0448\u0438\u0439 \u043b\u043e\u0433\u043e\u0442\u0438\u043f, \u2014 \u044d\u0442\u043e pipx, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Python. \u041e\u043d \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 brew \u0432 macOS, npx \u0432 JavaScript \u0438 apt \u0432 Linux.<\/p>\n<h3>326. \u041d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e wxPython<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u041c\u0430\u0439\u043a \u0414\u0440\u0438\u0441\u043a\u043e\u043b\u043b <a href=\"https:\/\/twitter.com\/driscollis\">@driscollis<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: openpyxl \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Python \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f\/\u0437\u0430\u043f\u0438\u0441\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 Excel 2010 XLSX \/ XLSM<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/openpyxl\">PyPi<\/a> | <a href=\"https:\/\/openpyxl.readthedocs.io\/en\/stable\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/foss.heptapod.net\/openpyxl\/openpyxl\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/326\/building-desktop-apps-with-wxpython\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"200\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/eb6\/0a7\/8cc\/eb60a78cc31a1e25aee9a8d4fa6e97a4.png\" data-width=\"404\"\/><figcaption><\/figcaption><\/figure>\n<h3>325. MicroPython \u0438 CircuitPython<\/h3>\n<ul>\n<li>\n<p>\u0413\u043e\u0441\u0442\u0438: \u0421\u043a\u043e\u0442\u0442 <a href=\"https:\/\/twitter.com\/tannewt\">@tannewt<\/a> | \u0414\u0435\u043c\u0438\u0435\u043d<a href=\"https:\/\/dpgeorge.net\">, \u0435\u0433\u043e \u0441\u0430\u0439\u0442<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0430\u043a\u0435\u0442: httppy \u2014 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 Python \u0441 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430\u043c\u0438<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/HttpPy\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/everitosan\/HttpPy\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/everitosan\/HttpPy\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/325\/micropython-circuitpython\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<p>HttpPy \u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0443\u0434\u043e\u0431\u043d\u0435\u0435. \u041e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 wget (\u0438 \u0434\u043b\u044f Windows).<\/p>\n<h3>324. Python API \u043e\u0442 Gatorade<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0420\u043e\u0434 \u0421\u0435\u043d\u0440\u0430 <a href=\"https:\/\/twitter.com\/rodsenra\">@rodsenra<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: rich \u2014 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441-\u0431\u0430\u0440\u044b, \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438, \u043e\u0442\u043c\u0435\u0442\u043a\u0438 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0434\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430.<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/rich\">PyPi<\/a> | <a href=\"https:\/\/rich.readthedocs.io\/en\/latest\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/willmcgugan\/rich\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/324\/gatorade-powered-python-apis\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"74\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b21\/9c5\/c94\/b219c5c944398fa5698e3b5dc3bbada0.png\" data-width=\"300\"\/><figcaption><\/figcaption><\/figure>\n<p>Rich \u2014 \u044d\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Python \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043c\u044b\u0441\u043b\u0430\u0445 \u0441\u043b\u043e\u0432\u0430 \u00ab\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00bb. API Rich \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0446\u0432\u0435\u0442 \u0438 \u0441\u0442\u0438\u043b\u044c \u043a \u0432\u044b\u0432\u043e\u0434\u0443 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430. Rich \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441-\u0431\u0430\u0440\u044b, \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443, \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430, \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c <code>from rich import print<\/code>.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"2228\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/db6\/930\/f54\/db6930f54b8c0b771884ec44b0f63b6a.png\" data-width=\"1988\"\/><figcaption><\/figcaption><\/figure>\n<h3>323. \u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0434\u043b\u044f Docker \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0418\u0442\u0430\u043c\u0430\u0440 \u0422\u0451\u0440\u043d\u0435\u0440-\u0422\u0440\u0430\u0443\u0440\u0438\u043d\u0433 <a href=\"https:\/\/twitter.com\/itamarst\">@itamarst<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: PyO3 \u2014 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 Python \u0438\u0437 Rust<\/p>\n<ul>\n<li>\n<p>PyPi \u2014 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d | <a href=\"https:\/\/pyo3.rs\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/PyO3\/pyo3\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/323\/best-practices-for-docker-in-production\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"200\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/92c\/db3\/6bb\/92cdb36bbc2a2160d293f21bdc89eaed.png\" data-width=\"200\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0411\u0438\u043d\u0434\u0438\u043d\u0433 Rust \u0434\u043b\u044f Python, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f Python. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043a\u043e\u0434\u043e\u043c Python \u0438\u0437 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 Rust.<\/p>\n<h3>322. \u041f\u0443\u0442\u044c \u0432 Data Science<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0421\u0430\u043d\u044c\u044f\u043c \u0411\u0445\u0443\u0442\u0430\u043d\u0438 <a href=\"https:\/\/twitter.com\/bhutanisanyam1\">@bhutanisanyam1<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: fastai. \u041d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438? \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0438\u0445 \u0441\u043d\u043e\u0432\u0430 \u043d\u0435 \u043a\u0440\u0443\u0442\u044b\u043c\u0438\u2026<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/fastai\">PyPi<\/a> | <a href=\"https:\/\/www.fast.ai\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/fastai\/fastai\/\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/322\/a-path-into-data-science\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"630\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c49\/fe0\/89b\/c49fe089b8781222aef08b02222c57bf.png\" data-width=\"1200\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0423\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0438 \u0442\u043e\u0447\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u043e\u0432\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b.<\/p>\n<h3>321. HTMX \u2014 \u0447\u0438\u0441\u0442\u044b\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b HTML<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u041a\u0430\u0440\u0441\u043e\u043d \u0413\u0440\u043e\u0441\u0441 <a href=\"https:\/\/twitter.com\/htmx_org\">@htmx_org<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: Alpine.js<\/p>\n<ul>\n<li>\n<p>PyPi | <a href=\"https:\/\/alpinejs.dev\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/alpinejs\/alpine\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/321\/htmx-clean-dynamic-html-pages\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"134\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/955\/117\/9b4\/9551179b43429b472f5663d56862c8ce.png\" data-width=\"702\"\/><figcaption><\/figcaption><\/figure>\n<p>\u042d\u0442\u043e \u043d\u0435 \u043f\u0430\u043a\u0435\u0442 PyPi, \u043d\u043e \u043e\u043d \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0438\u0439: \u043d\u043e\u0432\u044b\u0439, \u043b\u0451\u0433\u043a\u0438\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a JavaScript.<\/p>\n<h3>320. Python \u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u043a\u0435<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0414\u0436\u0435\u043a \u0421\u0438\u043c\u043f\u0441\u043e\u043d, \u0435\u0433\u043e <a href=\"https:\/\/jacksimpson.co\/\">\u0441\u0430\u0439\u0442<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: numba \u2014 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044f \u043a\u043e\u0434 \u043d\u0430 Python \u0447\u0435\u0440\u0435\u0437 LLVM<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/numba\/\">PyPi<\/a> | <a href=\"https:\/\/numba.pydata.org\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/numba\/numba\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/320\/python-in-the-electrical-energy-sector\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"80\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/399\/ffd\/fa3\/399ffdfa305d72831abd72586b86551a.png\" data-width=\"300\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 LLVM Numba \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Python \u0432 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0427\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0432 Python, \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 Numba, \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0442\u044c\u0441\u044f \u043a C \u0438\u043b\u0438 FORTRAN. \u0412\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 Python, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0433 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0438\u043c\u0435\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 C\/C++. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u0432 Numba \u043a \u0432\u0430\u0448\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Python, \u0438 Numba \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435.<\/p>\n<h3>319. \u0422\u0430\u0439\u043f\u0441\u043a\u0432\u043e\u0442\u0442\u0438\u043d\u0433 \u0438 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043e\u043a<\/h3>\n<p>\u0413\u043e\u0441\u0442\u0438: \u0411\u0435\u043d\u0446 \u0422\u043e\u0437\u0435\u0440, \u0435\u0433\u043e <a href=\"http:\/\/btozer@iqt.org\">\u043f\u043e\u0447\u0442\u0430<\/a> | \u0414\u0436\u043e\u043d \u0421\u043f\u0438\u0434 \u041c\u0435\u0439\u0435\u0440\u0441, \u0435\u0433\u043e <a href=\"http:\/\/jmeyers@iqt.org\">\u043f\u043e\u0447\u0442\u0430<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: NetworkML \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u043e\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e \u0442\u0440\u0430\u0444\u0444\u0438\u043a\u0443 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 ML<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/networkml\">PyPi<\/a> | <a href=\"https:\/\/github.com\/IQTLabs\/NetworkML\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/IQTLabs\/NetworkML\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/319\/typosquatting-and-supply-chains-vulnerabilities\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<p>NetworkML \u2014 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Poseidon. \u041c\u043e\u0434\u0435\u043b\u044c \u0432 networkML \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u043e\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0434\u0435\u043b\u0435\u0439 ML, \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u0445 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430. \u00ab\u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u043e\u043b\u044c\u00bb \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0441\u0435\u0442\u0438 \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0440\u043e\u043b\u0438, \u043a\u0430\u043a \u043f\u0440\u0438\u043d\u0442\u0435\u0440, \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435, \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u043c\u0435\u0441\u0442\u043e \u0432 \u0441\u0440\u0435\u0434\u0435 \u0418\u0422. \u041d\u0430\u0448 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e networkML \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u0438 \u043e\u0446\u0435\u043d\u043a\u0438 F1 \u0432\u044b\u0448\u0435 90 % \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0438\u0437 \u0432\u0430\u0448\u0435\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438. \u0412\u043e\u043f\u0440\u043e\u0441 \u043e \u0442\u043e\u043c, \u043c\u043e\u0436\u0435\u0442 \u043b\u0438 \u044d\u0442\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u0438\u0437 \u0418\u0422-\u0441\u0440\u0435\u0434\u044b \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u0418\u0422-\u0441\u0440\u0435\u0434\u0443, \u2014 \u044d\u0442\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439.<\/p>\n<h3>318. \u0418\u0437\u043c\u0435\u0440\u044f\u0435\u043c \u0432\u043b\u0438\u044f\u043d\u0438\u0435 ML \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CodeCarbon<\/h3>\n<ul>\n<li>\n<p>\u0413\u043e\u0441\u0442\u0438: \u0412\u0438\u043a\u0442\u043e\u0440 \u0428\u043c\u0438\u0434\u0442 <a href=\"https:\/\/twitter.com\/vict0rsch\">@vict0rsch<\/a> | \u0414\u0436\u043e\u043d\u0430\u0442\u0430\u043d \u0423\u0438\u043b\u0441\u043e\u043d <a href=\"https:\/\/www.haverford.edu\/\">Webpage<\/a> | \u0411\u043e\u0440\u0438\u0441 \u0424\u0435\u043b\u044c\u0434 <a href=\"https:\/\/twitter.com\/Lothiraldan\">@Lothiraldan<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0430\u043a\u0435\u0442: fastapi \u2014 \u0432\u0435\u0431-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f API<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/fastapi\">PyPi<\/a> | <a href=\"https:\/\/fastapi.tiangolo.com\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/tiangolo\/fastapi\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/318\/measuring-your-ml-impact-with-codecarbon\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"369\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/698\/d24\/37a\/698d2437a89a65b36e97f7583cef158a.png\" data-width=\"1023\"\/><figcaption><\/figcaption><\/figure>\n<p>FastAPI \u2014 \u044d\u0442\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439, \u0431\u044b\u0441\u0442\u0440\u044b\u0439 (\u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439) \u0432\u0435\u0431-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f API \u0441 Python 3.6+ \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a \u0442\u0438\u043f\u043e\u0432 \u044f\u0437\u044b\u043a\u0430. \u041f\u043e\u043c\u0438\u043c\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u0438\u043f\u043e\u0432 API \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Swagger \u043c\u043e\u0436\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e API.<\/p>\n<h3>317. Python \u0438 \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u044f \u0444\u0435\u0434\u0435\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u0431\u043e\u0440\u043e\u0432 US<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u041b\u0430\u0443\u0440\u0430 \u0411\u043e\u0444\u043e\u0440\u0442 <a href=\"https:\/\/twitter.com\/@laurabeaufort\">@laurabeaufort<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: Flask-SQLAlchemy \u2014 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 SQLAlchemy \u0432 \u0432\u0430\u0448\u0435\u043c Flask<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/flask_sqlalchemy\">PyPi<\/a> | <a href=\"https:\/\/flask-sqlalchemy.palletsprojects.com\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/pallets\/flask-sqlalchemy\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/317\/python-at-the-us-federal-election-commission\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"98\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d3a\/289\/b34\/d3a289b340f43de248c786f9a96b169f.png\" data-width=\"430\"\/><figcaption><\/figcaption><\/figure>\n<p>Flask-SQLAlchemy \u2014 \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Flask, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 SQLAlchemy. \u0415\u0433\u043e \u0446\u0435\u043b\u044c \u2014 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 SQLAlchemy \u0441 Flask \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0445\u0435\u043b\u043f\u0435\u0440\u044b.<\/p>\n<h3>316. Flask 2.0<\/h3>\n<p>\u0413\u043e\u0441\u0442\u0438: \u0414\u044d\u0432\u0438\u0434 \u041b\u043e\u0440\u0434 <a href=\"https:\/\/twitter.com\/davidism\">@davidism<\/a> | \u0424\u0438\u043b\u0438\u043f \u0414\u0436\u043e\u043d\u0441 <a href=\"https:\/\/twitter.com\/pdgjones\">@pdgjones<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 #1: pydantic \u2014 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/pydantic\/\">PyPi<\/a> | <a href=\"https:\/\/pydantic-docs.helpmanual.io\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/samuelcolvin\/pydantic\/\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/316\/flask-2.0\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439 \u0442\u0438\u043f\u043e\u0432 \u0432 Python. pydantic \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u0442\u0438\u043f\u043e\u0432 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438, \u043a\u043e\u0433\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 #2: AutoInvent \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 API \u0438 UI GraphQL \u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/magql\/\">PyPi<\/a> | <a href=\"https:\/\/autoinvent.dev\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/autoinvent\/\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/316\/flask-2.0\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<p>Magql \u2014 \u044d\u0442\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a GraphQL \u043d\u0430 Python. \u041e\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 GraphQL API. \u0418 \u043f\u0440\u043e\u0438\u0437\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a\u0430\u043a magical \u2014 \u00ab\u0432\u043e\u043b\u0448\u0435\u0431\u043d\u044b\u0439\u00bb. \u0422\u0430\u043a \u043e\u043d\u043e \u0438 \u0435\u0441\u0442\u044c!<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 3: trio \u2014 \u0434\u0440\u0443\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Python \u0434\u043b\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430 \u0438 \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/trio\">PyPi<\/a> | <a href=\"https:\/\/trio.readthedocs.io\/en\/stable\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/python-trio\/trio\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/316\/flask-2.0\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"290\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2e6\/865\/e52\/2e6865e52962f4d6d15b1c465f4791c6.png\" data-width=\"290\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0426\u0435\u043b\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Trio \u2014 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e\/\u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u043b\u044f Python \u0441 \u043f\u0440\u0430\u0432\u043e\u043c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430.<\/p>\n<h3>315. Awesome FastAPI extensions and add ons<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u041c\u0430\u0439\u043a\u043b \u0413\u0435\u0440\u043c\u0430\u043d <a href=\"https:\/\/twitter.com\/mikeherman\">@mikeherman<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 1: flake8-docstrings<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/flake8-docstrings\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/pycqa\/flake8-docstrings\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/pycqa\/flake8-docstrings\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/315\/awesome-fastapi-extensions-and-add-ons\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8eb\/45a\/7eb\/8eb45a7eb992f04b92979a7333829629.png\" data-width=\"1200\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0444\u0430\u043d\u0442\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 pydocstyle \u0432\u043e flake8.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 #2: hotwire-django<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/hotwire-django\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/hotwire-django\/hotwire-django\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/hotwire-django\/hotwire-django\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u0440\u0438\u0437\u0432\u0430\u043d \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Hotwire \u0441 Django. \u0412\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0435\u0440\u043f\u043d\u0443\u0442\u044c \u0438\u0437 <a class=\"mention\" href=\"\/users\/hotwired\">@hotwired<\/a>\/hotwire-rails.<\/p>\n<h3>314. \u0421\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u043d\u0430\u0441 \u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0443\u043c\u0435\u043d\u0442\u0430\u0445 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 Python<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0421\u0435\u0431\u0430\u0441\u0442\u044c\u044f\u043d \u0412\u0438\u0442\u043e\u0432\u0441\u043a\u0438 <a href=\"https:\/\/twitter.com\/SebaWitowski\">@SebaWitowski<\/a><\/p>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: Awesome Python \u2014 \u0436\u0438\u0437\u043d\u044c \u043a\u043e\u0440\u043e\u0442\u043a\u0430, \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d Python<\/p>\n<p><a href=\"https:\/\/awesome-python.com\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/vinta\/awesome-python\/\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/314\/ask-us-about-modern-python-projects-and-tools\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"20\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5b3\/c8b\/39a\/5b3c8b39a5a11e59d1084263746cf8be.png\" data-width=\"110\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python.<\/p>\n<h3>313. \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PyDantic<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: Samuel Colvin <a href=\"https:\/\/twitter.com\/samuel_colvin\">@samuel_colvin<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: starlette \u2014 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0441\u0438\u044f\u044e\u0449\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 ASGI<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/starlette\">PyPi<\/a> | <a href=\"https:\/\/github.com\/encode\/starlette\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/encode\/starlette\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/313\/automate-your-data-exchange-with-pydantic\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"477\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c65\/47a\/70e\/c6547a70e3eacc1c032a43490d5c5692.png\" data-width=\"1180\"\/><figcaption><\/figcaption><\/figure>\n<p>Starlette \u2014 \u044d\u0442\u043e \u043b\u0451\u0433\u043a\u0438\u0439 ASGI-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432.<\/p>\n<h3>312. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Python, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043d\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0416\u044e\u043b\u044c\u0435\u043d \u0414\u0430\u043d\u0436\u0443 <a href=\"https:\/\/twitter.com\/juldanjou\">@juldanjou<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: tenacity \u2014 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0434\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/tenacity\/\">PyPi<\/a> | <a href=\"https:\/\/tenacity.readthedocs.io\/en\/latest\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/jd\/tenacity\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/312\/python-apps-that-scale-to-billions-of-users\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<p>Tenacity \u2014 \u044d\u0442\u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f (Apache 2.0) \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043a \u0447\u0435\u043c\u0443 \u0443\u0433\u043e\u0434\u043d\u043e. \u0411\u0435\u0440\u0451\u0442 \u0441\u0432\u043e\u0451 \u043d\u0430\u0447\u0430\u043b\u043e \u043e\u0442 \u0444\u043e\u0440\u043a\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 retrying, \u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f. Tenacity \u043d\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 retrying \u0432 \u0441\u043c\u044b\u0441\u043b\u0435 API, \u043d\u043e \u0432 \u043d\u0435\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043d\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0440\u044f\u0434 \u0441\u0442\u0430\u0440\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<h3>311. \u041f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443 .git<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0420\u043e\u0431 \u0420\u0438\u0447\u0430\u0440\u0434\u0441\u043e\u043d <a href=\"https:\/\/twitter.com\/rob_rich\">@rob_rich<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: git-hooks-js \u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 git-\u0445\u0443\u043a\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 nodejs<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.npmjs.com\/package\/git-hooks\">npm<\/a> | <a href=\"https:\/\/www.npmjs.com\/package\/git-hooks\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/tarmolov\/git-hooks-js\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/311\/get-inside-the-.git-folder\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<p>git-hooks \u2014 \u044d\u0442\u043e \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 git-\u0445\u0443\u043a\u043e\u0432 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 nodejs. \u041e\u043d\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u043f\u0440\u043e\u0441\u0442\u0430 \u0432 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438. \u041f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 git-hooks, \u0438 \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u0445\u0443\u043a\u0438, \u043a\u043e\u0433\u0434\u0430 \u0445\u0443\u043a \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f git.<\/p>\n<h3>310. \u0421\u0435\u0441\u0441\u0438\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 \u041c\u0430\u0439\u043a\u043b\u043e\u043c<\/h3>\n<p>\u0413\u043e\u0441\u0442\u0438: \u041a\u0438\u043c \u0432\u0430\u043d \u0412\u0438\u043a <a href=\"https:\/\/twitter.com\/kim_vanwyk\">@kim_vanwyk<\/a> | \u041f\u0430\u0442\u0440\u0438\u043a \u0425\u043b\u043e\u0431\u0438\u043b <a href=\"https:\/\/twitter.com\/hlobilpatrik\">@hlobilpatrik<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 1: pySerial \u2014 \u0431\u044d\u043a\u0435\u043d\u0434\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430 \u0434\u043b\u044f Python<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/pyserial\">PyPi<\/a> | <a href=\"https:\/\/github.com\/pyserial\/pyserial\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/pyserial\/pyserial\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/310\/ama-ask-me-anything-with-michael\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"206\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a4a\/053\/4e5\/a4a0534e5a6c6e41f23ebdc3532f4a29.png\" data-width=\"206\"\/><figcaption><\/figcaption><\/figure>\n<p>\u042d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u0438\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u043e\u0440\u0442\u0443. \u041e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u044d\u043a\u0435\u043d\u0434\u044b \u0434\u043b\u044f Python, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u043d\u0430 Windows, OSX, Linux, BSD (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 POSIX-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435) \u0438 IronPython. \u041c\u043e\u0434\u0443\u043b\u044c \u0441 \u0438\u043c\u0435\u043d\u0435\u043c <code>serial<\/code> \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0431\u044d\u043a\u0435\u043d\u0434.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 2: click \u2014 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/Click\">PyPi<\/a> | <a href=\"https:\/\/palletsprojects.com\/p\/click\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/pallets\/click\/\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/310\/ama-ask-me-anything-with-michael\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"350\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/919\/213\/712\/919213712ed0abc73b8f227930b22755.png\" data-width=\"840\"\/><figcaption><\/figcaption><\/figure>\n<p>Click \u2014 \u044d\u0442\u043e \u043f\u0430\u043a\u0435\u0442 Python \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043a\u043e\u0434\u0430. \u042d\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u041e\u043d \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439, \u043d\u043e \u0443\u0436\u0435 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0440\u0430\u0437\u0443\u043c\u043d\u043e.<\/p>\n<h3>309. \u0427\u0435\u043c\u0443 ML \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u043d\u0430\u0441: 7 \u0443\u0440\u043e\u043a\u043e\u0432<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0415\u0432\u0433\u0435\u043d\u0438\u0439 \u042f\u043d <a href=\"https:\/\/twitter.com\/eugeneyan\">@eugeneyan<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: pytest \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043c\u043e\u0449\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 Python<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/pytest\">PyPi<\/a> | <a href=\"https:\/\/docs.pytest.org\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/pytest-dev\/pytest\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/309\/what-ml-can-teach-us-about-life-7-lessons\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"1500\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4a0\/be5\/d3f\/4a0be5d3f3259298d04608d3b8e8640d.png\" data-width=\"1500\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a pytest \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0442\u0435\u0441\u0442\u044b, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. <a href=\"https:\/\/twitter.com\/brianokken\">Brian Okken<\/a> \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043e\u0431 \u044d\u0442\u043e\u043c \u0446\u0435\u043b\u0443\u044e <a href=\"https:\/\/pragprog.com\/titles\/bopytest2\/python-testing-with-pytest-second-edition\/\">\u043a\u043d\u0438\u0433\u0443<\/a>.<\/p>\n<h3>308. Docker \u0434\u043b\u044f Python-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 (\u0432\u0435\u0440\u0441\u0438\u044f 2021)<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u041f\u0438\u0442\u0435\u0440 \u041c\u0430\u043a\u041a\u0438 <a href=\"https:\/\/twitter.com\/pmckee\">@pmckee<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: testcontainers-python \u2014 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 Docker<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/testcontainers\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/testcontainers\/testcontainers-python\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/testcontainers\/testcontainers-python\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/308\/docker-for-python-developers-2021-edition\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/30f\/f77\/f5b\/30ff77f5bf222428df238ae6f6ebe976.png\" data-width=\"1200\"\/><figcaption><\/figcaption><\/figure>\n<p>Testcontainers-python \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b docker (\u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0435\u0431-\u0431\u0440\u0430\u0443\u0437\u0435\u0440 Selenium \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440) \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<h3>306. \u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Python \u0438 Jupyter \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 ZeroMQ<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u041c\u0438\u043d \u0420\u0430\u0433\u0430\u043d-\u041a\u0435\u043b\u043b\u0438 <a href=\"https:\/\/twitter.com\/minrk\">@minrk<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: cibuildwheel \u2014 \u0441\u0431\u043e\u0440\u043a\u0430 Python Wheels \u043d\u0430 CI \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/cibuildwheel\">PyPi<\/a> | <a href=\"https:\/\/cibuildwheel.readthedocs.io\/en\/stable\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/pypa\/cibuildwheel\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/306\/scaling-python-and-jupyter-with-zeromq\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/07d\/217\/491\/07d2174914f8989e1d7a04eb9c33155b.png\" data-width=\"1200\"\/><figcaption><\/figcaption><\/figure>\n<p>cibuildwheel \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0432\u0430\u0448\u0435\u043c CI-\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u2014 \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, CircleCI \u0438 GitLab CI, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442 \u0432\u0430\u0448\u0438 Wheels \u043d\u0430 \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445.<\/p>\n<h3>305. \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e Python \u043d\u0430 Python Discord<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u041b\u0435\u043e\u043d \u0421\u044d\u043d\u0434\u0438 <a href=\"https:\/\/twitter.com\/lemonsaurus_rex\">@lemonsaurus_rex<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: async-rediscache \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043a\u0435\u0448 Redis<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/async-rediscache\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/SebastiaanZ\/async-rediscache\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/SebastiaanZ\/async-rediscache\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/305\/python-community-at-python-discord\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e\u0442 \u043f\u0430\u043a\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u0435\u0448\u0435\u043c Redis \u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435. \u041f\u0430\u043a\u0435\u0442 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0438\u043c \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f.<\/p>\n<h3>304. \u0412\u0435\u0441\u044c asyncio \u0432 Omnilib<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0414\u0436\u043e\u043d \u0420\u0438\u0437 <a href=\"https:\/\/twitter.com\/n7cmdr\">@n7cmdr<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: seinfeld \u2014 \u0437\u0430\u043f\u0440\u043e\u0441 \u0446\u0438\u0442\u0430\u0442\u044b \u0421\u0435\u0439\u043d\u0444\u0435\u043b\u0434\u0430<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/seinfeld\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/jreese\/libseinfeld\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/jreese\/libseinfeld\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/304\/asyncio-all-the-things-with-omnilib\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f8d\/1c2\/2f5\/f8d1c22f562e40eddc03f25500536d68.png\" data-width=\"1200\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Python \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0446\u0438\u0442\u0430\u0442 \u0421\u0430\u0439\u043d\u0444\u0435\u043b\u0434\u0430. \u041e, \u0434\u0430, \u0421\u0430\u0439\u043d\u0444\u0435\u043b\u0434!<\/p>\n<h3>303. Python \u0434\u043b\u044f \u0430\u0441\u0442\u0440\u043e\u043d\u043e\u043c\u0438\u0438, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u043a\u0442\u043e\u0440 \u0411\u0435\u043a\u043a\u0438<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: Dr. \u0411\u0435\u043a\u043a\u0438 \u0421\u043c\u0435\u0442\u0445\u0435\u0440\u0441\u0442 <a href=\"https:\/\/twitter.com\/drbecky_\">@drbecky_<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: notebook \u2014 \u0432\u0435\u0431-\u0441\u0440\u0435\u0434\u0430 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/notebook\/\">PyPi<\/a> | <a href=\"https:\/\/jupyter-notebook.readthedocs.io\/en\/stable\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/jupyter\/notebook\/\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/303\/python-for-astronomy-with-dr.-becky\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"721\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fce\/b7a\/d46\/fceb7ad46f9c96bac1f32e44787c4b0f.png\" data-width=\"1018\"\/><figcaption><\/figcaption><\/figure>\n<p>Jupyter Notebook \u2014 \u044d\u0442\u043e \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0441 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f\u043c\u0438, \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438 \u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u043c\u0438. \u0411\u043b\u043e\u043a\u043d\u043e\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b.<\/p>\n<h3>302. \u041b\u0430\u043d\u0434\u0448\u0430\u0444\u0442 Data Engineering \u0432 2021 \u0433\u043e\u0434\u0443<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0422\u043e\u0431\u0438\u0430\u0441 \u041c\u0435\u0439\u0441\u0438 <a href=\"https:\/\/twitter.com\/TobiasMacey\">@TobiasMacey<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: dagster \u2014 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 \u0438 ETL<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/dagster\">PyPi<\/a> | <a href=\"https:\/\/dagster.io\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/dagster-io\/dagster\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/302\/the-data-engineering-landscape-in-2021\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"276\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c97\/c30\/00e\/c97c3000e5a05fb79c524da47ae2fb7d.png\" data-width=\"800\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0437\u0430 \u0430\u043a\u0442\u0438\u0432\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. Dagster \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u0437\u0430\u0442\u0435\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u043c \u043c\u0435\u0441\u0442\u0435. <\/p>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0435\u0434\u0438\u043d\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0438\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 Dagster \u043c\u043e\u0436\u0435\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u043e\u0432\u0430\u0442\u044c Pandas, Spark, SQL \u0438 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c Python. Dagster \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 full-stack data scientist\u2019\u043e\u0432. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Dagster \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0430\u0448\u0438 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0431\u043e\u043b\u0435\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c\u0438, \u0430 \u0432\u0430\u0448\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u2014 \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u043c\u0438. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Dagster \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435.<\/p>\n<h3>301. \u0420\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Django \u0432 2021<\/h3>\n<ul>\n<li>\n<p>\u0413\u043e\u0441\u0442\u0438: \u0423\u0438\u043b\u043b \u0412\u0438\u043d\u0441\u0435\u043d\u0442, <a href=\"https:\/\/wsvincent.com\">\u0432\u0435\u0431-\u0441\u0430\u0439\u0442<\/a> | \u041a\u0430\u0440\u043b\u0442\u043e\u043d \u0413\u0438\u0431\u0441\u043e\u043d <a href=\"https:\/\/twitter.com\/carltongibson\">@carltongibson<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0430\u043a\u0435\u0442: bleach \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0441\u0441\u044b\u043b\u043e\u043a \u0432 HTML \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u0435\u043b\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430.<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/bleach\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/mozilla\/bleach\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/mozilla\/bleach\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/301\/deploying-and-running-django-web-apps-in-2021\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2e3\/241\/0c0\/2e32410c0679b776a3cbab89fb0b8c5d.png\" data-width=\"1200\"\/><figcaption><\/figcaption><\/figure>\n<p>Bleach \u2014 \u044d\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 HTML \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u0435\u043b\u044b\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u043e\u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b. Bleach \u043c\u043e\u0436\u0435\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u043b\u0438\u043d\u043a\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440 urlize \u043e\u0442 Django, \u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b rel, \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0441\u0441\u044b\u043b\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432 \u0442\u0435\u043a\u0441\u0442\u0435. \u041f\u0430\u043a\u0435\u0442 \u043e\u0431\u0435\u0437\u0432\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u0438\u0437 \u043d\u0435\u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u044b\u0433\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u0440\u0443\u0447\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0441\u0430\u0439\u0442\u0430 \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u0449\u0435\u0439, \u0432\u044b, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u0441\u044c \u043a \u0447\u0438\u0441\u043b\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/p>\n<h3>299. \u041b\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0432 \u0443\u043f\u0440\u044f\u0436\u043a\u0435<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0421\u0430\u0439\u043c\u043e\u043d \u0423\u0438\u043b\u043b\u0438\u0441\u043e\u043d <a href=\"https:\/\/twitter.com\/simonw\">@simonw<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: flynt \u2014 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/flynt\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/ikamensh\/flynt\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/ikamensh\/flynt\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/299\/personal-search-engine-with-datasette-and-dogsheep\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<p>flynt \u2014 \u044d\u0442\u043e CLI \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0438\u0437 &#171;%-formatted&#187; \u0438 .format(&#8230;) \u0432 f-\u0441\u0442\u0440\u043e\u043a\u0438 Python 3.6+. \u0418\u0441\u043f\u044b\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u044b \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u043a\u0443\u0440\u0441\u0430\u0445:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/data-scientist-pro?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_dspr_291221&amp;utm_term=conc\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Data Scientist<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/python-fullstack-web-developer?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_fpw_291221&amp;utm_term=conc\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Fullstack-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 Python<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"229\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e50\/9ec\/995\/e509ec9959902909ed2b2b821713ea1e.png\" data-width=\"1000\"\/><figcaption><\/figcaption><\/figure>\n<p><a href=\"https:\/\/skillfactory.ru\/catalogue?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=sf_allcourses_291221&amp;utm_term=conc\">\u0423\u0437\u043d\u0430\u0439\u0442\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438<\/a> \u0430\u043a\u0446\u0438\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>\u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u0438 \u0438 \u043a\u0443\u0440\u0441\u044b<\/summary>\n<div class=\"spoiler__content\">\n<p><strong>Data Science \u0438 Machine Learning<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/data-scientist-pro?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_dspr_291221&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Data Scientist<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/data-analyst-pro?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=analytics_dapr_291221&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Data Analyst<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/matematika-dlya-data-science#syllabus?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_mat_291221&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u00ab\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0434\u043b\u044f Data Science\u00bb<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/matematika-i-machine-learning-dlya-data-science?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_matml_291221&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u00ab\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0438 Machine Learning \u0434\u043b\u044f Data Science\u00bb<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/data-engineer?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_dea_291221&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u043f\u043e Data Engineering<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/machine-learning-i-deep-learning?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_mldl_291221&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u00abMachine Learning \u0438 Deep Learning\u00bb<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/machine-learning?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_ml_291221&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u043f\u043e Machine Learning<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>Python, \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/python-fullstack-web-developer?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_fpw_291221&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Fullstack-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 Python<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/python-for-web-developers?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_pws_291221&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u00abPython \u0434\u043b\u044f \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u00bb<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/frontend-razrabotchik?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_fr_291221&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Frontend-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/webdev?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_webdev_291221&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f \u0412\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/ios-razrabotchik-s-nulya?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_ios_291221&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f iOS-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/android-razrabotchik?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_andr_291221&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Android-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>Java \u0438 C#<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/java-razrabotchik?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_java_291221&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/java-qa-engineer-testirovshik-po?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_qaja_291221&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f QA-\u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u043d\u0430 JAVA<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/c-sharp-razrabotchik?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_cdev_291221&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f C#-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/game-razrabotchik-na-unity-i-c-sharp?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_gamedev_291221&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0433\u0440 \u043d\u0430 Unity<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041e\u0442 \u043e\u0441\u043d\u043e\u0432 \u2014 \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0443<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/algoritmy-i-struktury-dannyh?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_algo_291221&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u00ab\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/c-plus-plus-razrabotchik?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_cplus_291221&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f C++ \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/cyber-security-etichnij-haker?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_hacker_291221&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f \u042d\u0442\u0438\u0447\u043d\u044b\u0439 \u0445\u0430\u043a\u0435\u0440<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0410 \u0442\u0430\u043a\u0436\u0435<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/devops-ingineer?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_devops_291221&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u043f\u043e DevOps<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/catalogue?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=sf_allcourses_291221&amp;utm_term=cat\">\u0412\u0441\u0435 \u043a\u0443\u0440\u0441\u044b<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/598647\/\"> https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/598647\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\" class=\"article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430 \u041a\u0414\u041f\u0412 \u0432 \u0433\u043e\u0441\u0442\u044f\u0445 \u0443 TalkPython \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u0413\u0432\u0438\u0434\u043e \u0432\u0430\u043d \u0420\u043e\u0441\u0441\u0443\u043c\u0430 \u2014 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044f Python, \u041c\u0430\u0440\u043a\u0430 \u0428\u0435\u043d\u043d\u043e\u043d\u0430, \u043f\u043b\u0430\u043d \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f Python \u0432 5 \u0440\u0430\u0437 \u0437\u0430 4 \u0433\u043e\u0434\u0430 \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0430\u0432\u0442\u043e\u0440\u0430 \u043f\u043e\u0434\u043a\u0430\u0441\u0442\u0430. \u0410 \u043c\u044b \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u043e\u0439 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 Python, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0448\u043b\u0430 \u0440\u0435\u0447\u044c \u0432 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0445 \u0437\u0430 \u0443\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0433\u043e\u0434.<\/p>\n<hr\/>\n<h2>346. Sumy \u2014 \u0440\u0435\u0437\u044e\u043c\u0435 HTML<\/h2>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0410\u043d\u0442\u043e\u043d\u0438\u043e \u0410\u043d\u0434\u0440\u0430\u0434\u0435 <a href=\"https:\/\/twitter.com\/AntonioAndrade\">@AntonioAndrade<\/a> | <a href=\"https:\/\/www.linkedin.com\/in\/antonioxandrade\/\">LinkedIn<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 #1: sumy \u2014 \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0437\u044e\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 HTML-\u0441\u0442\u0440\u0430\u043d\u0438\u0446<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/sumy\">PyPi<\/a> | <a href=\"https:\/\/github.com\/miso-belica\/sumy\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/miso-belica\/sumy\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/346\/20-recommended-packages-in-review\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u043e\u0441\u0442\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u043b\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u044e\u043c\u0435 \u0438\u0437 HTML-\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432. \u041f\u0430\u043a\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043e\u0446\u0435\u043d\u043a\u0438 \u0434\u043b\u044f \u0440\u0435\u0437\u044e\u043c\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432. \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u042f \u0442\u0430\u043a\u0436\u0435 \u0432\u0435\u0434\u0443 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 #2: gTTS \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Python \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 CLI \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 API \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0440\u0435\u0447\u044c \u043e\u0442 Google Translate.<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/gTTS\">PyPi<\/a> | <a href=\"http:\/\/gtts.readthedocs.org\/\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/pndurette\/gTTS\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/346\/20-recommended-packages-in-review\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>gTTS (Google Text-to-Speech), \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Python \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 CLI \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 API \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0440\u0435\u0447\u044c Google Translate. \u0417\u0430\u043f\u0438\u0441\u044c \u043e\u0437\u0432\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 mp3 \u0432 \u0444\u0430\u0439\u043b, \u0444\u0430\u0439\u043b\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 (bytestring) \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0441\u043e \u0437\u0432\u0443\u043a\u043e\u043c \u0438\u043b\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 stdout. \u0418\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0439\u0442\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 Google Translate TTS, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0438\u0445 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435.<\/p>\n<h3>345. 10 \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0414\u0436\u0435\u0439 \u041c\u0438\u043b\u043b\u0435\u0440 <a href=\"https:\/\/twitter.com\/kjaymiller\">@kjaymiller<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 #1: black \u2014 \u0431\u0435\u0441\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043d\u043e\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Python<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/black\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/psf\/black\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/psf\/black\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/345\/10-tips-and-tools-for-developer-productivity\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>Black \u2014 \u044d\u0442\u043e \u0431\u0435\u0441\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442\u0442\u0435\u0440 \u043a\u043e\u0434\u0430 Python. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0435\u0433\u043e, \u0432\u044b \u0441\u043e\u0433\u043b\u0430\u0448\u0430\u0435\u0442\u0435\u0441\u044c \u0443\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u043c\u0435\u043b\u043e\u0447\u0430\u043c\u0438 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412\u0437\u0430\u043c\u0435\u043d Black \u0434\u0430\u0451\u0442 \u0432\u0430\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0437\u043c \u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u0443 \u043e\u0442 \u0432\u043e\u0440\u0447\u0430\u043d\u0438\u044f pycodestyle. \u0412\u044b \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u0435 \u0432\u0440\u0435\u043c\u044f \u0438 \u0434\u0443\u0448\u0435\u0432\u043d\u044b\u0435 \u0441\u0438\u043b\u044b.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 #2: rumps \u2014 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f macOS Python Statusbar<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/rumps\">PyPi<\/a> | <a href=\"https:\/\/github.com\/jaredks\/rumps\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/jaredks\/rumps\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/345\/10-tips-and-tools-for-developer-productivity\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>rumps (Ridiculously Uncomplicated macOS Python Statusbar) \u043c\u043e\u0436\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 PyObjC \u043d\u0435 \u043d\u0443\u0436\u0435\u043d! rumps \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0443\u0436\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043c\u0435\u043d\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430.<\/p>\n<h3>344. SQLAlchemy 2.0<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u041c\u0430\u0439\u043a \u0411\u0435\u0439\u0435\u0440 <a href=\"https:\/\/twitter.com\/zzzeek\">@zzzeek<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: nplusone \u2014 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 N+1 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/nplusone\">PyPi<\/a> | <a href=\"https:\/\/github.com\/jmcarp\/nplusone\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/jmcarp\/nplusone\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/344\/sqlalchemy-2.0\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<p>nplusone \u2014 \u044d\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b n+1 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u041e\u0420\u041c \u043d\u0430 Python, \u0432\u043a\u043b\u044e\u0447\u0430\u044f SQLAlchemy, Peewee \u0438 \u041e\u0420\u041c Django.<\/p>\n<h3>343. \u0414\u0435\u043b\u0430\u0439\u0442\u0435 \u0432\u0441\u0451 \u0432 Excel, \u043f\u043e\u043b\u0443\u0447\u0430\u0439\u0442\u0435 \u043a\u043e\u0434 Python \u0434\u043b\u044f \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Mito<\/h3>\n<p>\u0413\u043e\u0441\u0442\u0438: \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438 (\u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0432 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0438\u043c\u0451\u043d \u0438 \u0441\u0441\u044b\u043b\u043e\u043a)<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: Pandas Profiling \u2014 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0440\u0435\u0439\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 Pandas<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/pandas-profiling\/\">PyPi<\/a> | <a href=\"https:\/\/pandas-profiling.github.io\/pandas-profiling\/\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/pandas-profiling\/pandas-profiling\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/343\/do-excel-things-get-notebook-python-code-with-mito\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f pandas DataFrame. \u0424\u0443\u043d\u043a\u0446\u0438\u044f pandas df.describe() \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u0430, \u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0432\u0430\u0442\u0430 \u0434\u043b\u044f \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0433\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. pandas_profiling \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 pandas DataFrame \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e df.profile_report(), \u0447\u0442\u043e\u0431\u044b \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u044b\u0441\u0442\u0440\u043e. \u042f \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0421\u043f\u0430\u0441\u0438\u0431\u043e, \u0447\u0442\u043e \u043e\u043d\u0430 \u0435\u0441\u0442\u044c!<\/p>\n<h3>342. Python \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u0437\u0434\u0430\u043d\u0438\u0439<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0413\u0438 \u0422\u0430\u043b\u0430\u0440\u0438\u043a\u043e, \u0435\u0433\u043e <a href=\"https:\/\/github.com\/gtalarico\/gtalarico\">GitHub<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: pythonic \u2014 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/pythonic\">PyPi<\/a> | <a href=\"https:\/\/github.com\/hANSIc99\/Pythonic\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/hANSIc99\/Pythonic\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/342\/python-in-architecture-as-in-actual-buildings\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>Pythonic \u2014 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439.<\/p>\n<h3>341. 25 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 Pandas, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u043d\u0435 \u0437\u043d\u0430\u043b\u0438<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0411\u0435\u043a\u0441 \u0422\u0443\u0439\u0447\u0438\u0435\u0432, <a href=\"https:\/\/www.linkedin.com\/in\/bextuychiev\/\">LinkedIn<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: umap-learn \u2014 Uniform Manifold Approximation and Projection<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/umap-learn\">PyPi<\/a> | <a href=\"https:\/\/umap-learn.readthedocs.io\/en\/latest\/\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/lmcinnes\/umap\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/341\/25-pandas-functions-you-didn-t-know-existed\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0438\u0449\u0435\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0431\u043b\u0438\u0437\u043a\u0443\u044e \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044e \u043d\u0438\u0437\u043a\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438? Uniform Manifold Approximation and Projection (UMAP) \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u0430\u043a t-SNE, \u0430 \u0435\u0449\u0451 \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h3>340. Pyjion \u2014 \u0432\u0440\u0435\u043c\u044f JIT \u043f\u0440\u0438\u0448\u043b\u043e \u0434\u043b\u044f Python?<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u042d\u043d\u0442\u043e\u043d\u0438 \u0428\u043e\u0443 <a href=\"https:\/\/twitter.com\/anthonypjshaw\">@anthonypjshaw<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 1: tortoise ORM \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 async ORM \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/tortoise-orm\/\">PyPi<\/a> | <a href=\"https:\/\/tortoise.github.io\/\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/tortoise\/tortoise-orm\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/340\/time-to-jit-your-python-with-pyjion\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>Tortoise ORM \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 asyncio ORM (Object Relational Mapper), \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0439 Django. Tortoise ORM \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0442\u0435\u043e\u0440\u0438\u0438 \u0438 \u0441 \u0432\u043e\u0441\u0445\u0438\u0449\u0451\u043d\u043d\u043e\u0439 \u043e\u0433\u043b\u044f\u0434\u043a\u043e\u0439 \u043d\u0430 Django ORM. \u041f\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u0437\u0430\u043c\u044b\u0441\u043b\u0443 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438, \u043d\u043e \u0441 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 2: beanie \u2014 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 ODM \u0434\u043b\u044f MongoDB<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/Beanie\/\">PyPi<\/a> | <a href=\"https:\/\/roman-right.github.io\/beanie\/\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/roman-right\/beanie\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/340\/time-to-jit-your-python-with-pyjion\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>Beanie \u2014 \u044d\u0442\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043d\u044b\u0439 \u043c\u0430\u043f\u043f\u0435\u0440 (ODM) \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python \u0434\u043b\u044f MongoDB, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Motor \u0438 Pydantic. \u0412 Beanie \u043a\u0430\u0436\u0434\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u044d\u0442\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0435\u0439. \u041f\u043e\u043c\u0438\u043c\u043e \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 Beanie \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 3: hathi \u2014 \u0441\u043a\u0430\u043d\u0435\u0440 \u0445\u043e\u0441\u0442\u043e\u0432 SQL \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0430\u0442\u0430\u043a \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044e<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/hathi\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/tonybaloney\/hathi\">\u0421\u0430\u0439\u0442<\/a> | <a href=\"https:\/\/github.com\/tonybaloney\/hathi\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/340\/\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u043a\u0430\u043d\u0435\u0440 \u0445\u043e\u0441\u0442\u043e\u0432 SQL \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0430\u0442\u0430\u043a \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044e. \u041f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c (filter_pass.py) \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0445 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h3>339. \u0413\u0432\u0438\u0434\u043e \u0432\u0430\u043d \u0420\u043e\u0441\u0441\u0443\u043c \u0438 \u041c\u0430\u0440\u043a \u0428\u0435\u043d\u043d\u043e\u043d: \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u043c Python<\/h3>\n<p>\u0413\u043e\u0441\u0442\u0438: \u0413\u0432\u0438\u0434\u043e \u0432\u0430\u043d \u0420\u043e\u0441\u0441\u0443\u043c, <a href=\"https:\/\/twitter.com\/gvanrossum\">@gvanrossum<\/a> | \u041c\u0430\u0440\u043a \u0428\u0435\u043d\u043d\u043e\u043d, <a href=\"https:\/\/www.linkedin.com\/in\/mark-shannon-bb459551\/\">LinkedIn<\/a><\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u044d\u043f\u0438\u0437\u043e\u0434\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430, \u043d\u043e \u043c\u044b \u0446\u0435\u043d\u0438\u043c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c Python \u0431\u044b\u0441\u0442\u0440\u0435\u0435 (\u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c).<\/p>\n<p>\u0421\u0441\u044b\u043b\u043a\u0430 <a href=\"https:\/\/talkpython.fm\/episodes\/show\/339\/making-python-faster-with-guido-and-mark\">\u043d\u0430 \u044d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<h3>338. \u041f\u0430\u043a\u0435\u0442 cibuildwheel \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438 scikit-HEP<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: Henry Schreiner <a href=\"https:\/\/twitter.com\/HenrySchreiner3\">@HenrySchreiner3<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: plotext \u2014 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u0440\u044f\u043c\u043e \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/plotext\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/piccolomo\/plotext\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/piccolomo\/plotext\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/338\/using-cibuildwheel-to-manage-the-scikit-hep-packages\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u041b\u044e\u0431\u0438\u0442\u0435\u043b\u0438 CLI, plotext \u0441\u0442\u0440\u043e\u0438\u0442 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u0440\u044f\u043c\u043e \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435, \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 matplotlib.<\/p>\n<h3>337. Kedro \u2014 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b Data Science<\/h3>\n<p>\u0413\u043e\u0441\u0442\u0438: \u0423\u044d\u043b\u043e\u043d \u0423\u043e\u043a\u0435\u0440 <a href=\"https:\/\/twitter.com\/_WaylonWalker\">@_WaylonWalker<\/a> | Yetunde Dada <a href=\"https:\/\/twitter.com\/yetudada\">@yetudada<\/a> | Ivan Danov <a href=\"https:\/\/twitter.com\/ivandanov\">@ivandanov<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 #1: fsspec \u2014 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0434\u043b\u044f Python<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/fsspec\/\">PyPi<\/a> | <a href=\"https:\/\/filesystem-spec.readthedocs.io\/en\/latest\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/intake\/filesystem_spec\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/337\/kedro-for-maintainable-data-science\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<p>Filesystem Spec (fsspec) \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0438\u0442\u043e\u043d-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445, \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u0431\u0430\u0439\u0442-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449. \u041a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c \u0441 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u0430\u043a \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c!<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 2: dynaconf \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c\u0438<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/dynaconf\/\">PyPi<\/a> | <a href=\"https:\/\/www.dynaconf.com\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/rochacbruno\/dynaconf\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/337\/\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u041b\u0435\u043d\u0438\u0432\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043d\u0430 \u0441\u0442\u0435\u0440\u043e\u0438\u0434\u0430\u0445!<\/p>\n<h3>336. \u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043c\u044b\u0441\u043b\u0430\u0445 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0423\u0438\u043b\u043b \u041c\u0430\u043a\u0413\u0443\u0433\u0430\u043d <a href=\"https:\/\/twitter.com\/willmcgugan\">@willmcgugan<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: objexplore \u2014 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u043a\u0442\u043e\u0432 Python<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/objexplore\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/kylepollina\/objexplore\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/kylepollina\/objexplore\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/336\/terminal-magic-with-rich-and-textual\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>Objexplore \u2014 \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Python \u0434\u043b\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0435\u0433\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0438\u043b\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0438\u043b\u0438 \u0447\u0435\u0433\u043e \u0443\u0433\u043e\u0434\u043d\u043e!<\/p>\n<h3>335. \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0433\u0435\u043d\u043e\u0432 \u043d\u0430 Python<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0414\u044d\u0432\u0438\u0434 \u0411\u043e\u0440\u043d <a href=\"https:\/\/twitter.com\/Hypostulate\">@Hypostulate<\/a> | <a href=\"https:\/\/beamtx.com\">Beam Therapeutics<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 1: AWS Cloud Development Kit (AWS CDK)<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/aws-cdk.core\/\">PyPi<\/a> | <a href=\"https:\/\/docs.aws.amazon.com\/cdk\/latest\/guide\/work-with-cdk-python.html\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/aws\/aws-cdk\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/335\/gene-editing-with-python\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>AWS Cloud Development Kit (AWS CDK) \u2014 \u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0432 \u043a\u043e\u0434\u0435 \u0438 \u0435\u0451 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 AWS CloudFormation.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 # 2: luigi \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c + \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447 + \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/p>\n<p><a href=\"https:\/\/pypi.org\/project\/luigi\/\">PyPi<\/a> | <a href=\"https:\/\/github.com\/spotify\/luigi\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/spotify\/luigi\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/335\/gene-editing-with-python\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>Luigi \u2014 \u044d\u0442\u043e \u043f\u0430\u043a\u0435\u0442 \u0434\u043b\u044f Python (\u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 3.6\u20133.9), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u044b \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0445 \u0442\u0430\u0441\u043a\u043e\u0432. \u0412 \u043d\u0451\u043c \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0431\u043e\u0435\u0432, \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.<\/p>\n<h3>334. \u041f\u043b\u0430\u043d\u0435\u0442\u0430\u0440\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 Microsoft<\/h3>\n<p>\u0413\u043e\u0441\u0442\u0438: \u0420\u043e\u0431 \u042d\u043c\u0430\u043d\u0443\u044d\u043b\u044c <a href=\"https:\/\/twitter.com\/lossyrob\">@lossyrob<\/a> | Tom Augspurger <a href=\"https:\/\/twitter.com\/TomAugspurger\">@TomAugspurger<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: seaborn \u2014 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/seaborn\/\">PyPi<\/a> | <a href=\"https:\/\/seaborn.pydata.org\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/cupy\/cupy\/\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/334\/microsoft-planetary-computer\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>Seaborn \u2014 \u044d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 matplotlib \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python. \u041e\u043d\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432. \u0415\u0441\u043b\u0438 matplotlib \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Android, \u0442\u043e seaborn \u2014 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 iPhone!<\/p>\n<h3>333. \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 Data Science \u0432 2021 \u0433\u043e\u0434\u0443<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u0421\u0442\u044d\u043d \u0417\u0430\u0439\u0431\u0435\u0440\u0442 <a href=\"https:\/\/twitter.com\/seibert\">@seibert<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: cupy \u2014 NumPy \u0438 SciPy \u0434\u043b\u044f GPU<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/cupy\/\">PyPi<\/a> | <a href=\"https:\/\/cupy.dev\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/cupy\/cupy\/\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/333\/state-of-data-science-in-2021\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>CuPy \u2014 \u044d\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0441 GPU-\u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python. CuPy \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 CUDA Toolkit, \u0432\u043a\u043b\u044e\u0447\u0430\u044f cuBLAS, cuRAND, cuSOLVER, cuSPARSE, cuFFT, cuDNN \u0438 NCCL, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 GPU \u043f\u043e \u043f\u043e\u043b\u043d\u043e\u0439. \u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e NumPy \u0438 SciPy \u043d\u0430 \u0441\u0442\u0435\u0440\u043e\u0438\u0434\u0430\u0445!<\/p>\n<h3>332. \u041d\u0430\u0434\u0451\u0436\u043d\u044b\u0439 Python<\/h3>\n<p>\u0413\u043e\u0441\u0442\u044c: \u041f\u0430\u0442\u0440\u0438\u043a \u0412\u0438\u0430\u0444\u043e\u0440\u0435 <a href=\"https:\/\/twitter.com\/PatViaforever\">@PatViaforever<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: stevedore \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Python<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pypi.org\/project\/stevedore\/\">PyPi<\/a> | <a href=\"https:\/\/docs.openstack.org\/stevedore\/latest\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/opendev.org\/openstack\/stevedore\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/332\/robust-python\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<\/li>\n<\/ul>\n<p>Python \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043a\u043e\u0434\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0432\u0430\u043c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0443\u0442\u0451\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 (\u00ab\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432\u00bb) \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u044e\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u0438 \u044d\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 import \u0438\u043b\u0438 importlib. Stevedore \u0438\u0437\u0431\u0435\u0433\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0435\u0449\u0451 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u0441\u0442\u0440\u043e\u0438\u0442 \u0435\u0433\u043e \u043f\u043e\u0432\u0435\u0440\u0445 \u0442\u043e\u0447\u0435\u043a \u0432\u0445\u043e\u0434\u0430 setuptools. \u041e\u0434\u043d\u0430\u043a\u043e \u043a\u043e\u0434 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u0432\u0445\u043e\u0434\u0430 \u0438\u043c\u0435\u0435\u0442 \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 stevedore \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043b\u0430\u0441\u0441\u044b \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0431\u0449\u0438\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439.<\/p>\n<h3>330. \u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 Apache Airflow<\/h3>\n<p>\u0413\u043e\u0441\u0442\u0438: \u042f\u0440\u0435\u043a \u041f\u043e\u0442\u044e\u043a <a href=\"https:\/\/www.linkedin.com\/in\/jarekpotiuk\/\">LinkedIn<\/a> | \u041d\u0430\u0439\u043a \u041a\u0430\u043a\u0441\u0438\u043b\u044c <a href=\"https:\/\/twitter.com\/kaxil\">@kaxil<\/a> | \u041b\u0435\u0430 \u041a\u043e\u0443\u043b <a href=\"https:\/\/twitter.com\/leahecole\">@leahecole<\/a><\/p>\n<p>\u041f\u0430\u043a\u0435\u0442: Apache Airflow \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<p><a href=\"https:\/\/pypi.org\/project\/apache-airflow\/\">PyPi<\/a> | <a href=\"https:\/\/airflow.apache.org\/\">\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> | <a href=\"https:\/\/github.com\/apache\/airflow\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a> | <a href=\"https:\/\/talkpython.fm\/episodes\/show\/330\/apache-airflow-open-source-workflow-with-python\">\u042d\u043f\u0438\u0437\u043e\u0434<\/a><\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>Airflow \u2014 \u044d\u0442\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b. Airflow \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b \u0438 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e. \u041a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 DAG \u0441\u0445\u043e\u0436\u0430 \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u043a \u0434\u0440\u0443\u0433\u043e\u043c\u0443, \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0441\u0442\u044c. \u0421\u0440\u0435\u0434\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u2014 Luigi, Oozie \u0438 Azkaban.<\/p>\n<p>Airflow \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u043e \u0435\u0441\u0442\u044c \u043c\u043d\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0438\u0434\u0435\u0430\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u044b\u043c\u0438 (\u0442. \u0435. \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f) \u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043e\u0431\u044a\u0451\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043a \u0434\u0440\u0443\u0433\u043e\u0439 (\u0445\u043e\u0442\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Xcom \u0432 Airflow). \u041f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430 \u0437\u0430\u0434\u0430\u0447, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0431\u044a\u0451\u043c\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u043b\u0443\u0447\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u2014 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u043c\u043e\u0447\u0438\u0439 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0441\u043b\u0443\u0436\u0431\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u043e\u0434\u0430.<\/p>\n<h3>328. Piccolo \u2014 \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f ORM \u0434\u043b\u044f Python (\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e)<\/h3>\n<p>\u0413\u043e\u0441\u0442<\/p>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-327157","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/327157","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=327157"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/327157\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=327157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=327157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=327157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}