1- name : Test
2- on : [push, pull_request]
1+ name : CI
2+ on :
3+ pull_request :
4+ push :
5+ branches : [master, develop]
6+ workflow_dispatch : # allows running CI manually from the Actions tab
37concurrency : # https://stackoverflow.com/questions/66335225#comment133398800_72408109
48 group : ${{ github.workflow }}-${{ github.ref || github.run_id }}
59 cancel-in-progress : ${{ github.event_name == 'pull_request' }}
610jobs :
711 linters :
8- runs-on : ubuntu-latest
12+ runs-on : ubuntu-24.04
913 steps :
10- - uses : actions/checkout@v2
14+ - uses : actions/checkout@v4
15+ with :
16+ fetch-depth : 0 # fetch git tags for setuptools_scm (smart_open.__version__)
1117
1218 - name : Setup up Python 3.11
13- uses : actions/setup-python@v2
19+ uses : actions/setup-python@v5
1420 with :
1521 python-version : " 3.11"
1622
1723 - name : Install dependencies
18- run : pip install flake8
24+ run : pip install flake8 -e .[all]
1925
2026 - name : Run flake8 linter (source)
2127 run : flake8 --show-source smart_open
2228
29+ - name : " Check whether help.txt update was forgotten"
30+ if : github.event_name == 'pull_request'
31+ run : |
32+ python update_helptext.py
33+ test ! "$(git diff)" && echo "no changes" || ( git diff && echo 'looks like "python update_helptext.py" was forgotten' && exit 1 )
34+
2335 unit_tests :
2436 needs : [linters]
2537 runs-on : ${{ matrix.os }}
2638 strategy :
2739 matrix :
2840 include :
29- - {python-version: '3.8', os: ubuntu-20 .04}
30- - {python-version: '3.9', os: ubuntu-20 .04}
31- - {python-version: '3.10', os: ubuntu-20 .04}
32- - {python-version: '3.11', os: ubuntu-20 .04}
33- - {python-version: '3.12', os: ubuntu-20 .04}
34- - {python-version: '3.13', os: ubuntu-20 .04}
35-
36- - {python-version: '3.8', os: windows-2019 }
37- - {python-version: '3.9', os: windows-2019 }
38- - {python-version: '3.10', os: windows-2019 }
39- - {python-version: '3.11', os: windows-2019 }
40- - {python-version: '3.12', os: windows-2019 }
41- - {python-version: '3.13', os: windows-2019 }
41+ - {python-version: '3.8', os: ubuntu-24 .04}
42+ - {python-version: '3.9', os: ubuntu-24 .04}
43+ - {python-version: '3.10', os: ubuntu-24 .04}
44+ - {python-version: '3.11', os: ubuntu-24 .04}
45+ - {python-version: '3.12', os: ubuntu-24 .04}
46+ - {python-version: '3.13', os: ubuntu-24 .04}
47+
48+ - {python-version: '3.8', os: windows-2025 }
49+ - {python-version: '3.9', os: windows-2025 }
50+ - {python-version: '3.10', os: windows-2025 }
51+ - {python-version: '3.11', os: windows-2025 }
52+ - {python-version: '3.12', os: windows-2025 }
53+ - {python-version: '3.13', os: windows-2025 }
4254 steps :
43- - uses : actions/checkout@v2
55+ - uses : actions/checkout@v4
56+ with :
57+ fetch-depth : 0 # fetch git tags for setuptools_scm (smart_open.__version__)
4458
45- - uses : actions/setup-python@v2
59+ - uses : actions/setup-python@v5
4660 with :
4761 python-version : ${{ matrix.python-version }}
4862
@@ -56,37 +70,38 @@ jobs:
5670 run : pip install -e .[test]
5771
5872 - name : Run unit tests
59- run : pytest smart_open -v -rfxECs --durations=20
73+ run : pytest tests -v -rfxECs --durations=20
6074
6175 doctest :
6276 needs : [linters,unit_tests]
6377 runs-on : ${{ matrix.os }}
6478 strategy :
6579 matrix :
6680 include :
67- - {python-version: '3.8', os: ubuntu-20 .04}
68- - {python-version: '3.9', os: ubuntu-20 .04}
69- - {python-version: '3.10', os: ubuntu-20 .04}
70- - {python-version: '3.11', os: ubuntu-20 .04}
71- - {python-version: '3.12', os: ubuntu-20 .04}
72- - {python-version: '3.13', os: ubuntu-20 .04}
81+ - {python-version: '3.8', os: ubuntu-24 .04}
82+ - {python-version: '3.9', os: ubuntu-24 .04}
83+ - {python-version: '3.10', os: ubuntu-24 .04}
84+ - {python-version: '3.11', os: ubuntu-24 .04}
85+ - {python-version: '3.12', os: ubuntu-24 .04}
86+ - {python-version: '3.13', os: ubuntu-24 .04}
7387
7488 #
7589 # Some of the doctests don't pass on Windows because of Windows-specific
7690 # character encoding issues.
7791 #
78- # - {python-version: '3.7', os: windows-2019}
79- # - {python-version: '3.8', os: windows-2019}
80- # - {python-version: '3.9', os: windows-2019}
81- # - {python-version: '3.10', os: windows-2019}
82- # - {python-version: '3.11', os: windows-2019}
83- # - {python-version: '3.12', os: windows-2019}
84- # - {python-version: '3.13', os: windows-2019}
92+ # - {python-version: '3.8', os: windows-2025}
93+ # - {python-version: '3.9', os: windows-2025}
94+ # - {python-version: '3.10', os: windows-2025}
95+ # - {python-version: '3.11', os: windows-2025}
96+ # - {python-version: '3.12', os: windows-2025}
97+ # - {python-version: '3.13', os: windows-2025}
8598
8699 steps :
87- - uses : actions/checkout@v2
100+ - uses : actions/checkout@v4
101+ with :
102+ fetch-depth : 0 # fetch git tags for setuptools_scm (smart_open.__version__)
88103
89- - uses : actions/setup-python@v2
104+ - uses : actions/setup-python@v5
90105 with :
91106 python-version : ${{ matrix.python-version }}
92107
@@ -105,27 +120,28 @@ jobs:
105120 strategy :
106121 matrix :
107122 include :
108- - {python-version: '3.8', os: ubuntu-20 .04}
109- - {python-version: '3.9', os: ubuntu-20 .04}
110- - {python-version: '3.10', os: ubuntu-20 .04}
111- - {python-version: '3.11', os: ubuntu-20 .04}
112- - {python-version: '3.12', os: ubuntu-20 .04}
113- - {python-version: '3.13', os: ubuntu-20 .04}
123+ - {python-version: '3.8', os: ubuntu-24 .04}
124+ - {python-version: '3.9', os: ubuntu-24 .04}
125+ - {python-version: '3.10', os: ubuntu-24 .04}
126+ - {python-version: '3.11', os: ubuntu-24 .04}
127+ - {python-version: '3.12', os: ubuntu-24 .04}
128+ - {python-version: '3.13', os: ubuntu-24 .04}
114129
115130 # Not sure why we exclude these, perhaps for historical reasons?
116131 #
117- # - {python-version: '3.7', os: windows-2019}
118- # - {python-version: '3.8', os: windows-2019}
119- # - {python-version: '3.9', os: windows-2019}
120- # - {python-version: '3.10', os: windows-2019}
121- # - {python-version: '3.11', os: windows-2019}
122- # - {python-version: '3.12', os: windows-2019}
123- # - {python-version: '3.13', os: windows-2019}
132+ # - {python-version: '3.8', os: windows-2025}
133+ # - {python-version: '3.9', os: windows-2025}
134+ # - {python-version: '3.10', os: windows-2025}
135+ # - {python-version: '3.11', os: windows-2025}
136+ # - {python-version: '3.12', os: windows-2025}
137+ # - {python-version: '3.13', os: windows-2025}
124138
125139 steps :
126- - uses : actions/checkout@v2
140+ - uses : actions/checkout@v4
141+ with :
142+ fetch-depth : 0 # fetch git tags for setuptools_scm (smart_open.__version__)
127143
128- - uses : actions/setup-python@v2
144+ - uses : actions/setup-python@v5
129145 with :
130146 python-version : ${{ matrix.python-version }}
131147
@@ -158,25 +174,26 @@ jobs:
158174 strategy :
159175 matrix :
160176 include :
161- - {python-version: '3.8', os: ubuntu-20.04}
162- - {python-version: '3.9', os: ubuntu-20.04}
163- - {python-version: '3.10', os: ubuntu-20.04}
164- - {python-version: '3.11', os: ubuntu-20.04}
165- - {python-version: '3.12', os: ubuntu-20.04}
166- - {python-version: '3.13', os: ubuntu-20.04}
167-
168- # - {python-version: '3.7', os: windows-2019}
169- # - {python-version: '3.8', os: windows-2019}
170- # - {python-version: '3.9', os: windows-2019}
171- # - {python-version: '3.10', os: windows-2019}
172- # - {python-version: '3.11', os: windows-2019}
173- # - {python-version: '3.12', os: windows-2019}
174- # - {python-version: '3.13', os: windows-2019}
177+ - {python-version: '3.8', os: ubuntu-24.04}
178+ - {python-version: '3.9', os: ubuntu-24.04}
179+ - {python-version: '3.10', os: ubuntu-24.04}
180+ - {python-version: '3.11', os: ubuntu-24.04}
181+ - {python-version: '3.12', os: ubuntu-24.04}
182+ - {python-version: '3.13', os: ubuntu-24.04}
183+
184+ # - {python-version: '3.8', os: windows-2025}
185+ # - {python-version: '3.9', os: windows-2025}
186+ # - {python-version: '3.10', os: windows-2025}
187+ # - {python-version: '3.11', os: windows-2025}
188+ # - {python-version: '3.12', os: windows-2025}
189+ # - {python-version: '3.13', os: windows-2025}
175190
176191 steps :
177- - uses : actions/checkout@v2
192+ - uses : actions/checkout@v4
193+ with :
194+ fetch-depth : 0 # fetch git tags for setuptools_scm (smart_open.__version__)
178195
179- - uses : actions/setup-python@v2
196+ - uses : actions/setup-python@v5
180197 with :
181198 python-version : ${{ matrix.python-version }}
182199
0 commit comments