Skip to content

Commit d4044b1

Browse files
committed
[GR-57413] Cleanup of exposed embedding APIs.
PullRequest: graalpython/3633
2 parents 2aa7ac9 + 2b61675 commit d4044b1

File tree

28 files changed

+2891
-465
lines changed

28 files changed

+2891
-465
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ language runtime. The main focus is on user-observable behavior of the engine.
2121
* Remove experimental `SetupLLVMLibraryPaths` option. It was used to pre-set library path for LLVM toolchain's libc++. The path can still be set manually.
2222
* Added `GRAALPY_VERSION` and `GRAALPY_VERSION_NUM` C macros
2323
* Added experimental `python.IsolateNativeModules` option to allow loading native extensions multiple times in different contexts. See [the documentation](https://github.com/oracle/graalpython/blob/master/docs/user/Native-Extensions.md) for more information.
24+
* GraalPy Embedding:
25+
* Introduced new types: KeywordArguments and PositionalArguments, in the GraalPy Embedding library (org.graalvm.python:python-embedding), to support directly passing [keyword and positional arguments](https://docs.python.org/3/glossary.html#term-argument) from Java to Python.
26+
* Deprecated the org.graalvm.python.embedding.util API package and added new equivalents to org.graalvm.python.embedding
27+
* Maven and Gradle plugins do not embed Python home into the generated virtual filesystem. Instead, the handling of language home for any Truffle language, including GraalPy, for the GraalVM Native Image build can be controlled by new Native Image options +H:IncludeLanguageResources and +H:CopyLanguageResources. By default, the whole Python home is embedded into the native executable. In the case of JVM deployment, the language home is embedded in the GraalPy artifacts at Mavencentral.
28+
* Removed deprecated methods in VirtualFileSystem
2429

2530
## Version 24.1.0
2631
* GraalPy is now considered stable for pure Python workloads. While many workloads involving native extension modules work, we continue to consider them experimental. You can use the command-line option `--python.WarnExperimentalFeatures` to enable warnings for such modules at runtime. In Java embeddings the warnings are enabled by default and you can suppress them by setting the context option 'python.WarnExperimentalFeatures' to 'false'.

docs/user/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ In order to distribute the resulting application for other systems, follow these
147147
package interop;
148148
149149
import org.graalvm.polyglot.*;
150-
import org.graalvm.python.embedding.utils.GraalPyResources;
150+
import org.graalvm.python.embedding.GraalPyResources;
151151
152152
class App {
153153
...

graalpython/com.oracle.graal.python.test.integration/src/com/oracle/graal/python/test/integration/interop/ArgumentsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2024, 2025, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2024, 2025, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -38,11 +38,11 @@
3838
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3939
* SOFTWARE.
4040
*/
41-
package org.graalvm.python.embedding.utils.test.integration;
41+
package org.graalvm.python.embedding.test.integration;
4242

4343
import org.graalvm.polyglot.Engine;
44-
import org.graalvm.python.embedding.utils.GraalPyResources;
45-
import org.graalvm.python.embedding.utils.VirtualFileSystem;
44+
import org.graalvm.python.embedding.GraalPyResources;
45+
import org.graalvm.python.embedding.VirtualFileSystem;
4646
import org.junit.Test;
4747

4848
import java.nio.file.Path;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
* Copyright (c) 2024, 2025, Oracle and/or its affiliates. All rights reserved.
3+
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
*
5+
* The Universal Permissive License (UPL), Version 1.0
6+
*
7+
* Subject to the condition set forth below, permission is hereby granted to any
8+
* person obtaining a copy of this software, associated documentation and/or
9+
* data (collectively the "Software"), free of charge and under any and all
10+
* copyright rights in the Software, and any and all patent rights owned or
11+
* freely licensable by each licensor hereunder covering either (i) the
12+
* unmodified Software as contributed to or provided by such licensor, or (ii)
13+
* the Larger Works (as defined below), to deal in both
14+
*
15+
* (a) the Software, and
16+
*
17+
* (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if
18+
* one is included with the Software each a "Larger Work" to which the Software
19+
* is contributed by such licensors),
20+
*
21+
* without restriction, including without limitation the rights to copy, create
22+
* derivative works of, display, perform, and distribute the Software and make,
23+
* use, sell, offer for sale, import, export, have made, and have sold the
24+
* Software and the Larger Work(s), and to sublicense the foregoing rights on
25+
* either these or other terms.
26+
*
27+
* This license is subject to the following condition:
28+
*
29+
* The above copyright notice and either this complete permission notice or at a
30+
* minimum a reference to the UPL must be included in all copies or substantial
31+
* portions of the Software.
32+
*
33+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
34+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
35+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
36+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
37+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
38+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
39+
* SOFTWARE.
40+
*/
41+
package org.graalvm.python.embedding.test.integration;
42+
43+
import org.graalvm.polyglot.Engine;
44+
import org.graalvm.python.embedding.utils.GraalPyResources;
45+
import org.graalvm.python.embedding.utils.VirtualFileSystem;
46+
import org.junit.Test;
47+
48+
import java.nio.file.Path;
49+
50+
/**
51+
* Siple copy of GraalPyResourcesTests to test also the deprecated
52+
* org.graalvm.python.embedding.utils pkg
53+
*/
54+
public class GraalPyResourcesUtilsTests {
55+
56+
@Test
57+
public void sharedEngine() {
58+
// simply check if we are able to create a context with a shared engine
59+
Engine sharedEngine = Engine.newBuilder().build();
60+
GraalPyResources.contextBuilder().engine(sharedEngine).build().close();
61+
GraalPyResources.contextBuilder().engine(sharedEngine).build().close();
62+
GraalPyResources.contextBuilder(Path.of("test")).engine(sharedEngine).build().close();
63+
GraalPyResources.contextBuilder(VirtualFileSystem.newBuilder().build()).engine(sharedEngine).build().close();
64+
}
65+
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2023, 2025, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -39,16 +39,16 @@
3939
* SOFTWARE.
4040
*/
4141

42-
package org.graalvm.python.embedding.utils.test.integration;
42+
package org.graalvm.python.embedding.test.integration;
4343

4444
import org.graalvm.polyglot.Context;
4545
import org.graalvm.polyglot.Context.Builder;
4646
import org.graalvm.polyglot.HostAccess;
4747
import org.graalvm.polyglot.PolyglotException;
4848
import org.graalvm.polyglot.Value;
4949
import org.graalvm.polyglot.io.IOAccess;
50-
import org.graalvm.python.embedding.utils.GraalPyResources;
51-
import org.graalvm.python.embedding.utils.VirtualFileSystem;
50+
import org.graalvm.python.embedding.GraalPyResources;
51+
import org.graalvm.python.embedding.VirtualFileSystem;
5252
import org.junit.Test;
5353

5454
import java.io.BufferedReader;

0 commit comments

Comments
 (0)