From cb8bef4670eb67e8fede8b49d1405b53b377b68a Mon Sep 17 00:00:00 2001 From: RPBot Date: Wed, 16 Sep 2026 15:00:44 +0000 Subject: [PATCH 1/3] Sync emacs-the-best-python-editor with the maintenance update of Emacs: The Best Python Editor? Co-Authored-By: Claude Opus 5 --- emacs-the-best-python-editor/PyEval/Pipfile | 2 +- .../PyEval/Pipfile.lock | 165 ++++++++++++++---- emacs-the-best-python-editor/init.el | 4 +- 3 files changed, 131 insertions(+), 40 deletions(-) diff --git a/emacs-the-best-python-editor/PyEval/Pipfile b/emacs-the-best-python-editor/PyEval/Pipfile index e2673df3bb..34fad4c220 100644 --- a/emacs-the-best-python-editor/PyEval/Pipfile +++ b/emacs-the-best-python-editor/PyEval/Pipfile @@ -11,4 +11,4 @@ black = "*" jedi = "*" [requires] -python_version = "3.6" +python_version = "3.14" diff --git a/emacs-the-best-python-editor/PyEval/Pipfile.lock b/emacs-the-best-python-editor/PyEval/Pipfile.lock index d8ecbb5866..33c149dc84 100644 --- a/emacs-the-best-python-editor/PyEval/Pipfile.lock +++ b/emacs-the-best-python-editor/PyEval/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "e797d11013c3c5d020925611f975e77aa91e751df1950a6377aae691aeeed060" + "sha256": "19330b06977ef96698964b70656d6d884a0a5b0ecfa7068a2415afc5f24117f2" }, "pipfile-spec": 6, "requires": { - "python_version": "3.6" + "python_version": "3.14" }, "sources": [ { @@ -17,70 +17,161 @@ }, "default": {}, "develop": { - "appdirs": { - "hashes": [ - "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92", - "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e" - ], - "version": "==1.4.3" - }, - "attrs": { - "hashes": [ - "sha256:69c0dbf2ed392de1cb5ec704444b08a5ef81680a61cb899dc08127123af36a79", - "sha256:f0b870f674851ecbfbbbd364d6b5cbdff9dcedbc7f3f5e18a6891057f21fe399" - ], - "version": "==19.1.0" - }, "autopep8": { "hashes": [ - "sha256:4d8eec30cc81bc5617dbf1218201d770dc35629363547f17577c61683ccfb3ee" + "sha256:89440a4f969197b69a995e4ce0661b031f455a9f776d2c5ba3dbd83466931758", + "sha256:ce8ad498672c845a0c3de2629c15b635ec2b05ef8177a6e7c91c74f3e9b51128" ], "index": "pypi", - "version": "==1.4.4" + "markers": "python_version >= '3.9'", + "version": "==2.3.2" }, "black": { "hashes": [ - "sha256:09a9dcb7c46ed496a9850b76e4e825d6049ecd38b611f1224857a79bd985a8cf", - "sha256:68950ffd4d9169716bcb8719a56c07a2f4485354fec061cdd5910aa07369731c" + "sha256:0e48b87e03bf109288e55cfceadcfa15ff5470aca2851a851950ed2926f450d7", + "sha256:1037d5ac7b7b310b2632ad867ec8d0e4c4819dcdb0b820f63135da746a24e418", + "sha256:1ef92b76f7733f282fd096ea406200b5a286c42947412b0eaff3a74e3616cefe", + "sha256:1f7ea64ebfa01b50f693508fc39f875e264446d3b097088f84f203b9d09618a0", + "sha256:22f2cd76d069cc54c71f10360744ba8983fbb616903b4304a85b734915c8e1b4", + "sha256:2b36cf2ddf5566e205f6535f782a62194a184d33e175b64ae8c40b1737522be3", + "sha256:30d3c14661f2792e9142cce3eeeb1cbc175b3eb5f733be0c8eeb99651e52b0c3", + "sha256:32d5ea7f6c8bdfa6e648326ebca1f02b0764e2a029edc6f8dce2627e19d468c3", + "sha256:3915f256e75a2d7cf88d8953d37f780455dc586cc72dee059c528fe77f581217", + "sha256:4ad6fa01f941920f54f2bbb35f3df7673428a0ef98a0b0840c2eaef3b110efa8", + "sha256:4ed7f7da04046d2e488437170797d3b4a4ad83906683bcb7dfc68b673bbce5e2", + "sha256:5119fa92ae61f786e8c3662fd60aece1d0a2dd5cca5d0c79417a95e7a4272a59", + "sha256:577f21094ea469ef92ec1adaf2c9441a226d2144d01a5be2fa823cecf6543e50", + "sha256:58b4bd92cf88aacf83d88479c8f9caee044b1ec55f2451a337354a7ea2590a22", + "sha256:5c34b25da232ead53a6f335b76dbea124f4d152ad568b9080d6f944bc2b34b52", + "sha256:87ed5c6f450580a2f6790bc7cbfb016dfc73bc750249762268a3695361315eef", + "sha256:89c93167a74d3a75dfaa38a5c7cca015537d5820dd7f17d63267d674a61cae90", + "sha256:96ae2c733b2aabdd9986e2c5df628ff3473676cd1c5faded1ff496cf6d74083c", + "sha256:9942db8888e06943c5dde66ca0037dcff82a2a4ec1ad0ada9e0d2ee9d9823893", + "sha256:9d98d4137277c75dfb898ec8d846c4fd68ba1e9cf77f95e2865c203dc18f4c3d", + "sha256:a1dca32d9f1784af512a13410ec204c6f7f0aa9797a111c42e1c03449821c264", + "sha256:dd321f668053961824bcc1be1cc1df748b2d7e4fa28086b08331e577b0100a73", + "sha256:e1a26503279b6b310669fb0b219c39e4820b77e8189fe80f522bb511f247db0a", + "sha256:e88976690a64b0af98312ca958415849cb42423423c5f2ee74af4b49a97a2168", + "sha256:ea8d16dc41655aa113cd64665e7219446cd7e4ff2248d7178eaa905190c86b18", + "sha256:ecb3e624844c798144e9bd986954e0adc81d8911a1f30f375e1252fe26e8c294", + "sha256:ed1a20af114c301a0269bf01163d51dbef72737fd65f850001e7cbe7f3c7abae" ], "index": "pypi", - "version": "==19.3b0" + "markers": "python_version >= '3.10'", + "version": "==26.5.1" }, "click": { "hashes": [ - "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13", - "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7" + "sha256:255bc9599cf7748b4b1a446ccc735421bd08a2ae529a8b88597d3de5664ee360", + "sha256:ba0d2089de75ea0310e2dde03160e6ca10009947fb95a182f9b54021bb272e34" ], - "version": "==7.0" + "markers": "python_version >= '3.10'", + "version": "==8.5.0" }, "jedi": { "hashes": [ - "sha256:786b6c3d80e2f06fd77162a07fed81b8baa22dde5d62896a790a331d6ac21a27", - "sha256:ba859c74fa3c966a22f2aeebe1b74ee27e2a462f56d3f5f7ca4a59af61bfe42e" + "sha256:7bdd9c2634f56713299976f4cbd59cb3fa92165cc5e05ea811fb253480728b67", + "sha256:c3f4ccbd276696f4b19c54618d4fb18f9fc24b0aef02acf704b23f487daa1011" ], "index": "pypi", - "version": "==0.15.1" + "markers": "python_version >= '3.10'", + "version": "==0.20.0" + }, + "mypy-extensions": { + "hashes": [ + "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", + "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558" + ], + "markers": "python_version >= '3.8'", + "version": "==1.1.0" + }, + "packaging": { + "hashes": [ + "sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79", + "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c" + ], + "markers": "python_version >= '3.9'", + "version": "==26.3" }, "parso": { "hashes": [ - "sha256:63854233e1fadb5da97f2744b6b24346d2750b85965e7e399bec1620232797dc", - "sha256:666b0ee4a7a1220f65d367617f2cd3ffddff3e205f3f16a0284df30e774c2a9c" + "sha256:a8926eb2a1b915486941fdbd31e86a4baf88fe8c210f25f2f35ecec5b574ca1c", + "sha256:eaaac4c9fdd5e9e8852dc778d2d7405897ec510f2a298071453e5e3a07914bb1" + ], + "markers": "python_version >= '3.6'", + "version": "==0.8.7" + }, + "pathspec": { + "hashes": [ + "sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a", + "sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189" + ], + "markers": "python_version >= '3.9'", + "version": "==1.1.1" + }, + "platformdirs": { + "hashes": [ + "sha256:0a3958f58a9e30321eaef0a424dd0b77cce242886b36b8aa992f9731ef2d59c1", + "sha256:e2c66a8d384596cd98e3c4aea2d761df7bac95d9d8a2cc3946daa8cdafdaebc1" ], - "version": "==0.5.1" + "markers": "python_version >= '3.10'", + "version": "==4.11.9" }, "pycodestyle": { "hashes": [ - "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", - "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" + "sha256:c4b5b517d278089ff9d0abdec919cd97262a3367449ea1c8b49b91529167b783", + "sha256:dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d" ], - "version": "==2.5.0" + "markers": "python_version >= '3.9'", + "version": "==2.14.0" }, - "toml": { + "pytokens": { "hashes": [ - "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", - "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e" + "sha256:0fc71786e629cef478cbf29d7ea1923299181d0699dbe7c3c0f4a583811d9fc1", + "sha256:11edda0942da80ff58c4408407616a310adecae1ddd22eef8c692fe266fa5009", + "sha256:140709331e846b728475786df8aeb27d24f48cbcf7bcd449f8de75cae7a45083", + "sha256:24afde1f53d95348b5a0eb19488661147285ca4dd7ed752bbc3e1c6242a304d1", + "sha256:26cef14744a8385f35d0e095dc8b3a7583f6c953c2e3d269c7f82484bf5ad2de", + "sha256:27b83ad28825978742beef057bfe406ad6ed524b2d28c252c5de7b4a6dd48fa2", + "sha256:292052fe80923aae2260c073f822ceba21f3872ced9a68bb7953b348e561179a", + "sha256:29d1d8fb1030af4d231789959f21821ab6325e463f0503a61d204343c9b355d1", + "sha256:2a44ed93ea23415c54f3face3b65ef2b844d96aeb3455b8a69b3df6beab6acc5", + "sha256:30f51edd9bb7f85c748979384165601d028b84f7bd13fe14d3e065304093916a", + "sha256:34bcc734bd2f2d5fe3b34e7b3c0116bfb2397f2d9666139988e7a3eb5f7400e3", + "sha256:3ad72b851e781478366288743198101e5eb34a414f1d5627cdd585ca3b25f1db", + "sha256:3f901fe783e06e48e8cbdc82d631fca8f118333798193e026a50ce1b3757ea68", + "sha256:42f144f3aafa5d92bad964d471a581651e28b24434d184871bd02e3a0d956037", + "sha256:4a14d5f5fc78ce85e426aa159489e2d5961acf0e47575e08f35584009178e321", + "sha256:4a58d057208cb9075c144950d789511220b07636dd2e4708d5645d24de666bdc", + "sha256:4e691d7f5186bd2842c14813f79f8884bb03f5995f0575272009982c5ac6c0f7", + "sha256:5502408cab1cb18e128570f8d598981c68a50d0cbd7c61312a90507cd3a1276f", + "sha256:584c80c24b078eec1e227079d56dc22ff755e0ba8654d8383b2c549107528918", + "sha256:5ad948d085ed6c16413eb5fec6b3e02fa00dc29a2534f088d3302c47eb59adf9", + "sha256:670d286910b531c7b7e3c0b453fd8156f250adb140146d234a82219459b9640c", + "sha256:682fa37ff4d8e95f7df6fe6fe6a431e8ed8e788023c6bcc0f0880a12eab80ad1", + "sha256:6d6c4268598f762bc8e91f5dbf2ab2f61f7b95bdc07953b602db879b3c8c18e1", + "sha256:79fc6b8699564e1f9b521582c35435f1bd32dd06822322ec44afdeba666d8cb3", + "sha256:8bdb9d0ce90cbf99c525e75a2fa415144fd570a1ba987380190e8b786bc6ef9b", + "sha256:8fcb9ba3709ff77e77f1c7022ff11d13553f3c30299a9fe246a166903e9091eb", + "sha256:941d4343bf27b605e9213b26bfa1c4bf197c9c599a9627eb7305b0defcfe40c1", + "sha256:967cf6e3fd4adf7de8fc73cd3043754ae79c36475c1c11d514fc72cf5490094a", + "sha256:970b08dd6b86058b6dc07efe9e98414f5102974716232d10f32ff39701e841c4", + "sha256:97f50fd18543be72da51dd505e2ed20d2228c74e0464e4262e4899797803d7fa", + "sha256:9bd7d7f544d362576be74f9d5901a22f317efc20046efe2034dced238cbbfe78", + "sha256:add8bf86b71a5d9fb5b89f023a80b791e04fba57960aa790cc6125f7f1d39dfe", + "sha256:b35d7e5ad269804f6697727702da3c517bb8a5228afa450ab0fa787732055fc9", + "sha256:b49750419d300e2b5a3813cf229d4e5a4c728dae470bcc89867a9ad6f25a722d", + "sha256:d31b97b3de0f61571a124a00ffe9a81fb9939146c122c11060725bd5aea79975", + "sha256:d70e77c55ae8380c91c0c18dea05951482e263982911fc7410b1ffd1dadd3440", + "sha256:d9907d61f15bf7261d7e775bd5d7ee4d2930e04424bab1972591918497623a16", + "sha256:da5baeaf7116dced9c6bb76dc31ba04a2dc3695f3d9f74741d7910122b456edc", + "sha256:dc74c035f9bfca0255c1af77ddd2d6ae8419012805453e4b0e7513e17904545d", + "sha256:dcafc12c30dbaf1e2af0490978352e0c4041a7cde31f4f81435c2a5e8b9cabb6", + "sha256:ee44d0f85b803321710f9239f335aafe16553b39106384cef8e6de40cb4ef2f6", + "sha256:f66a6bbe741bd431f6d741e617e0f39ec7257ca1f89089593479347cc4d13324" ], - "version": "==0.10.0" + "markers": "python_version >= '3.8'", + "version": "==0.4.1" } } } diff --git a/emacs-the-best-python-editor/init.el b/emacs-the-best-python-editor/init.el index 6842523eae..6c4a0d3a22 100644 --- a/emacs-the-best-python-editor/init.el +++ b/emacs-the-best-python-editor/init.el @@ -8,7 +8,7 @@ ;; Adds the Melpa archive to the list of available repositories (add-to-list 'package-archives - '("melpa" . "http://melpa.org/packages/") t) + '("melpa" . "https://melpa.org/packages/") t) ;; Initializes the package infrastructure (package-initialize) @@ -45,7 +45,7 @@ (setq inhibit-startup-message t) ;; Hide the startup message (load-theme 'material t) ;; Load material theme -(global-linum-mode t) ;; Enable line numbers globally +(global-display-line-numbers-mode t) ;; Enable line numbers globally ;; ==================================== ;; DEVELOPMENT SETUP From eed61c63e251618c250c8b39d82cd71fd54846fb Mon Sep 17 00:00:00 2001 From: Martin Breuss Date: Wed, 23 Sep 2026 10:38:22 +0000 Subject: [PATCH 2/3] Match init.el comments to the tutorial and link it from the README - Align four comment lines in init.el with the article's code blocks ("basic packaging support", "Set up", "Development Setup", "autopep8") - Strip a whitespace-only line - Add a title and tutorial link to README.md Co-Authored-By: Claude Opus 5.5 (1M context) --- emacs-the-best-python-editor/README.md | 4 +++- emacs-the-best-python-editor/init.el | 10 +++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/emacs-the-best-python-editor/README.md b/emacs-the-best-python-editor/README.md index 735413fcd1..4ef21e4c2c 100644 --- a/emacs-the-best-python-editor/README.md +++ b/emacs-the-best-python-editor/README.md @@ -1 +1,3 @@ -Support file for the Emacs: The Best Python Editor article. +# Emacs: The Best Python Editor? + +This folder contains the support files for the Real Python tutorial [Emacs: The Best Python Editor?](https://realpython.com/emacs-the-best-python-editor/). diff --git a/emacs-the-best-python-editor/init.el b/emacs-the-best-python-editor/init.el index 6c4a0d3a22..a0c32384c3 100644 --- a/emacs-the-best-python-editor/init.el +++ b/emacs-the-best-python-editor/init.el @@ -3,7 +3,7 @@ ;; =================================== ;; MELPA Package Support ;; =================================== -;; Enables packaging support +;; Enables basic packaging support (require 'package) ;; Adds the Melpa archive to the list of available repositories @@ -21,7 +21,7 @@ ;; ;; myPackages contains a list of package names (defvar myPackages - '(better-defaults ;; Setup some better Emacs defaults + '(better-defaults ;; Set up some better Emacs defaults elpy ;; Emacs Lisp Python Environment ein ;; Emacs iPython Notebook flycheck ;; On the fly syntax checking @@ -48,7 +48,7 @@ (global-display-line-numbers-mode t) ;; Enable line numbers globally ;; ==================================== -;; DEVELOPMENT SETUP +;; Development Setup ;; ==================================== ;; Enable elpy (elpy-enable) @@ -59,13 +59,13 @@ ;; python-shell-prompt-detect-failure-warning nil) ;; (add-to-list 'python-shell-completion-native-disabled-interpreters ;; "jupyter") - + ;; Enable Flycheck (when (require 'flycheck nil t) (setq elpy-modules (delq 'elpy-module-flymake elpy-modules)) (add-hook 'elpy-mode-hook 'flycheck-mode)) -;; Enable Autopep8 +;; Enable autopep8 ;; (require 'py-autopep8) ;; (add-hook 'elpy-mode-hook 'py-autopep8-enable-on-save) From 1c600dba4654d19238bc112b545c9774bfac7a42 Mon Sep 17 00:00:00 2001 From: Martin Breuss Date: Wed, 23 Sep 2026 11:21:12 +0000 Subject: [PATCH 3/3] Drop the exact Python requirement from the PyEval Pipfile The [requires] python_version was set to the tested version (3.14), which pipenv treats as the exact interpreter to use: readers on any other Python got a warning, and --deploy aborted. Remove it and relock under Python 3.10, the floor set by the locked dev tools (black, jedi, flake8 need >=3.10), so the conditional deps (tomli, typing-extensions) are in the lock. Verified: pipenv install --dev --deploy on Python 3.10, 3.13 and 3.14. Co-Authored-By: Claude Opus 5.5 (1M context) --- emacs-the-best-python-editor/PyEval/Pipfile | 3 - .../PyEval/Pipfile.lock | 81 ++++++++++++++++--- 2 files changed, 70 insertions(+), 14 deletions(-) diff --git a/emacs-the-best-python-editor/PyEval/Pipfile b/emacs-the-best-python-editor/PyEval/Pipfile index 34fad4c220..cddc12ae13 100644 --- a/emacs-the-best-python-editor/PyEval/Pipfile +++ b/emacs-the-best-python-editor/PyEval/Pipfile @@ -9,6 +9,3 @@ name = "pypi" autopep8 = "*" black = "*" jedi = "*" - -[requires] -python_version = "3.14" diff --git a/emacs-the-best-python-editor/PyEval/Pipfile.lock b/emacs-the-best-python-editor/PyEval/Pipfile.lock index 33c149dc84..b1e010f795 100644 --- a/emacs-the-best-python-editor/PyEval/Pipfile.lock +++ b/emacs-the-best-python-editor/PyEval/Pipfile.lock @@ -1,12 +1,10 @@ { "_meta": { "hash": { - "sha256": "19330b06977ef96698964b70656d6d884a0a5b0ecfa7068a2415afc5f24117f2" + "sha256": "d46e41606b6ab9681dfb6636923ac47ae163611bf15d2c594f165f14f9286b00" }, "pipfile-spec": 6, - "requires": { - "python_version": "3.14" - }, + "requires": {}, "sources": [ { "name": "pypi", @@ -111,19 +109,19 @@ }, "platformdirs": { "hashes": [ - "sha256:0a3958f58a9e30321eaef0a424dd0b77cce242886b36b8aa992f9731ef2d59c1", - "sha256:e2c66a8d384596cd98e3c4aea2d761df7bac95d9d8a2cc3946daa8cdafdaebc1" + "sha256:b1ba966ac76153d9985a0787ffab951e7c18416189873d4e4ddb2c8a04a0a254", + "sha256:e8dc1cb58f1153fd7f61db1374317770baababec2480b37b8f01c6cc25b45267" ], "markers": "python_version >= '3.10'", - "version": "==4.11.9" + "version": "==4.11.12" }, "pycodestyle": { "hashes": [ - "sha256:c4b5b517d278089ff9d0abdec919cd97262a3367449ea1c8b49b91529167b783", - "sha256:dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d" + "sha256:12fd2f73c7b8ee8845a0431111df8faf4c1a07d6e64e2ee7f0c74014dab14181", + "sha256:318f5db083869b4c4dad922d0b11124fb27ab181b6730b93371da671e31bd50e" ], - "markers": "python_version >= '3.9'", - "version": "==2.14.0" + "markers": "python_version >= '3.10'", + "version": "==2.15.0" }, "pytokens": { "hashes": [ @@ -172,6 +170,67 @@ ], "markers": "python_version >= '3.8'", "version": "==0.4.1" + }, + "tomli": { + "hashes": [ + "sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853", + "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", + "sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5", + "sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d", + "sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd", + "sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26", + "sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54", + "sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6", + "sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c", + "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a", + "sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd", + "sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f", + "sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5", + "sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9", + "sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662", + "sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9", + "sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1", + "sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585", + "sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e", + "sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c", + "sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41", + "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f", + "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085", + "sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15", + "sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7", + "sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c", + "sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36", + "sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076", + "sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac", + "sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8", + "sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232", + "sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece", + "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a", + "sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897", + "sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d", + "sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4", + "sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917", + "sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396", + "sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a", + "sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc", + "sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba", + "sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f", + "sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257", + "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30", + "sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf", + "sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9", + "sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049" + ], + "markers": "python_version >= '3.8'", + "version": "==2.4.1" + }, + "typing-extensions": { + "hashes": [ + "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", + "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5" + ], + "markers": "python_version >= '3.9'", + "version": "==4.16.0" } } }