Skip to content

Commit 3573faf

Browse files
committed
Merge branch 'trunk' into build_release_artifact_ci_job
2 parents bf92dcf + 973f891 commit 3573faf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+63908
-50871
lines changed

.asf.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ github:
4444
strict: true
4545
# contexts are the names of checks that must pass
4646
contexts:
47-
- "Unit Tests (Python 3.8)"
4847
- "Unit Tests (Python 3.9)"
4948
- "Unit Tests (Python 3.10)"
5049
- "Unit Tests (Python 3.11)"
5150
- "Unit Tests (Python 3.12)"
52-
- "Run Various Lint and Other Checks (3.8)"
53-
- "Build and upload Documentation (3.8)"
51+
- "Unit Tests (Python 3.13)"
52+
- "Run Various Lint and Other Checks (3.9)"
53+
- "Build and upload Documentation (3.9)"
5454
- "Dependency Review"
5555

5656
notifications:

.github/workflows/install_test.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ jobs:
2828
- "3.10"
2929
- "3.11"
3030
- "pypy-3.7"
31+
- "pypy-3.8"
32+
- "pypy-3.9"
3133
include:
3234
# python 3.6 is not supported with ubuntu-latest anymore so we need to
3335
# use ubuntu 20.04

.github/workflows/integration-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232

3333
strategy:
3434
matrix:
35-
python_version: [3.8]
35+
python_version: [3.9]
3636

3737
steps:
3838
- uses: actions/checkout@master

.github/workflows/main.yml

Lines changed: 16 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -32,26 +32,23 @@ jobs:
3232
fail-fast: false
3333
matrix:
3434
python_version:
35-
- 3.8
36-
- 3.9
35+
- "3.9"
3736
- "3.10"
3837
- "3.11"
3938
- "3.12"
39+
- "3.13"
4040
# cryptography is not compatible with older PyPy versions
41-
- "pypy-3.8"
41+
- "pypy-3.9"
42+
- "pypy-3.10"
4243
os:
4344
- ubuntu-latest
44-
include:
45-
- python_version: pyjion
46-
os: ubuntu-20.04
4745

4846
steps:
4947
- uses: actions/checkout@master
5048
with:
5149
fetch-depth: 1
5250

5351
- name: Use Python ${{ matrix.python_version }}
54-
if: ${{ matrix.python_version != 'pyjion' }}
5552
uses: actions/setup-python@v5
5653
with:
5754
python-version: ${{ matrix.python_version }}
@@ -61,28 +58,6 @@ jobs:
6158
sudo DEBIAN_FRONTEND=noninteractive apt-get update
6259
sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq gcc libvirt-dev
6360
64-
- name: Use Python 3.10 (pyjion)
65-
if: ${{ matrix.python_version == 'pyjion' }}
66-
uses: actions/setup-python@v5
67-
with:
68-
python-version: "3.10"
69-
70-
# From https://github.com/tonybaloney/Pyjion/blob/develop/main/.github/workflows/benchmark.yml#L26 (MIT)
71-
- name: Install OS / deb dependencies
72-
if: ${{ matrix.python_version == 'pyjion' }}
73-
run: |
74-
sudo DEBIAN_FRONTEND=noninteractive apt-get update
75-
sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq cmake llvm-9 clang-9 autoconf automake \
76-
libtool build-essential python curl git lldb-6.0 liblldb-6.0-dev \
77-
libunwind8 libunwind8-dev gettext libicu-dev liblttng-ust-dev \
78-
libssl-dev libnuma-dev libkrb5-dev zlib1g-dev
79-
80-
- name: Setup Dotnet 6
81-
if: ${{ matrix.python_version == 'pyjion' }}
82-
uses: actions/setup-dotnet@v4.0.0
83-
with:
84-
dotnet-version: "6.0.100"
85-
8661
- name: Cache Python Dependencies
8762
uses: actions/cache@v4
8863
with:
@@ -91,11 +66,6 @@ jobs:
9166
restore-keys: |
9267
${{ runner.os }}-pip-
9368
94-
- name: Install Pyjion
95-
if: ${{ matrix.python_version == 'pyjion' }}
96-
run: |
97-
pip install pyjion
98-
9969
- name: Install Python Dependencies
10070
run: |
10171
pip install -r requirements-ci.txt
@@ -105,8 +75,7 @@ jobs:
10575
tox -e py${{ matrix.python_version }}
10676
10777
- name: Run dist install checks tox target
108-
# NOTE: 3.12 will be failing until we migrate away from setup.py
109-
if: ${{ matrix.python_version != 'pypy-3.7' && matrix.python_version != 'pypy-3.8' && matrix.python_version != 'pyjion' && matrix.python_version != '3.12-dev' }}
78+
if: ${{ matrix.python_version != 'pypy-3.9' && matrix.python_version != 'pypy-3.10' }}
11079
run: |
11180
tox -e py${{ matrix.python_version }}-dist,py${{ matrix.python_version }}-dist-wheel
11281
@@ -116,7 +85,7 @@ jobs:
11685

11786
strategy:
11887
matrix:
119-
python_version: [3.8]
88+
python_version: [3.9]
12089

12190
steps:
12291
- uses: actions/checkout@master
@@ -150,7 +119,7 @@ jobs:
150119
tox -e coverage-ci
151120
152121
- name: Upload Coverage to codecov.io
153-
uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0
122+
uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v5.4.0
154123
with:
155124
# We utilize secret for more realiable builds. Without secret being set, upload step
156125
# fails fairly often.
@@ -164,7 +133,7 @@ jobs:
164133

165134
strategy:
166135
matrix:
167-
python_version: [3.8]
136+
python_version: [3.9]
168137

169138
steps:
170139
- uses: actions/checkout@master
@@ -207,7 +176,7 @@ jobs:
207176

208177
strategy:
209178
matrix:
210-
python_version: [3.8]
179+
python_version: [3.9]
211180

212181
steps:
213182
- uses: actions/checkout@master
@@ -256,7 +225,7 @@ jobs:
256225
tar -xzvf "${TARBALL_FILENAME}"
257226
258227
cd "apache_libcloud-${VERSION}/"
259-
tox -epy3.8
228+
tox -c tox.ini -epy3.9
260229
261230
- name: Verify Wheel Release Artifact
262231
run: |
@@ -275,16 +244,16 @@ jobs:
275244
# repo root so we can run the tests
276245
cp ../../tox.ini .
277246
cp ../../requirements-tests.txt .
278-
cp ../../libcloud/test/secrets.py-dist libcloud/test/secrets.py
279-
tox -epy3.8
247+
cp ../../libcloud/test/secrets.py-dist libcloud/test/secrets.py-dist
248+
tox -c tox.ini -epy3.9
280249
281250
build_test_docker_image:
282251
name: Build and Verify Docker Image
283252
runs-on: ubuntu-latest
284253

285254
strategy:
286255
matrix:
287-
python_version: [3.8]
256+
python_version: [3.9]
288257

289258
steps:
290259
- uses: actions/checkout@master
@@ -308,7 +277,7 @@ jobs:
308277

309278
strategy:
310279
matrix:
311-
python_version: [3.8]
280+
python_version: [3.9]
312281

313282
steps:
314283
- uses: actions/checkout@master
@@ -376,7 +345,7 @@ jobs:
376345

377346
strategy:
378347
matrix:
379-
python_version: [3.8]
348+
python_version: [3.9]
380349

381350
steps:
382351
- uses: actions/checkout@master
@@ -415,7 +384,7 @@ jobs:
415384

416385
strategy:
417386
matrix:
418-
python_version: [3.8]
387+
python_version: [3.9]
419388

420389
steps:
421390
- name: Print Environment Info

.github/workflows/publish_dev_artifact.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
- name: Use Python ${{ matrix.python_version }}
3636
uses: actions/setup-python@v5
3737
with:
38-
python-version: 3.8
38+
python-version: 3.9
3939

4040
- name: Install Dependencies
4141
run: |

.github/workflows/publish_pricing_to_s3.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717

1818
strategy:
1919
matrix:
20-
python_version: [3.8]
20+
python_version: [3.9]
2121

2222
steps:
2323
- name: Print Environment Info

CHANGES.rst

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,17 @@ Changes in Apache Libcloud 3.9.0
77
Common
88
~~~~~~
99

10+
- Indicate we also support Python 3.12 (non beta) and Python 3.13.
11+
(#2050)
12+
[Tomaz Muraus - @Kami]
13+
14+
- Support for Python 3.8 which is EOL has been removed.
15+
16+
If you still want to use Libcloud with Python 3.8, you should use an older
17+
release which still supports Python 3.8.
18+
(#2050)
19+
[Tomaz Muraus - @Kami]
20+
1021
- Support for Python 3.7 which is EOL has been removed.
1122

1223
If you still want to use Libcloud with Python 3.7, you should use an older
@@ -97,6 +108,10 @@ Compute
97108
(#1983)
98109
[@cdfmlr]
99110

111+
- [Amazon S3] Add support for ``me-central-1`` region.
112+
(#2030)
113+
[@seifertdan]
114+
100115
Storage
101116
~~~~~~~
102117

@@ -124,6 +139,11 @@ Other / Development
124139
(#1994)
125140
[Tomaz Muraus - @Kami]
126141

142+
- Add a workaround so tests work with pytest >= 8.2. Also use latest version of
143+
pytest for running tests.
144+
(#2033)
145+
[Steve Kowalik - @s-t-e-v-e-n-k]
146+
127147
Changes in Apache Libcloud 3.8.0
128148
--------------------------------
129149

README.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@ through a unified and easy to use API.
5959
:Issues: https://issues.apache.org/jira/projects/LIBCLOUD/issues
6060
:Website: https://libcloud.apache.org/
6161
:Documentation: https://libcloud.readthedocs.io
62-
:Supported Python Versions: Python >= 3.8, PyPy >= 3.8, Python 3.10 + Pyjion
62+
:Supported Python Versions: Python >= 3.9, PyPy >= 3.9, Python 3.10 + Pyjion
6363
(Python 2.7 and Python 3.4 is supported by the
6464
v2.8.x release series, last version which supports
6565
Python 3.5 is v3.4.0, v3.6.x for Python 3.6, and
66-
v3.8.x for Python 3.7)
66+
v3.8.x for Python 3.7 and 3.8)
6767

6868
Resources you can manage with Libcloud are divided into the following categories:
6969

@@ -86,10 +86,10 @@ Documentation can be found at <https://libcloud.readthedocs.org>.
8686
Note on Python Version Compatibility
8787
====================================
8888

89-
Libcloud supports Python >= 3.8 and PyPy >= 3.8.
89+
Libcloud supports Python >= 3.9 and PyPy >= 3.9.
9090

91-
* Support for Python 3.7 has been dropped in v3.9.0 release.
92-
Last release series which supports Python 3.6 is v3.6.x.
91+
* Support for Python 3.7 and 3.8 has been dropped in v3.9.0 release.
92+
Last release series which supports Python 3.7 and 3.8 is v3.8.x.
9393
* Support for Python 3.6 has been dropped in v3.7.0 release.
9494
Last release series which supports Python 3.6 is v3.6.x.
9595
* Support for Python 3.5 has been dropped in v3.5.0 release.

contrib/Dockerfile

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,29 +29,27 @@ RUN set -e && \
2929
add-apt-repository ppa:pypy/ppa && \
3030
apt-get update && \
3131
apt-get -y install \
32-
python3.8 \
3332
python3.9 \
3433
python3.10 \
3534
python3.11 \
35+
python3.12 \
36+
python3.13 \
3637
python3-dev \
37-
python3.8-dev \
3838
python3.9-dev \
3939
python3.10-dev \
4040
python3.11-dev \
41-
python3.8-distutils \
42-
python3.9-distutils \
41+
python3.12-dev \
42+
python3.13-dev \
43+
# Uses 3.10
4344
pypy3 \
4445
pypy3-dev \
4546
python3-pip \
4647
python3-distutils \
48+
python3.9-distutils \
4749
libvirt-dev \
4850
# Needed by libvirt driver
49-
pkg-config \
50-
# Needed by cryptography library for pypy
51-
libssl-dev
51+
pkg-config
5252

53-
# Workaround for zipp import error issue - https://github.com/pypa/virtualenv/issues/1630
54-
RUN python3.8 -m pip install --upgrade pip
5553

5654
COPY . /libcloud
5755

@@ -60,6 +58,6 @@ RUN if [ ! -f "/libcloud/README.rst" ]; then echo "libcloud/README.rst file not
6058
WORKDIR /libcloud
6159

6260
RUN set -e && \
63-
python3.8 -m pip install --no-cache-dir -r requirements-ci.txt
61+
python3.9 -m pip install --no-cache-dir -r requirements-ci.txt
6462

65-
CMD ["tox", "-e", "lint,isort-check,black-check,bandit,py3.7,py3.8,py3.9,py3.10,py3.11,pypypy3.8"]
63+
CMD ["tox", "-e", "lint,isort-check,black-check,bandit,py3.9,py3.10,py3.11,py3.12,py3.13,pypypy3.10"]

contrib/generate_contributor_list.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,14 @@ def convert_to_markdown(contributors_map, include_tickets=False):
111111
def compare(item1, item2):
112112
lastname1 = item1.split(" ")[-1].lower()
113113
lastname2 = item2.split(" ")[-1].lower()
114+
114115
return (lastname1 > lastname2) - (lastname1 < lastname2)
115116

116117
names = contributors_map.keys()
117118
names = sorted(names, cmp=compare)
118119

119120
result = []
121+
120122
for name in names:
121123
tickets = contributors_map[name]
122124

@@ -125,6 +127,7 @@ def compare(item1, item2):
125127
for ticket in tickets:
126128
if "-" not in ticket:
127129
# Invalid ticket number
130+
128131
continue
129132

130133
number = ticket.split("-")[1]
@@ -133,6 +136,8 @@ def compare(item1, item2):
133136
url = JIRA_URL % (number)
134137
elif ticket.startswith("GITHUB-") or ticket.startswith("GH-"):
135138
url = GITHUB_URL % (number)
139+
else:
140+
url = None
136141

137142
values = {"ticket": ticket, "url": url}
138143
tickets_string.append("[%(ticket)s](%(url)s)" % values)
@@ -147,6 +152,7 @@ def compare(item1, item2):
147152
result.append(line.strip())
148153

149154
result = "\n".join(result)
155+
150156
return result
151157

152158

0 commit comments

Comments
 (0)