diff options
| author | kobarity | 2025-12-13 00:06:39 +0900 |
|---|---|---|
| committer | Eli Zaretskii | 2026-01-03 11:52:48 +0200 |
| commit | 4c24c0f3d3fbeebf0849f78c83d6f19415b1addd (patch) | |
| tree | a747ae9b61fe2ffdb7b8ab5c93f191c5e473e0ab /lisp/progmodes/python.el | |
| parent | f683e7c070c5dce043926c5c54186861e1da9ed0 (diff) | |
| download | emacs-4c24c0f3d3fbeebf0849f78c83d6f19415b1addd.tar.gz emacs-4c24c0f3d3fbeebf0849f78c83d6f19415b1addd.zip | |
Do not use codecs.open for Python 3
* lisp/progmodes/python.el (python-shell-eval-file-setup-code):
For Python 3, use built-in open instead of codecs.open to address the
deprecation of codecs.open in Python 3.14. (Bug#79723)
Diffstat (limited to 'lisp/progmodes/python.el')
| -rw-r--r-- | lisp/progmodes/python.el | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 212a5e1521c..9c5e1e5ee6c 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el | |||
| @@ -3694,13 +3694,18 @@ def __PYTHON_EL_eval(source, filename): | |||
| 3694 | (defconst python-shell-eval-file-setup-code | 3694 | (defconst python-shell-eval-file-setup-code |
| 3695 | "\ | 3695 | "\ |
| 3696 | def __PYTHON_EL_eval_file(filename, tempname, delete): | 3696 | def __PYTHON_EL_eval_file(filename, tempname, delete): |
| 3697 | import codecs, os, re | 3697 | import os, re, sys |
| 3698 | if sys.version_info.major < 3: | ||
| 3699 | import codecs | ||
| 3700 | _open = codecs.open | ||
| 3701 | else: | ||
| 3702 | _open = open | ||
| 3698 | pattern = r'^[ \t\f]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)' | 3703 | pattern = r'^[ \t\f]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)' |
| 3699 | with codecs.open(tempname or filename, encoding='latin-1') as file: | 3704 | with _open(tempname or filename, encoding='latin-1') as file: |
| 3700 | match = re.match(pattern, file.readline()) | 3705 | match = re.match(pattern, file.readline()) |
| 3701 | match = match or re.match(pattern, file.readline()) | 3706 | match = match or re.match(pattern, file.readline()) |
| 3702 | encoding = match.group(1) if match else 'utf-8' | 3707 | encoding = match.group(1) if match else 'utf-8' |
| 3703 | with codecs.open(tempname or filename, encoding=encoding) as file: | 3708 | with _open(tempname or filename, encoding=encoding) as file: |
| 3704 | source = file.read().encode(encoding) | 3709 | source = file.read().encode(encoding) |
| 3705 | if delete and tempname: | 3710 | if delete and tempname: |
| 3706 | os.remove(tempname) | 3711 | os.remove(tempname) |