Skip to content

Commit c01f430

Browse files
authored
Merge pull request #1340 from moreati/release-v0.3.29
Release v0.3.29
2 parents ce0c596 + c0dd5c6 commit c01f430

File tree

13 files changed

+107
-52
lines changed

13 files changed

+107
-52
lines changed

.github/workflows/tests.yml

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -100,22 +100,22 @@ jobs:
100100
python_version: '3.13'
101101
- tox_env: py313-m_ans-ans8
102102
python_version: '3.13'
103-
- tox_env: py313-m_ans-ans9
104-
python_version: '3.13'
105-
- tox_env: py313-m_ans-ans10
106-
python_version: '3.13'
107-
- tox_env: py313-m_ans-ans11
108-
python_version: '3.13'
109-
- tox_env: py313-m_ans-ans12
110-
python_version: '3.13'
111-
112-
- tox_env: py313-m_ans-ans11-s_lin
113-
python_version: '3.13'
114-
- tox_env: py313-m_ans-ans12-s_lin
115-
python_version: '3.13'
116-
117-
- tox_env: py313-m_mtg
118-
python_version: '3.13'
103+
- tox_env: py314-m_ans-ans9
104+
python_version: '3.14.0-rc.3'
105+
- tox_env: py314-m_ans-ans10
106+
python_version: '3.14.0-rc.3'
107+
- tox_env: py314-m_ans-ans11
108+
python_version: '3.14.0-rc.3'
109+
- tox_env: py314-m_ans-ans12
110+
python_version: '3.14.0-rc.3'
111+
112+
- tox_env: py314-m_ans-ans11-s_lin
113+
python_version: '3.14.0-rc.3'
114+
- tox_env: py314-m_ans-ans12-s_lin
115+
python_version: '3.14.0-rc.3'
116+
117+
- tox_env: py314-m_mtg
118+
python_version: '3.14.0-rc.3'
119119

120120
steps:
121121
- uses: actions/checkout@v4
@@ -161,14 +161,19 @@ jobs:
161161
fail-fast: false
162162
matrix:
163163
include:
164-
- tox_env: py313-m_lcl-ans11
164+
- tox_env: py314-m_lcl-ans11
165+
python_version: '3.14.0-rc.3'
165166
sshpass_version: "1.10"
166-
- tox_env: py313-m_lcl-ans11-s_lin
167+
- tox_env: py314-m_lcl-ans11-s_lin
168+
python_version: '3.14.0-rc.3'
167169
sshpass_version: "1.10"
168-
- tox_env: py313-m_lcl-ans12
169-
- tox_env: py313-m_lcl-ans12-s_lin
170+
- tox_env: py314-m_lcl-ans12
171+
python_version: '3.14.0-rc.3'
172+
- tox_env: py314-m_lcl-ans12-s_lin
173+
python_version: '3.14.0-rc.3'
170174

171-
- tox_env: py313-m_mtg
175+
- tox_env: py314-m_mtg
176+
python_version: '3.14.0-rc.3'
172177

173178
steps:
174179
- uses: actions/checkout@v4

docs/ansible_detailed.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,11 @@ Noteworthy Differences
138138
| 8 | 3.9 - 3.13 |
139139
+-----------------+-----------------+
140140
| 9 | |
141-
+-----------------+ 3.10 - 3.13 |
141+
+-----------------+ 3.10 - 3.14 |
142142
| 10 | |
143143
+-----------------+-----------------+
144144
| 11 | |
145-
+-----------------+ 3.11 - 3.13+ |
145+
+-----------------+ 3.11 - 3.14 |
146146
| 12 | |
147147
+-----------------+-----------------+
148148

docs/changelog.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ To avail of fixes in an unreleased version, please download a ZIP file
1818
`directly from GitHub <https://github.com/mitogen-hq/mitogen/>`_.
1919

2020

21+
v0.3.29 (2025-09-18)
22+
--------------------
23+
24+
* :gh:issue:`1287` Python 3.14 support
25+
* :gh:issue:`1287` tests: Bump dependencies
26+
27+
2128
v0.3.28 (2025-09-17)
2229
--------------------
2330

mitogen/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535

3636

3737
#: Library version as a tuple.
38-
__version__ = (0, 3, 28)
38+
__version__ = (0, 3, 29)
3939

4040

4141
#: This is :data:`False` in slave contexts. Previously it was used to prevent

mitogen/imports/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44

55
import sys
66

7-
if sys.version_info >= (3, 6):
7+
if sys.version_info >= (3, 14):
8+
from mitogen.imports._py314 import _code_imports
9+
elif sys.version_info >= (3, 6):
810
from mitogen.imports._py36 import _code_imports
911
elif sys.version_info >= (2, 5):
1012
from mitogen.imports._py2 import _code_imports_py25 as _code_imports

mitogen/imports/_py314.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# SPDX-FileCopyrightText: 2025 Mitogen authors <https://github.com/mitogen-hq>
2+
# SPDX-License-Identifier: MIT
3+
# !mitogen: minify_safe
4+
5+
import opcode
6+
7+
IMPORT_NAME = opcode.opmap['IMPORT_NAME']
8+
LOAD_CONST = opcode.opmap['LOAD_CONST']
9+
LOAD_SMALL_INT = opcode.opmap['LOAD_SMALL_INT']
10+
11+
12+
def _code_imports(code, consts, names):
13+
start = 4
14+
while True:
15+
op3_idx = code.find(IMPORT_NAME, start, -1)
16+
if op3_idx < 0:
17+
return
18+
if op3_idx % 2:
19+
start = op3_idx + 1
20+
continue
21+
if code[op3_idx-4] != LOAD_SMALL_INT or code[op3_idx-2] != LOAD_CONST:
22+
start = op3_idx + 2
23+
continue
24+
start = op3_idx + 6
25+
arg1, arg2, arg3 = code[op3_idx-3], code[op3_idx-1], code[op3_idx+1]
26+
yield (arg1, names[arg3], consts[arg2] or ())

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ def long_description():
102102
'Programming Language :: Python :: 3.11',
103103
'Programming Language :: Python :: 3.12',
104104
'Programming Language :: Python :: 3.13',
105+
'Programming Language :: Python :: 3.14',
105106
'Programming Language :: Python :: Implementation :: CPython',
106107
'Topic :: System :: Distributed Computing',
107108
'Topic :: System :: Systems Administration',

tests/ansible/regression/issue_766__get_with_context.yml

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
netconf_container_image: ghcr.io/mitogen-hq/sysrepo-netopeer2:latest
1010
netconf_container_name: sysrepo
1111
netconf_container_port: 8030
12+
# https://github.com/ansible-collections/ansible.netcommon/issues/698#issuecomment-2910082548
13+
ansible_network_import_modules: "{{ (ansible_version_major_minor is version('2.19', '==', strict=True)) | bool }}"
1214

1315
tasks:
1416
- meta: end_play
@@ -28,13 +30,6 @@
2830
- ansible_version_major_minor is version('2.11', '>=', strict=True)
2931
- ansible_version_major_minor is version('2.12', '<', strict=True)
3032

31-
- meta: end_play
32-
when:
33-
# TASK [Get running configuration and state data ]
34-
# Error: : Task failed: ActionBase._parse_returned_data() missing 1 required positional argument: 'profile'
35-
# https://github.com/ansible-collections/ansible.netcommon/issues/698#issuecomment-2910082548
36-
- ansible_version_major_minor is version('2.19', '>=', strict=True)
37-
3833
- block:
3934
- name: Start container
4035
command:
@@ -63,6 +58,9 @@
6358
ansible.netcommon.netconf_get:
6459

6560
always:
61+
- name: Close connections
62+
meta: reset_connection
63+
6664
- name: Cleanup container
6765
command:
6866
cmd: podman stop "{{ netconf_container_name }}"

tests/ansible/requirements.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
paramiko==2.12.0; python_version <= '2.7'
2-
paramiko==3.5.0; python_version >= '3.6'
2+
paramiko==3.5.1; python_version >= '3.6' and python_version <= '3.8'
3+
paramiko==4.0.0; python_version >= '3.9'
34

45
# Incompatible with pip >= 72, due to removal of `setup.py test`:
56
# ModuleNotFoundError: No module named 'setuptools.command.test'
67
# https://github.com/pypa/setuptools/issues/4519
78
hdrhistogram==0.6.1
89

910
ncclient==0.6.13; python_version <= '2.7'
10-
ncclient==0.6.16; python_version > '2.7'
11+
ncclient==0.6.19; python_version >= '3.5'
1112

1213
PyYAML==3.11; python_version < '2.7'
13-
PyYAML==5.3.1; python_version >= '2.7' # Latest release (Jan 2021)
14+
PyYAML==5.4.1; python_version >= '2.7' and python_version <= '3.7'
15+
PyYAML==6.0.2; python_version >= '3.8'

tests/bench/scan_code

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ BIG_MODULE_PATH="$(dirname -- "$0")/data/big_module.py"
1010
IMPORTS="from collections import deque; from mitogen.imports import $BENCH_FUNC"
1111
COMPILE="co=compile(open('$BIG_MODULE_PATH').read(), '$BIG_MODULE_PATH', 'exec')"
1212
PYTHONS=(
13-
python2.7 python3.9 python3.10 python3.11 python3.12 python3.13
13+
python2.7 python3.{9..14}
1414
)
1515
for p in "${PYTHONS[@]}"; do
1616
echo -e -n "$BENCH_FUNC $p "

0 commit comments

Comments
 (0)