Skip to content

Commit 28f1d94

Browse files
pjbullCopilot
andauthored
WIP Support 3.14 (#530)
* Update for 3.14 * 314 updates * lint * Add changelog * WIP * format * update tests * update uv action * updates to run 3.14 * don't use bash conditionals * Don't clean within venv * only use uv python * use latest * use uv python * Update to 3.12 for single version ci tasks * Code coverage * Update cloudpathlib/cloudpath_info.py Co-authored-by: Copilot <[email protected]> * don't clean venv * pin pathlib-abc * update CI no pre * remove pathinfo * release and deps --------- Co-authored-by: Copilot <[email protected]>
1 parent fec5918 commit 28f1d94

File tree

19 files changed

+652
-124
lines changed

19 files changed

+652
-124
lines changed

.github/workflows/docs-master.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
- name: Set up Python
1717
uses: actions/setup-python@v4
1818
with:
19-
python-version: 3.11
19+
python-version: 3.12
2020
cache: "pip" # caching pip dependencies
2121
cache-dependency-path: |
2222
pyproject.toml

.github/workflows/docs-preview.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
- name: Set up Python
1515
uses: actions/setup-python@v4
1616
with:
17-
python-version: 3.11
17+
python-version: 3.12
1818
cache: "pip" # caching pip dependencies
1919
cache-dependency-path: |
2020
pyproject.toml

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
- name: Set up Python
1717
uses: actions/setup-python@v4
1818
with:
19-
python-version: 3.11
19+
python-version: 3.12
2020

2121
- name: Install dependencies
2222
run: |

.github/workflows/tests.yml

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ jobs:
1818
- uses: actions/checkout@v4
1919

2020
- name: Set up Python and uv
21-
uses: drivendataorg/setup-python-uv-action@v1
21+
uses: astral-sh/setup-uv@v6
2222
with:
23-
python-version: "3.11"
23+
activate-environment: true
24+
python-version: "3.12"
2425

2526
- name: Install dependencies
2627
run: |
@@ -37,25 +38,29 @@ jobs:
3738
strategy:
3839
matrix:
3940
os: [ubuntu-latest, macos-latest, windows-latest]
40-
python-version: [3.9, "3.10", "3.11", "3.12", "3.13"]
41+
python-version: [3.9, "3.10", "3.11", "3.12", "3.13", "3.14"]
42+
env:
43+
UV_MANAGED_PYTHON: true
4144

4245
steps:
4346
- uses: actions/checkout@v4
4447

4548
- name: Set up Python and uv
46-
uses: drivendataorg/setup-python-uv-action@v1
49+
uses: astral-sh/setup-uv@v6
4750
with:
4851
python-version: ${{ matrix.python-version }}
52+
activate-environment: true
53+
enable-cache: true
4954

50-
- name: Install dependencies
55+
- name: Install dependencies (other Python versions)
5156
run: |
5257
uv pip install -r requirements-dev.txt
5358
5459
- name: Run mocked tests
5560
run: |
5661
make test
5762
58-
- name: Build distribution and test installation
63+
- name: Build distribution and test installation (other Python versions)
5964
shell: bash
6065
run: |
6166
make dist
@@ -81,9 +86,10 @@ jobs:
8186
- uses: actions/checkout@v4
8287

8388
- name: Set up Python and uv
84-
uses: drivendataorg/setup-python-uv-action@v1
89+
uses: astral-sh/setup-uv@v6
8590
with:
86-
python-version: "3.11"
91+
python-version: "3.12"
92+
activate-environment: true
8793

8894
- name: Install dependencies
8995
run: |
@@ -141,9 +147,10 @@ jobs:
141147
- uses: actions/checkout@v4
142148

143149
- name: Set up Python and uv
144-
uses: drivendataorg/setup-python-uv-action@v1
150+
uses: astral-sh/setup-uv@v6
145151
with:
146-
python-version: "3.11"
152+
python-version: "3.12"
153+
activate-environment: true
147154

148155
- name: Build cloudpathlib
149156
run: |

HISTORY.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# cloudpathlib Changelog
22

3+
## v0.23.0 (2025-10-07)
4+
5+
- Added support for Python 3.14 (Issue [#529](https://github.com/drivendataorg/cloudpathlib/issues/529), PR [#530](https://github.com/drivendataorg/cloudpathlib/pull/530))
6+
- Changed `CloudPath.copy` to have the first parameter named `target` instead of `destination` and added new `follow_symlinks` and `preserve_metadata` kwargs. **Breaking change for users that relied on the first parameter being named `destination` instead of `target`.**
7+
- Added `CloudPath.copy_into` to copy a file or directory into another file or directory.
8+
- Added `CloudPath.move` to move a file or directory to another location.
9+
- Added `CloudPath.move_into` to move a file or directory into another file or directory.
10+
- Added `CloudPathInfo` and `CloudPath.info` to get information about a file or directory.
11+
- Added additional no-op kwargs to `mkdir`, `touch`, `glob`, `rglob`, `stat` to match pathlib.
12+
313
## v0.22.0 (2025-08-29)
414

515
- Fixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue [#390](https://github.com/drivendataorg/cloudpathlib/issues/390), PR [#514](https://github.com/drivendataorg/cloudpathlib/pull/514), thanks @ljyanesm)

Makefile

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ clean-build: ## remove build artifacts
1818
rm -fr build/
1919
rm -fr dist/
2020
rm -fr .eggs/
21-
find . -name '*.egg-info' -exec rm -fr {} +
22-
find . -name '*.egg' -exec rm -f {} +
21+
find . -path ./.venv -prune -o -name '*.egg-info' -exec rm -fr {} +
22+
find . -path ./.venv -prune -o -name '*.egg' -exec rm -rf {} +
2323

2424
clean-pyc: ## remove Python file artifacts
25-
find . -name '*.pyc' -exec rm -f {} +
26-
find . -name '*.pyo' -exec rm -f {} +
27-
find . -name '*~' -exec rm -f {} +
28-
find . -name '__pycache__' -exec rm -fr {} +
25+
find . -path ./.venv -prune -o -name '*.pyc' -exec rm -f {} +
26+
find . -path ./.venv -prune -o -name '*.pyo' -exec rm -f {} +
27+
find . -path ./.venv -prune -o -name '*~' -exec rm -f {} +
28+
find . -path ./.venv -prune -o -name '__pycache__' -exec rm -fr {} +
2929

3030
clean-test: ## remove test and coverage artifacts
3131
rm -fr .tox/

cloudpathlib/azure/azblobpath.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import os
22
from pathlib import Path
33
from tempfile import TemporaryDirectory
4-
from typing import TYPE_CHECKING
4+
from typing import Any, Optional, TYPE_CHECKING
55

66
from cloudpathlib.exceptions import CloudPathIsADirectoryError
77

@@ -39,10 +39,10 @@ class AzureBlobPath(CloudPath):
3939
def drive(self) -> str:
4040
return self.container
4141

42-
def mkdir(self, parents=False, exist_ok=False):
42+
def mkdir(self, parents=False, exist_ok=False, mode: Optional[Any] = None):
4343
self.client._mkdir(self, parents=parents, exist_ok=exist_ok)
4444

45-
def touch(self, exist_ok: bool = True):
45+
def touch(self, exist_ok: bool = True, mode: Optional[Any] = None):
4646
if self.exists():
4747
if not exist_ok:
4848
raise FileExistsError(f"File exists: {self}")
@@ -56,7 +56,7 @@ def touch(self, exist_ok: bool = True):
5656

5757
tf.cleanup()
5858

59-
def stat(self):
59+
def stat(self, follow_symlinks=True):
6060
try:
6161
meta = self.client._get_metadata(self)
6262
except ResourceNotFoundError:

0 commit comments

Comments
 (0)