Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']

steps:
- name: Clone Lithops repository
Expand Down
2 changes: 1 addition & 1 deletion examples/call_async_cython.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

Commands to compile the function.py into function.so (Ubuntu):
cython3 -3 --embed -X always_allow_keywords=true -o function.c function.py
gcc -shared -o function.so -fPIC -I /usr/include/python3.9 function.c
gcc -shared -o function.so -fPIC -I /usr/include/python3.12 function.c

To make this example working, you have to delete funtion.py and rename
function.cpython-39-x86_64-linux-gnu.so -> function.so
Expand Down
2 changes: 1 addition & 1 deletion examples/function.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

Commands to compile the function.py into function.so (Ubuntu):
cython3 -3 --embed -X always_allow_keywords=true -o function.c function.py
gcc -shared -o function.so -fPIC -I /usr/include/python3.9 function.c
gcc -shared -o function.so -fPIC -I /usr/include/python3.12 function.c
"""


Expand Down
4 changes: 2 additions & 2 deletions lithops/serverless/backends/aliyun_fc/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@
BUILD_DIR = os.path.join(TEMP_DIR, 'AliyunRuntimeBuild')

AVAILABLE_PY_RUNTIMES = {
'3.9': 'python3.9',
'3.10': 'python3.10'
'3.10': 'python3.10',
'3.12': 'python3.12',
}

REQUIREMENTS_FILE = """
Expand Down
6 changes: 3 additions & 3 deletions lithops/serverless/backends/aws_lambda/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@
]

AVAILABLE_PY_RUNTIMES = {
'3.8': 'python3.8',
'3.9': 'python3.9',
'3.10': 'python3.10',
'3.11': 'python3.11',
'3.12': 'python3.12'
'3.12': 'python3.12',
'3.13': 'python3.13',
'3.14': 'python3.14',
}

USER_RUNTIME_PREFIX = 'lithops.user_runtimes'
Expand Down
2 changes: 1 addition & 1 deletion lithops/serverless/backends/azure_functions/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
'trigger': 'pub/sub'
}

AVAILABLE_PY_RUNTIMES = ['3.8', '3.9', '3.10', '3.11']
AVAILABLE_PY_RUNTIMES = ['3.10', '3.11', '3.12', '3.13', '3.14']

REQUIRED_AZURE_STORAGE_PARAMS = ('storage_account_name', 'storage_account_key')
REQUIRED_AZURE_FUNCTIONS_PARAMS = ('resource_group', 'region')
Expand Down
5 changes: 2 additions & 3 deletions lithops/serverless/backends/gcp_functions/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,11 @@
RUNTIME_MEMORY_OPTIONS = {128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768}

AVAILABLE_PY_RUNTIMES = {
'3.8': 'python38',
'3.9': 'python39',
'3.10': 'python310',
'3.11': 'python311',
'3.12': 'python312',
'3.13': 'python313'
'3.13': 'python313',
'3.14': 'python314',
}

USER_RUNTIMES_PREFIX = 'lithops.user_runtimes'
Expand Down
2 changes: 0 additions & 2 deletions lithops/serverless/backends/ibm_cf/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@
import os

AVAILABLE_PY_RUNTIMES = {
'3.8': 'docker.io/lithopscloud/ibmcf-python-v38',
'3.9': 'docker.io/lithopscloud/ibmcf-python-v39',
'3.10': 'docker.io/lithopscloud/ibmcf-python-v310',
'3.11': 'docker.io/lithopscloud/ibmcf-python-v311',
'3.12': 'docker.io/lithopscloud/ibmcf-python-v312'
Expand Down
2 changes: 0 additions & 2 deletions lithops/serverless/backends/openwhisk/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@
import os

AVAILABLE_PY_RUNTIMES = {
'3.8': 'docker.io/lithopscloud/openwhisk-python-v38',
'3.9': 'docker.io/lithopscloud/openwhisk-python-v39',
'3.10': 'docker.io/lithopscloud/openwhisk-python-v310',
'3.11': 'docker.io/lithopscloud/openwhisk-python-v311',
'3.12': 'docker.io/lithopscloud/openwhisk-python-v312'
Expand Down
2 changes: 1 addition & 1 deletion lithops/serverless/backends/oracle_f/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
ENTRYPOINT ["/usr/local/bin/fdk", "handler/entry_point.py", "handler"]
"""

AVAILABLE_PY_RUNTIMES = ['3.8', '3.9', '3.11']
AVAILABLE_PY_RUNTIMES = ['3.11', '3.12']

REQ_PARAMS_1 = ('compartment_id', 'user', 'key_file', 'region', 'tenancy', 'fingerprint')
REQ_PARAMS_2 = ('subnet_id', )
Expand Down
4 changes: 2 additions & 2 deletions runtime/aliyun_fc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

The runtime is the place where your functions are executed. The default runtime is automatically created the first time you execute a function. Lithops automatically detects the Python version of your environment and deploys the default runtime based on it.

Currently, Aliyun Functions Compute supports Python 3.9 and 3.10. You can find the list of pre-installed modules [here](https://www.alibabacloud.com/help/en/function-compute/latest/python-event-functions). In addition, the Lithops default runtimes are built with the packages included in this [requirements.txt](requirements.txt) file:
Currently, Aliyun Function Compute supports Python 3.10 and 3.12 (3.12 is in public preview). You can find the list of pre-installed modules [here](https://www.alibabacloud.com/help/en/function-compute/latest/python-event-functions). In addition, the Lithops default runtimes are built with the packages included in this [requirements.txt](requirements.txt) file:

To run a function with the default runtime you don't need to specify anything in the code, since everything is handled internally by Lithops:

Expand Down Expand Up @@ -55,4 +55,4 @@ res = lith.get_result()
print(res)
```

Note that both the client and the runtime must have the same Python version. If you are running Lithops, for example, with Python 3.8, `my_matplotlib_runtime` will be a Python 3.8 runtime with the extra modules specified installed.
Note that both the client and the runtime must have the same Python version. If you are running Lithops, for example, with Python 3.10, `my_matplotlib_runtime` will be a Python 3.10 runtime with the extra modules specified installed.
2 changes: 1 addition & 1 deletion runtime/aws_lambda/Dockerfile.arm64
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM public.ecr.aws/lambda/python:3.8-arm64
FROM public.ecr.aws/lambda/python:3.12-arm64

RUN apt-get update \
&& apt-get install -y --no-install-recommends \
Expand Down
4 changes: 2 additions & 2 deletions runtime/aws_lambda/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ The runtime is the place where your functions are executed.
AWS Lambda provides two methods for packaging the function code and dependencies of a runtime:

## Using predefined **runtimes** and **layers**
An AWS Lambda *runtime* is a predefined environment to run code on Lambda. For example, for Lithops we use runtimes for Python >= 3.8 that come with already preinstalled modules. A *layer* is a set of packaged dependencies that can be used by multiple runtimes. For example, Lithops dependencies are deployed as a layer, so if multiple runtimes are created with different memory values, they can mount the same layer containing the dependencies, instead
An AWS Lambda *runtime* is a predefined environment to run code on Lambda. For example, for Lithops we use runtimes for Python 3.10 through 3.14 that come with already preinstalled modules. A *layer* is a set of packaged dependencies that can be used by multiple runtimes. For example, Lithops dependencies are deployed as a layer, so if multiple runtimes are created with different memory values, they can mount the same layer containing the dependencies, instead
of deploying them separately for each runtime.

[In this link](https://gist.github.com/gene1wood/4a052f39490fae00e0c3#gistcomment-3131227) you can find which modules are preinstalled by default in an AWS Lambda Python runtime. Moreover, Lithops runtime also ships with the following packages:
Expand Down Expand Up @@ -58,7 +58,7 @@ To build your own runtime, first install [Docker CE](https://docs.docker.com/get
Update the [template Dockerfile](Dockerfile) that better fits to your requirements with your required system packages and Python modules.
You can add a container layer (`RUN ...`) to install additional Python modules using `pip` or system libraries using `apt`, or even change to an older or newer Python version.

If you plan to use the **ARM64** architecture, you should consider creating a new dockerfile with an arm image from [https://gallery.ecr.aws/lambda/python](https://gallery.ecr.aws/lambda/python), in the tab "image tags". For example, you should start the dockerfile with the line `FROM public.ecr.aws/lambda/python:3.9-arm64`
If you plan to use the **ARM64** architecture, you should consider creating a new dockerfile with an arm image from [https://gallery.ecr.aws/lambda/python](https://gallery.ecr.aws/lambda/python), in the tab "image tags". For example, you should start the dockerfile with the line `FROM public.ecr.aws/lambda/python:3.12-arm64`

Then, to build the custom runtime, use `lithops runtime build` CLI specifying the modified `Dockerfile` file and a runtime name.
Note that you only need to specify the container name: `my-container-runtime-name`.
Expand Down
11 changes: 4 additions & 7 deletions runtime/azure_containers/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@


# Python 3.8
#FROM python:3.8-slim-bookworm
# Python 3.12
FROM python:3.12-slim-bookworm

# Python 3.9
FROM python:3.9-slim-bookworm

# Python 3.10
#FROM python:3.10-slim-bookworm
# Python 3.13
#FROM python:3.13-slim-bookworm

RUN apt-get update && apt-get install -y \
zip \
Expand Down
4 changes: 2 additions & 2 deletions runtime/azure_functions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

The runtime is the place where your functions are executed. The default runtime is automatically created the first time you execute a function. Lithops automatically detects the Python version of your environment and deploys the default runtime based on it.

Currently, Azure Functions supports Python 3.8, 3.9, 3.10 and 3.11. You can find the list of pre-installed modules [here](https://github.com/Azure/azure-functions-python-worker/wiki/Preinstalled-Python-Libraries). In addition, the Lithops default runtimes are built with the packages included in this [requirements.txt](requirements.txt) file
Currently, Azure Functions supports Python 3.10, 3.11, 3.12, 3.13 and 3.14 (3.14 is in preview). You can find the list of pre-installed modules [here](https://github.com/Azure/azure-functions-python-worker/wiki/Preinstalled-Python-Libraries). In addition, the Lithops default runtimes are built with the packages included in this [requirements.txt](requirements.txt) file

To run a function with the default runtime you don't need to specify anything in the code, since everything is handled internally by Lithops:

Expand Down Expand Up @@ -54,4 +54,4 @@ res = lith.get_result()
print(res)
```

Note that both the client and the runtime must have the same python version. If you are running Lithops, for example, with Python 3.8, the `matplotlib-runtime` will be a Python 3.8 runtime with the extra modules specified installed.
Note that both the client and the runtime must have the same python version. If you are running Lithops, for example, with Python 3.12, the `matplotlib-runtime` will be a Python 3.12 runtime with the extra modules specified installed.
11 changes: 4 additions & 7 deletions runtime/code_engine/Dockerfile.opencv
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@


# Python 3.8
FROM python:3.8-slim-bookworm
# Python 3.12
FROM python:3.12-slim-bookworm

# Python 3.9
#FROM python:3.9-slim-bookworm

# Python 3.10
#FROM python:3.10-slim-bookworm
# Python 3.13
#FROM python:3.13-slim-bookworm

RUN apt-get update \
# add some packages required for the pip install
Expand Down
2 changes: 2 additions & 0 deletions runtime/gcp_functions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ You can check supported runtimes and language details in the Cloud Run functions
- [Runtime support](https://docs.cloud.google.com/functions/docs/runtime-support)
- [Python dependencies](https://docs.cloud.google.com/run/docs/runtimes/python-dependencies)

Cloud Run functions currently supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.

In addition, the Lithops default runtimes are built with the packages included in this [requirements.txt](requirements.txt) file:

The default runtime is created automatically the first time you execute a function. Lithops automatically detects the Python version of your environment and deploys the default runtime based on it. In this sense, to run a function with the default runtime you don't need to specify anything in the code, since everything is managed internally by Lithops:
Expand Down
2 changes: 1 addition & 1 deletion runtime/openwhisk/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Lithops runtime for OpenWhisk

The runtime is the place where your functions are executed. In Lithops, runtimes are based on docker images, and it includes default runtimes that allow you to run functions with Python >= 3.8 environments. Lithops main runtime is responsible to execute Python functions within OpenWhisk. The strong requirement here is to match Python versions between the client and the runtime. The runtime may also contain additional packages which your code depends on.
The runtime is the place where your functions are executed. In Lithops, runtimes are based on docker images, and it includes default runtimes that allow you to run functions with Python >= 3.10 environments. Lithops main runtime is responsible to execute Python functions within OpenWhisk. The strong requirement here is to match Python versions between the client and the runtime. The runtime may also contain additional packages which your code depends on.


The default runtime is created the first time you execute a function. Lithops automatically detects the Python version of your environment and deploys the default runtime based on it.
Expand Down
8 changes: 4 additions & 4 deletions runtime/oracle_f/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@


# Python 3.8
#FROM python:3.8-slim-bookworm
# Python 3.12
FROM python:3.12-slim-bookworm

# Python 3.9
FROM python:3.9-slim-bookworm
# Python 3.11
#FROM python:3.11-slim-bookworm

RUN apt-get update \
&& apt-get install -y \
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,11 @@
'Operating System :: OS Independent',
'Natural Language :: English',
'License :: OSI Approved :: Apache Software License',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
'Programming Language :: Python :: 3.13',
'Programming Language :: Python :: 3.14',
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: Scientific/Engineering',
'Topic :: System :: Distributed Computing',
Expand Down
Loading