Skip to content

Commit 2d0f36e

Browse files
author
Christopher Rowley
committed
Merge remote-tracking branch 'origin/main' into v1
2 parents 956cd60 + ef6c404 commit 2d0f36e

19 files changed

Lines changed: 141 additions & 36 deletions

.github/workflows/docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
name: Documentation
1818
runs-on: ubuntu-latest
1919
steps:
20-
- uses: actions/checkout@v5
20+
- uses: actions/checkout@v6
2121
- uses: julia-actions/setup-julia@v2
2222
with:
2323
version: '1'

.github/workflows/docscleanup.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
runs-on: ubuntu-latest
1010
steps:
1111
- name: Checkout gh-pages branch
12-
uses: actions/checkout@v5
12+
uses: actions/checkout@v6
1313
with:
1414
ref: gh-pages
1515

.github/workflows/register-pypi.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
register:
1212
runs-on: ubuntu-latest
1313
steps:
14-
- uses: actions/checkout@v5
14+
- uses: actions/checkout@v6
1515
with:
1616
ref: ${{ inputs.git_ref }}
1717
- name: Set up Python

.github/workflows/tests-nightly.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ jobs:
1919
os: [ubuntu-latest, windows-latest, macos-latest]
2020
jlversion: ['~1.9.0-0', 'nightly']
2121
steps:
22-
- uses: actions/checkout@v5
22+
- uses: actions/checkout@v6
2323
- uses: julia-actions/setup-julia@v2
2424
with:
2525
version: ${{ inputs.jl_version }}
2626
arch: ${{ matrix.arch }}
27-
- uses: actions/cache@v4
27+
- uses: actions/cache@v5
2828
env:
2929
cache-name: cache-artifacts
3030
with:

.github/workflows/tests.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
pythonexe: python
3030

3131
steps:
32-
- uses: actions/checkout@v5
32+
- uses: actions/checkout@v6
3333

3434
- name: Set up Julia ${{ matrix.jlversion }}
3535
uses: julia-actions/setup-julia@v2
@@ -74,19 +74,19 @@ jobs:
7474
fail-fast: false
7575
matrix:
7676
os: [ubuntu-latest, windows-latest, macos-latest]
77-
pyversion: ['3.13', '3.10']
77+
pyversion: ['3', '3.10']
7878
juliaexe: ["@JuliaPkg"]
7979
include:
8080
- os: ubuntu-latest
81-
pyversion: '3.13'
81+
pyversion: '3'
8282
juliaexe: julia
8383
env:
8484
MANUAL_TEST_PROJECT: /tmp/juliacall-test-project
8585
PYTHON_JULIACALL_THREADS: '2'
8686
PYTHON_JULIACALL_HANDLE_SIGNALS: 'yes'
8787

8888
steps:
89-
- uses: actions/checkout@v5
89+
- uses: actions/checkout@v6
9090

9191
- name: Set up Python ${{ matrix.pyversion }}
9292
uses: actions/setup-python@v6

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@
2424
* `pyjltype(x)` removed.
2525
* New functions: `pyjlarray`, `pyjldict`, `pyjlset`.
2626

27+
## Unreleased
28+
* Added `juliacall.TypeValue.__numpy_dtype__` attribute to allow converting Julia types
29+
to the corresponding NumPy dtype, like `numpy.dtype(jl.Int)`.
30+
31+
## 0.9.31 (2025-12-17)
32+
* Restore support for Python 3.14+.
33+
2734
## 0.9.30 (2025-11-18)
2835
* Maximum supported Python version is now 3.13 ([see the FAQ](https://juliapy.github.io/PythonCall.jl/stable/faq/#faq-python-314) for why).
2936

CondaPkg.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@ version = "<=julia"
1010

1111
[deps.python]
1212
build = "**cpython**"
13-
version = ">=3.10,<3.14"
13+
version = ">=3.10,!=3.14.0,!=3.14.1,<4"
1414

1515
[dev.deps]
1616
matplotlib = ""
1717
numpy = ""
1818
pyside6 = ""
19-
python = "<3.14"

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "PythonCall"
22
uuid = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d"
33
authors = ["Christopher Doris <github.com/cjdoris>"]
4-
version = "0.9.30"
4+
version = "0.9.31"
55

66
[deps]
77
CondaPkg = "992eb4ea-22a4-4c89-a5bb-47a3300528ab"

docs/src/faq.md

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,5 @@
11
# FAQ & Troubleshooting
22

3-
## [Why is Python 3.14 not supported?](@id faq-python-314)
4-
5-
Python has always had a mechanism for detecting recursion errors (stack overflows).
6-
The heuristics for this have been made stricter in Python 3.14, which means that any
7-
system which uses a non-standard stack and calls Python from it is likely to crash.
8-
Julia is such a system because each task has its own stack.
9-
10-
There are discussions among Python developers about how to make the situation better but
11-
for now, PythonCall is highly likely to crash when using Python 3.14, so for the time
12-
being it is not supported.
13-
14-
See the discussion and linked GitHub issue here:
15-
https://discuss.python.org/t/python-3-14-0-is-incompatible-with-stack-switching-systems-what-do-we-do/104880.
16-
173
## [Can I use PythonCall and PyCall together?](@id faq-pycall)
184

195
Yes, you can use both PyCall and PythonCall in the same Julia session. This is platform-dependent:

docs/src/juliacall-reference.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ and ending with `__` (since these are Python special methods) or starting with `
7575
- `jl_eval(expr)`: If the object is a Julia `Module`, evaluates the given expression.
7676
- `jl_help()`: Display help for the object.
7777
- `jl_to_py()`: Convert to a Python object using the [usual conversion rules](@ref jl2py).
78+
- `__numpy_dtype__`: Special attribute which allows you to do `numpy.dtype(jl.Int)` for
79+
supported types - scalars, tuples and named tuples.
7880
`````
7981

8082
`````@customdoc

0 commit comments

Comments
 (0)