Skip to content

Commit e7fdefd

Browse files
authored
Merge branch 'trunk' into rcode0-driver-types-fix
2 parents 4ccf1ea + a31b66d commit e7fdefd

Some content is hidden

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

78 files changed

+64094
-50929
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: 89 additions & 43 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/[email protected]
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
@@ -201,13 +170,90 @@ jobs:
201170
run: |
202171
tox -e black-check,isort-check,pyupgrade,checks,import-timings,lint,pylint,mypy
203172
173+
build_test_release_artifact:
174+
name: Build and Test Release Artifact
175+
runs-on: ubuntu-latest
176+
177+
strategy:
178+
matrix:
179+
python_version: [3.9]
180+
181+
steps:
182+
- uses: actions/checkout@master
183+
with:
184+
fetch-depth: 1
185+
186+
- name: Use Python ${{ matrix.python_version }}
187+
uses: actions/setup-python@v5
188+
with:
189+
python-version: ${{ matrix.python_version }}
190+
191+
- name: Cache Python Dependencies
192+
uses: actions/cache@v4
193+
with:
194+
path: ~/.cache/pip
195+
key: ${{ runner.os }}-pip-${{ hashFiles('requirements-lint.txt') }}
196+
restore-keys: |
197+
${{ runner.os }}-pip-
198+
199+
- name: Install Python Dependencies
200+
run: |
201+
pip install -r requirements-ci.txt
202+
pip install "build==1.2.2"
203+
204+
- name: Build Release Artifact
205+
run: |
206+
pip list installed
207+
python -m build -vv
208+
209+
- name: Set Environment
210+
run: |
211+
export PYTHONPATH=.
212+
export VERSION=$(python -c "import libcloud ; print(libcloud.__version__)")
213+
echo "VERSION=${VERSION}" >> "$GITHUB_ENV"
214+
215+
- name: Verify Tarball Release Artifact
216+
run: |
217+
# Verify tarball file exists
218+
export TARBALL_FILENAME="apache_libcloud-${VERSION}.tar.gz"
219+
220+
ls -la "dist/${TARBALL_FILENAME}"
221+
222+
cd dist/
223+
224+
# Unpack tarball and verify + run the tests
225+
tar -xzvf "${TARBALL_FILENAME}"
226+
227+
cd "apache_libcloud-${VERSION}/"
228+
tox -c tox.ini -epy3.9
229+
230+
- name: Verify Wheel Release Artifact
231+
run: |
232+
# Verify wheel file exists
233+
export WHEEL_FILENAME="apache_libcloud-${VERSION}-py3-none-any.whl"
234+
235+
ls -la "dist/${WHEEL_FILENAME}"
236+
237+
cd dist/
238+
239+
# Unpack wheel and verify + run tests
240+
unzip "${WHEEL_FILENAME}" -d "wheel"
241+
cd wheel
242+
243+
# Since wheel doesn't include those files, we need to manually copy them over from
244+
# repo root so we can run the tests
245+
cp ../../tox.ini .
246+
cp ../../requirements-tests.txt .
247+
cp ../../libcloud/test/secrets.py-dist libcloud/test/secrets.py-dist
248+
tox -c tox.ini -epy3.9
249+
204250
build_test_docker_image:
205251
name: Build and Verify Docker Image
206252
runs-on: ubuntu-latest
207253

208254
strategy:
209255
matrix:
210-
python_version: [3.8]
256+
python_version: [3.9]
211257

212258
steps:
213259
- uses: actions/checkout@master
@@ -231,7 +277,7 @@ jobs:
231277

232278
strategy:
233279
matrix:
234-
python_version: [3.8]
280+
python_version: [3.9]
235281

236282
steps:
237283
- uses: actions/checkout@master
@@ -299,7 +345,7 @@ jobs:
299345

300346
strategy:
301347
matrix:
302-
python_version: [3.8]
348+
python_version: [3.9]
303349

304350
steps:
305351
- uses: actions/checkout@master
@@ -338,7 +384,7 @@ jobs:
338384

339385
strategy:
340386
matrix:
341-
python_version: [3.8]
387+
python_version: [3.9]
342388

343389
steps:
344390
- name: Print Environment Info

.github/workflows/publish_dev_artifact.yml

Lines changed: 12 additions & 3 deletions
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: |
@@ -51,11 +51,20 @@ jobs:
5151
ls -la dist | grep .tar.gz
5252
ls -la dist | grep .whl
5353
54-
- name: Store dev artifacts
54+
- name: Store dev artifacts - .tar.gz
5555
uses: actions/upload-artifact@v4
5656
with:
57-
name: libcloud-dev-artifacts
57+
name: libcloud-dev-tarball
5858
retention-days: 60
59+
compression-level: 0
5960
path: |
6061
dist/*.tar.gz
62+
63+
- name: Store dev artifacts - .whl
64+
uses: actions/upload-artifact@v4
65+
with:
66+
name: libcloud-dev-wheel
67+
retention-days: 60
68+
compression-level: 0
69+
path: |
6170
dist/*.whl

.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

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ coverage.xml
1515
.idea
1616
dist/*apache-libcloud*
1717
dist/*apache_libcloud*
18+
dist/wheel
1819
docs/apidocs/*
1920
_build/
2021
apache_libcloud.egg-info/

CHANGES.rst

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

10+
- Unused ``setup.py`` file has been removed. The project has switched
11+
to ``pyproject.toml`` a while ago and unused file has been removed to
12+
reduce potential confusion.
13+
(#2024)
14+
[Tomaz Muraus - @Kami]
15+
16+
- Indicate we also support Python 3.12 (non beta) and Python 3.13.
17+
(#2050)
18+
[Tomaz Muraus - @Kami]
19+
20+
- Support for Python 3.8 which is EOL has been removed.
21+
22+
If you still want to use Libcloud with Python 3.8, you should use an older
23+
release which still supports Python 3.8.
24+
(#2050)
25+
[Tomaz Muraus - @Kami]
26+
1027
- Support for Python 3.7 which is EOL has been removed.
1128

1229
If you still want to use Libcloud with Python 3.7, you should use an older
@@ -25,9 +42,24 @@ Common
2542
(#1940)
2643
[@munahaf on behalf of OpenRefactory and Open Source Security Foundation]
2744

45+
- Update versions of build and packaging tools required to build the package.
46+
47+
Per report from Rui Chen (@chenrui333) ansible homebrew package which
48+
depends on libcloud was failing to build with Libcloud 3.8.0.
49+
50+
Special thanks to Rui Chen for their assistance with troubleshooting the issue
51+
and testing v3.9.0 release candidate.
52+
(#2047)
53+
[Tomaz Muraus - @Kami, Rui Chen - @chenrui333]
54+
2855
Compute
2956
~~~~~~~
3057

58+
- [OpenStack] Add optional node port ID to attach the floating IP in OpenStack
59+
ex_attach_floating_ip_to_node function.
60+
(#2028)
61+
[Miguel Caballer - @micafer]
62+
3163
- [OpenStack] Add metadata fields ``os_distro`` and ``os_version`` provided
3264
by OpenStack Image API (if set) to the ``extra`` field of the OpenStack NodeImage.
3365
(#1982)
@@ -97,6 +129,10 @@ Compute
97129
(#1983)
98130
[@cdfmlr]
99131

132+
- [Amazon S3] Add support for ``me-central-1`` region.
133+
(#2030)
134+
[@seifertdan]
135+
100136
Storage
101137
~~~~~~~
102138

@@ -124,6 +160,11 @@ Other / Development
124160
(#1994)
125161
[Tomaz Muraus - @Kami]
126162

163+
- Add a workaround so tests work with pytest >= 8.2. Also use latest version of
164+
pytest for running tests.
165+
(#2033)
166+
[Steve Kowalik - @s-t-e-v-e-n-k]
167+
127168
Changes in Apache Libcloud 3.8.0
128169
--------------------------------
129170

0 commit comments

Comments
 (0)