Подразумеваемые неймспейсы или неявные пакеты.
Этот функционал добавлен в Python 3.3
Что он означает?
Ранее, до 3.3 пакетами считались лишь директории, в которых есть файл __init__.py.
Этот файл одновременно являлся свидетельством того, что директория это Python-пакет, и служил "телом" этого пакета. То есть местом, где можно написать код, как это делается внутри модуля. Этот код исполняется в момент импорта пакета, так что его принято называть "код инициализации пакета".
Начиная с версии 3.3 Любая директория считается пакетом и Python будет пытаться использовать любую директорию для импорта.
Конечно, не любую в файловой системе, а только те что находятся в sys.path.
Это значит, что теперь __init__.py нужно делать только если:
🔸 вам требуется создать код инициализации пакета
🔸 нужна совместимость со старыми версиями Python
На мой взгляд это немного упрощает разработку, делает её чище, но с другой стороны убивает некоторую однозначность происходящего.
Например, я создал репозиторий со своей библиотекой и рядом положил код примеров или тестов.
repo_name/
my_library/
__init__.py
main.py
examples/
exam1.py
exam2.py
В этом репозитории пакетом является только my_library, остальные директории это не пакеты, это просто дополнительный код в файлах. Директория examples не добавлена в sys.path, в ней нет рабочих модулей. Но если она лежит рядом с my_library, то Python вполне сможет импортнуть из неё модули, так как посчитает что examples это валидный пакет.
Конечно, пример несколько надуманный. Никто не будет добавлять корень репозитория в sys.path. Но, я думаю, суть ясна. Иногда директория это просто директория а не пакет!
#basic#pep
#Asynchronous#JavaScript
🛠
Asynchronous Programming in JavaScript
Asynchronous programming is often intimidating, it’s not how we normally consider writing code. This course shows how promises and async/await can help simplify async programming.
Asynchronous programming is often confusing when first learning JavaScript. In this course, Asynchronous Programming in JavaScript,, you’ll gain the ability to handle async programming in JavaScript. First, you’ll explore consuming promises. Next, you’ll discover creating your own promises. Finally, you’ll learn how to use async/await to handle asynchronous programming. When you’re finished with this course, you’ll have the skills and knowledge of JavaScript promises needed to handle asynchronous code.
📅 1/2023
🔗Link
-----
Main channel: @repo_science
Coupons: @freecoupons_reposcience
-----
https://medium.com/@seashorepartners/python-3-6-has-it-redefined-web-development-233165023a36
Python 3.6 — Has it redefined web development?
#Python 3.6 is the biggest ever release by Python, and it starts its enhancements from where Python 3.5 left. Released in December 2016, the world is going gaga over the new release, as the #enhancements help improve speed and performance of your website without compromising on the quality or, the way you have construed your website.
#Asynchronous Functions
https://docs.python.org/3/library/asyncio.html
#asyncio
#Asynchronous programming is more complex than classical “#sequential” programming: see the Develop with asyncio page which lists common traps and explains how to avoid them. Enable the debug mode during development to detect common issues.
https://github.com/szastupov/aiotg
aiotg
https://travis-ci.org/szastupov/aiotg.svg?branch=master
#Asynchronous#Python#API for building Telegram #bots, featuring:
Easy and declarative API
Hassle-free setup - no need for SSL certificates or static IP
Built-in support for analytics via botan.io
Automatic handling of Telegram API throttling or timeouts
http://sahandsaba.com/understanding-asyncio-node-js-python-3-4.html
I spent this summer working on a #web_platform running on #Node.js. This was the first time I worked full-time with Node.js and one thing that became quite apparent after a few weeks of working with it was that many developers, including myself at the time, lack clarify on exactly how the #asynchronous features of Node.js work, and how they are implemented at a lower level. Since I believe the only way to use a platform efficiently is to have a clear understanding of how it works, I decided to dig deeper. This curiosity also made me start playing around with implementing similar asynchronous features in other languages, in particular Python, it being my go-to language for experimenting and learning. This led me to Python 3.4's asynchronous IO library asyncio in particular, which intersected with my already existing interest in coroutines (see my post on combinatorial generation using coroutines in Python.) This post is about exploring the questions and answers that came up while I was learning more about this subject, which I hope can help clarify and answer some questions for others as well.
http://krondo.com/an-introduction-to-asynchronous-programming-and-twisted/
Twisted Introduction
This multi-part series introduces #Asynchronous Programming and the Twisted networking framework.
#Twisted is an event-driven networking engine written in #Python and licensed under the open source MIT license. Twisted runs on Python 2 and an ever growing subset also works with Python 3.
#network#learn
#signal — Set handlers for #asynchronous events
This module provides mechanisms to use signal handlers in Python.
The signal.signal() function allows to define custom handlers to be executed when a signal is received. A small number of default handlers are installed: #SIGPIPE is ignored (so write errors on pipes and sockets can be reported as ordinary Python exceptions) and #SIGINT is translated into a KeyboardInterrupt exception.
#Asyncio
https://docs.python.org/3.4/library/signal.html
https://pypi.python.org/pypi/uvloop
#uvloop is a fast, drop-in replacement of the built-in #asyncio event loop. uvloop is released under the MIT license.
uvloop and asyncio, combined with the power of async/await in Python 3.5, makes it easier than ever to write high-performance #networking code in Python.
uvloop makes asyncio fast. In fact, it is at least 2x faster than #nodejs, #gevent, as well as any other Python #asynchronous framework. The performance of uvloop-based asyncio is close to that of Go programs.
https://vorpus.org/blog/some-thoughts-on-asynchronous-api-design-in-a-post-asyncawait-world/#websocket-servers
I've recently been exploring the exciting new world of #asynchronous I/O libraries in Python 3 – specifically asyncio and curio. These two libraries make some different design choices.
Example 1: #asyncio, with callbacks
Example 2: #curio, with #async/#await
Example 3: asyncio, with async/await
#websockets