python
æè¿ä½åº¦ãç´¹ä»ãã¦ãã Niquests ã«è´å½çãªãã°ããããåé¡ã®å¤§ããã®å²ã«ã¢ãã¦ã³ã¹ãå°ããã®ã§è§£èª¬ãã¦ããã¾ãã ãªãããã®ãã°ã¯ urllib3-future 2.14.906 (2025-11-06) ããçºçãã2.15.902 (2026-02-03) ã§ä¿®æ£ããã¾ããã Niquests ã使ã£ã¦ãâ¦
functools.cacheãã¡ã½ããã«ä½¿ã - methaneã®ããã° ã§ç´¹ä»ãããæ®éã« functools.cache ãã¡ã½ããã«ä½¿ãã¨ã¡ã¢ãªãªã¼ã¯ã«ãªã£ã¦ãã¾ãåé¡ã§ãããåå¹´ã¶ã2åç®ééããã®ã§åçºé²æ¢ããªãã¨ãªã¨æã£ãããã§ã«éçãã§ãã¯ãããã¾ããã docs.astral.â¦
以åã®è¨äºã§ãfunctools.cache ããã®ã¾ã¾ã¡ã½ããã«ä½¿ãã¨ã¡ã¢ãªãªã¼ã¯ã«ãªããã¨ã¨ããã®åé¿æ¹æ³ãããã¤ãç´¹ä»ãã¾ããã æå¾ã«ç´¹ä»ãã¦ããæ¹æ³ãããã§ãã from functools import cache class A: def __init__(self, x): self._x = x self.f = cachâ¦
æ¦è¦ ç§ã¯ãuWSGIã使ãæã¯åºæ¬çã«ãã«ãããã»ã¹ãã·ã³ã°ã«ã¹ã¬ããã®è¨å®ãæ¨å¥¨ãã¾ããããããã¬ã¹ãã³ã¹ã¿ã¤ã ãã¨ãã©ãé ããªãå¤é¨APIå¼ã³åºããå«ãå ´åãªã©ãã¡ã¢ãªä½¿ç¨éãthundering herdåé¡ãèæ ®ãã¤ã¤å¤ãã®ä¸¦åæ°ãå¿ è¦ãªå ´åã«ãã«ãã¹â¦
é廿°åã®è¨äºã§ Requests ã httpx ã®åé¡ç¹ãç´°ããæåã«ã¤ãã¦è§¦ãã¦ãã¾ããããããã®ã©ã¤ãã©ãªã®ä»£ããã«ãªãããä¸ã¤ã®æåãªHTTPã¯ã©ã¤ã¢ã³ãã¨ã㦠Niquests ãç´¹ä»ãã¾ãã Niquestsã¯Requestsã®forkã§ãé«ãäºææ§ãä¿ã¡ãªãããéåæå¦çãHâ¦
ååã®è¨äºã§httpxã®æ¤è¨ãé²ããå¾ã«ãããªæ°ã«ãªãè¨äºãè¦ãããã®ã§ç¾ç¶ã調æ»ãã¾ããã gfx.hatenablog.com çµè«ããè¨ãã¨ããã㯠httpx ã async ã§å©ç¨ããæã®åé¡ã§ãç¾ç¶ã§ã¯ã¾ã 解決ããã¦ãã¾ãããåæAPIã使ã£ã¦ããã°åé¡ããã¾ããã åâ¦
Pythonã§ä¸çªäººæ°ã®ããHTTPã¯ã©ã¤ã¢ã³ãã©ã¤ãã©ãªã¯requestsã§ãããrequestsããã®ä½ã¬ã¤ã¤ã¼ã§ããurllib3ã¯idle_timeoutã®è¨å®ãæã£ã¦ããªãã®ã§ãé·æéã¢ã¤ãã«ãç¶ããæ¥ç¶ãåå©ç¨ããæã« Connection Reset by Peer ã¨ã©ã¼ãçºçãããã¨ãããã¾â¦
functools.cache ã¯ä¾¿å©ã§ãããã¡ã½ããã«å¯¾ãã¦ä½¿ãæã«ã¯æ³¨æãå¿ è¦ã§ãã from functools import cache class A: @cache def f(self, x): return x * 2 for i in range(1000): a = A() a.f(42) print(A.f.cache_info()) # CacheInfo(hits=0, misses=1000â¦
httpx ãã³ãã¯ã·ã§ã³ãã¼ã«ããã§ä½¿ãå ´å㯠client = httpx.Client() ã㦠client.get() ãªã©ã使ãã¾ãããã³ãã¯ã·ã§ã³ãã¼ã«ãªãã§ä½¿ãå ´å㯠httpx.get() ãªã©ã使ãã¾ãã ãã® httpx.get() ã®ãããªåçºã§HTTPãªã¯ã¨ã¹ããå®è¡ããAPIã¯å®éã«ã¯å é¨â¦
ãããããã¨ãã°æ¨æºã©ã¤ãã©ãªã® concurrent.futures.ThreadPoolExecutor ã¯damonã¹ã¬ããã使ã£ã¦ãã¾ããã ãã®ããã executor.shutdown(wait=True) ã atexit ããå¼ã³åºããã¨ãã§ãã¾ãããatexitã§çµäºãããã¹ã¬ããã¯daemonã«ããã - methaneã®â¦
ãªã¹ããåãåã£ã¦ã«ã¼ãã§å¦çãã颿°ãå®è£ ããã¨ãã弿°ã®ã¿ã¤ããã³ãã« list ã§ã¯ãªãæå°ã®è¦æ±ã¨ã㦠Iterable ãæ¸ããã¨ã好ã人ããããã³ã¼ãã®å®è£ ã弿°ã«å¯¾ãã¦å¿ è¦ã¨ãã¦ããæå°è¦ä»¶(å¿ è¦å忡件)ã表ãããã ã def func(arg: Iterableâ¦
ãªã«ãã®å¦çãããã¯ã°ã©ã¦ã³ãã¹ã¬ããã§å®è¡ãã¦ãã¢ããªã±ã¼ã·ã§ã³çµäºæã«ãã®å¦çãæ¢ããããã¨ãããã¾ãã ãã¨ãã°OpenTelemetryã®ãã¬ã¼ã¹ããã°ãéä¿¡ããããã«ã¹ã¬ããã使ããã¦ãã¾ããããããã¯çµäºæã«ãããã¡ãªã³ã°ãã¦ãããã¼ã¿ãéâ¦
mysql-connector-python ã使ãã°ç°¡åãªã®ã§ããããã㦠mysqlclient ã使ãå ´åã®è©±ã§ãã ã¾ããPythonã®å ¬å¼Dockerã¤ã¡ã¼ã¸ã¯Debianãã¼ã¹ã«ãªã£ã¦ãã¾ãããDebianã§ã¯ããã©ã«ãã§ã¯apt-getã§MySQLãã¤ã³ã¹ãã¼ã«ã§ãã¾ããã (Debian sid ã§ã¯ MySQL â¦
ã¾ã PR段éãªã®ã§ peps.python.org ã§ã¯è¡¨ç¤ºããã¦ãã¾ãããDiscussionã¯ãã¡ãã§ãã PEP 781: Adding __type_checking__ constant - PEPs - Discussions on Python.org ä»ã¾ã§ãtypingã®ã¤ã³ãã¼ããé¿ããããã« from typing import TYPE_CHECKING ã®ä»£â¦
Python 3.13 ã PyMySQL ã®CIã«è¿½å ããããæ¬¡ã®ãããªã¨ã©ã¼ãçºçããã "Can't connect to MySQL server on '127.0.0.1' ([SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c:1018))" 調ã¹ã¦ã¿ãã¨â¦
github.com Python 3.12ããåç §ã«ã¦ã³ããåºå®åããImmortal Objectãå°å ¥ãããã®ã§ããããããinterned stringå ¨ã¦ãå¼·å¶çã«åºå®åç §ã«ã¦ã³ãã«ãã¦ãã¾ã£ã¦ãã¾ããã Pythonã®æååã¯immutableãªã®ã§ãçãã¦å¤§éã«åãå¤ãåºã¦ããå¯è½æ§ãããæâ¦
structlogã·ãªã¼ãºãä»åï¼ãã¶ãæçµåï¼ã¯ get_logger() ã«ã¤ãã¦ãã½ã¼ã¹ã³ã¼ãã解説ãã¦ããåã«ãã¾ãéè¦ãªæåããã >>> import structlog >>> from structlog import PrintLogger >>> def logger_factory(): ... print("creating logger") ... retâ¦
ååã¯BoundLoggerã®ã³ã³ããã¹ã管çã¨ãã°ã¡ã½ããã«ã¤ãã¦è§£èª¬ãã¾ããã methane.hatenablog.jp ä»åã¯ãã°ã¡ã½ãããå¼ã°ããå¾ã®å¦çã«ã¤ãã¦ã¿ã¦ããã¾ãã _proxy_to_logger() ã¾ãã¯ãã°ã¡ã½ãããã©ããªã£ã¦ãããã®ããããã§ãã # FilteringBouâ¦
structlogãæ¡ç¨ããå ´åãã¢ããªå´ããã°ãæ¸ãããã«ä½¿ãã¤ã³ã¹ã¿ã³ã¹ã¯BoundLoggerããããã©ããããã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ã«ãªãã¾ãããã®ã¯ã©ã¹ã¯éè¦ãªã®ã§structlogã®ããã¥ã¡ã³ãã«ããã®ã¯ã©ã¹ã®ããã®ãã¼ã¸ãããã¾ãã www.structlog.org strucâ¦
Pythonã®ããã±ã¼ã¸ã»ããã¸ã§ã¯ã管çãã¼ã«ã¯ã¾ã ä¹±ç«ç¶æ ã«ãã£ã¦ãã©ãã使ãã°ããã®ãããããªãããæ £ããpyenv+pipã使ããã¨ãã夿ããã人ããããããããªãããã®å¤æèªä½ã¯å¥ã«å¦å®ããªãããã©ããåå¿è ã«æããæã«pyenvãæããã®ã¯ããâ¦
ryeãWindowsã«ã¤ã³ã¹ãã¼ã«ããæ¹æ³ã調ã¹ã¦ã¿ã¾ããã æºå rye ãWindowsã§ä½¿ãããã«ã¯ãéçºè ã¢ã¼ãã使ããã¨ãæ¨å¥¨ããã¦ããã FAQ - Rye éçºè ã¢ã¼ããæå¹ã«ããªãã¨ã·ã³ããªãã¯ãªã³ã¯ã使ããªãã¦ã¸ã£ã³ã¯ã·ã§ã³ãã¤ã³ããã³ãã¼ã使ããããâ¦
structlogã®ããã¥ã¡ã³ããèªãã§ããã¨ã structured tracebacksã¨ãããã®ãç»å ´ããã structured logging ãè¯ããã®ãªã®ã ãããstructured tracebacksãè¯ããã®ãªã®ã ãããï¼ API Reference - structlog 24.1.0 documentation structlog.processors.â¦
Pythonã®ããã©ã«ãã®ä¾å¤ï¼ãã¬ã¼ã¹ããã¯è¡¨ç¤ºã¯ã主ã«ã¿ã¼ããã«è¡¨ç¤ºåãã«èª¿æ´ããã¦ãã¾ããï¼æ¬¡ã®Python 3.13ããã¯ã«ã©ã¼è¡¨ç¤ºã«ã対å¿ããäºå®ã§ããï¼ ã¿ã¼ããã«è¡¨ç¤ºç¨ã«ãã©ã¼ãããããããã¬ã¼ã¹ããã¯ã¯ãï¼ãã¡ããã«ã©ã¼ã使ããªããã°ï¼éæ§â¦
Pythonã§ã¢ããªã±ã¼ã·ã§ã³ã®ãã®ã³ã°ã©ã¤ãã©ãªã¨ãã¦æ¨æºã©ã¤ãã©ãªã®logging以å¤ã使ãã¨ãã¯ãloggingã使ã£ã¦ãæ¢åã®ã³ã¼ããã©ãããããèããªãã¨ãããªããã¢ããªã±ã¼ã·ã§ã³èªä½ã®ä¸èº«ãå ¨é¨ä¸æ°ã«æ¸ãæããã¨ãã¦ããä¾åã©ã¤ãã©ãªãloggingã使â¦
ä»ã¾ã§uWSGIãã·ã³ã°ã«ã¹ã¬ããããã«ãããã»ã¹ã§ä½¿ã£ã¦ããã®ã ããã©ããæã«æ¯ã¹ã¦å¤é¨ã®APIå¼ã³åºããå¢ãã¦ããã®ã§ãã«ãã¹ã¬ããåãæ¤è¨ãã¦ããã uWSGI uWSGIã§ãã«ãã¹ã¬ãããæå¹ã«ããæã¯ãåworkerã¹ã¬ãããacceptããå½¢ã§åä½ãããã¹ã¬â¦
Ryeã使ã£ã¦ããç¶æ ã§ uv venv ãããã¨ã次ã®ãããªã¨ã©ã¼ã«ãªãã¾ãã $ uv venv à Querying Python at `/Users/inada-n/.rye/shims/rye` failed with status exit status: 2: â --- stdout: â --- stderr: â error: unexpected argument found â --- pytâ¦
uvã«ã¯ã¾ã self update ã®æ©è½ãããã¾ããã Homebrewã«ã¯ãã§ã«uvã追å ããã¦é »ç¹ã«ã¢ãããã¼ãããã¦ããã®ã§ãHomebrewã¦ã¼ã¶ã¼ã¯ brew install uv ãããããã§ãã Homebrewã使ã£ã¦ãªãç°å¢ã§uvãã¤ã³ã¹ãã¼ã«ãæè»½ã«ã¢ãããã¼ãããã«ã¯ ãrye â¦
å é±ã«Ruffãéçºãã¦ããAstralãuvãçºè¡¨ãã¾ããã astral.sh uvã¯ç¾å¨ã®ã¨ããã¯venv, pip, pip-toolsã®åºæ¬çãªæ©è½ãæä¾ãã¦ãã¾ãããå°æ¥ã¯"Cargo for Python"ã«ãªããã¨ãç®æ¨ã«ãã¦ãã¾ãã ä¸è¦ããã¨ä¹±ç«ãã¦ããPythonã®ããã±ã¼ã¸ç®¡çãã¼ã«â¦
æéããªãã¦è°è«ã追ã£ã¦ããªãã£ãã®ã§ãããæ¨æºã©ã¤ãã©ãªä»¥å¤ã«ä¾åããã¹ã¯ãªãããæè»½ã«é å¸ã»å®è¡ããããã®ææ¡ã§ãã PEP 722 㨠PEP 723 ããã°ããåããè°è«ããã¦ãã¦ãå æã«PEP 723ã®æ¹ãAcceptããã¦ãã¾ããã PEPã®ãµã³ãã«ãå¼ç¨ãã¦ãâ¦
2024/02/26 è¿½è¨ 2/24ãªãªã¼ã¹ããæ¹åãããã®ã§ãä¸è¨ã®å¯¾å¿ã¯ä¸è¦ã«ãªãã¾ããã Release 20240224 · indygreg/python-build-standalone · GitHub Rework of the terminfo database on Linux distributions. ncurses now looks for the terminfo databaseâ¦