Script-Languages-Container-Tool
===============================
.. image:: https://github.com/exasol/script-languages-container-tool/actions/workflows/main.yml/badge.svg?branch=main
:target: https://github.com/exasol/script-languages-container-tool/actions/workflows/ci.yml
:alt: Checks main
.. image:: https://img.shields.io/pypi/dm/exasol-script-languages-container-tool
:target: https://pypi.org/project/exasol-script-languages-container-tool/
:alt: Downloads
.. image:: https://img.shields.io/pypi/v/exasol-script-languages-container-tool
:target: https://pypi.org/project/exasol-script-languages-container-tool/
:alt: PyPI Version
.. image:: https://img.shields.io/pypi/pyversions/exasol-script-languages-container-tool
:target: https://pypi.org/project/sexasol-script-languages-container-tool
:alt: PyPI - Python Version
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/psf/black
:alt: Formatter - Black
.. image:: https://img.shields.io/badge/imports-isort-ef8336.svg
:target: https://pycqa.github.io/isort/
:alt: Formatter - Isort
.. image:: https://img.shields.io/pypi/l/exasol-script-languages-container-tool
:target: https://opensource.org/license/MIT
:alt: License
.. image:: https://img.shields.io/github/last-commit/exasol/script-languages-container-tool
:target: https://github.com/exasol/script-languages-container-tool
:alt: Last Commit
Overview
--------
The Script-Languages-Container-Tool (exaslct) is the build tool for the
script language container. You can build, export and upload
script-language container from so-called flavors which are description
how to build the script language container. You can find pre-defined
flavors in the
`script-languages-release <https://github.com/exasol/script-languages-release>`__
repository. There we also described how you could customize these
flavors to your needs.
In a Nutshell
-------------
Prerequisites
~~~~~~~~~~~~~
**Note**: Since version 1.0.0 the “starter scripts” shipped with
previous version, which pulled the ``exaslct`` docker container runtime,
were removed. If you can’t use Python3, you still can use our
`AI-lab <https://github.com/exasol/ai-lab>`__ which provides VM images,
AMI images and a Docker images, all capable of building
script-language-container.
For running
^^^^^^^^^^^
In order to use this tool, your system needs to fulfill the following
prerequisites:
- Software
- Linux
- Python3 >= 3.10
- `Docker <https://docs.docker.com/>`__ >= 17.05
- with support for `multi-stage builds
required <https://docs.docker.com/build/building/multi-stage/>`__
- host volume mounts need to be allowed
- System Setup
- We recommend at least 50 GB free disk space on the partition where
Docker stores its images, on linux Docker typically stores the
images at /var/lib/docker.
- For the partition where the output directory (default:
./.build_output) is located we recommend additionally at least 10 GB
free disk space.
Further, prerequisites might be necessary for specific tasks. These are
listed under the corresponding section.
Installation
~~~~~~~~~~~~
In general, it’s good practice to install the package in a virtual
environment, using ``venv`` or ``Poetry``.
Pip via PyPi
^^^^^^^^^^^^
.. code:: bash
python3 -m pip install exasol-script-languages-container-tool
Pipx via Pypi
^^^^^^^^^^^^^
If you plan to use ``exasol-script-languages-container-tool`` on the
command line only via the ``exaslct`` script, we suggest the
installation via ``pipx``:
.. code:: bash
pipx install exasol-script-languages-container-tool
Usage
~~~~~
For simplicity the following examples use the script version
(``exaslct``), which will be installed together with the Python package.
The script is just an alias for ``python3 -m exasol.slc.tool.main``.
How to build an existing flavor?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Create the language container and export it to the local file system
.. code:: bash
exaslct export --flavor-path=flavors/<flavor-name> --export-path <export-path>
or deploy it directly to the BucketFS (both http and https are
supported)
.. code:: bash
exaslct deploy --flavor-path=flavors/<flavor-name> --bucketfs-host <hostname-or-ip> --bucketfs-port <port> \
--bucketfs-user w --bucketfs-password <password> --bucketfs-name <bucketfs-name> \
--bucket <bucket-name> --path-in-bucket <path/in/bucket> --bucketfs-use-https 1
Once it is successfully deployed, it will print the ALTER SESSION
statement that can be used to activate the script language container in
the database.
How to activate a script language container in the database
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you uploaded a container manually, you can generate the language
activation statement with
.. code:: bash
exaslct generate-language-activation --flavor-path=flavors/<flavor-name> --bucketfs-name <bucketfs-name> \
--bucket-name <bucket-name> --path-in-bucket <path/in/bucket> --container-name <container-name>
where <container-name> is the name of the uploaded archive without its
file extension. To activate the language, execute the generated
statement in your database session to activate the container for the
current session or system wide.
This command will print a SQL statement to activate the language similar
to the following one:
.. code:: bash
ALTER SESSION SET SCRIPT_LANGUAGES='<LANGUAGE_ALIAS>=localzmq+protobuf:///<bucketfs-name>/<bucket-name>/<path-in-bucket>/<container-name>?lang=<language>#buckets/<bucketfs-name>/<bucket-name>/<path-in-bucket>/<container-name>/exaudf/exaudfclient[_py3]';
**Please, refer to the** `User Guide <https://exasol.github.io/script-languages-container-tool/main/user_guide/user_guide.html>`__.
**for more detailed information, how to use exalsct.**
Features
--------
- Build a script language container as docker images
- Export a script language container as an archive which can be used for
extending Exasol UDFs
- Upload a script language container as an archive to the Exasol DB’s
BucketFS
- Generating the activation command for a script language container
- Can use Docker registries, such as Docker Hub, as a cache to avoid
rebuilding image without changes
- Can push Docker images to Docker registries
- Run tests for you container against an Exasol DB (docker-db or
external db)
📚 Documentation
----------------
For further details, check out latest `documentation <https://exasol.github.io/script-languages-container-tool>`__.
Raw data
{
"_id": null,
"home_page": "https://github.com/exasol/script-languages-container-tool",
"name": "exasol-script-languages-container-tool",
"maintainer": null,
"docs_url": null,
"requires_python": "<4,>=3.10",
"maintainer_email": null,
"keywords": "exasol, udf, script-languages",
"author": "Torsten Kilias",
"author_email": "Torsten Kilias <torsten.kilias@exasol.com>",
"download_url": "https://files.pythonhosted.org/packages/c6/0f/57f9de388bbc49fec94b4718d33263570f2f9bde4ab73a41ff297f2fd774/exasol_script_languages_container_tool-3.4.0.tar.gz",
"platform": null,
"description": "Script-Languages-Container-Tool\n===============================\n\n.. image:: https://github.com/exasol/script-languages-container-tool/actions/workflows/main.yml/badge.svg?branch=main\n :target: https://github.com/exasol/script-languages-container-tool/actions/workflows/ci.yml\n :alt: Checks main\n\n.. image:: https://img.shields.io/pypi/dm/exasol-script-languages-container-tool\n :target: https://pypi.org/project/exasol-script-languages-container-tool/\n :alt: Downloads\n\n.. image:: https://img.shields.io/pypi/v/exasol-script-languages-container-tool\n :target: https://pypi.org/project/exasol-script-languages-container-tool/\n :alt: PyPI Version\n\n.. image:: https://img.shields.io/pypi/pyversions/exasol-script-languages-container-tool\n :target: https://pypi.org/project/sexasol-script-languages-container-tool\n :alt: PyPI - Python Version\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/psf/black\n :alt: Formatter - Black\n\n.. image:: https://img.shields.io/badge/imports-isort-ef8336.svg\n :target: https://pycqa.github.io/isort/\n :alt: Formatter - Isort\n\n.. image:: https://img.shields.io/pypi/l/exasol-script-languages-container-tool\n :target: https://opensource.org/license/MIT\n :alt: License\n\n.. image:: https://img.shields.io/github/last-commit/exasol/script-languages-container-tool\n :target: https://github.com/exasol/script-languages-container-tool\n :alt: Last Commit\n\nOverview\n--------\n\nThe Script-Languages-Container-Tool (exaslct) is the build tool for the\nscript language container. You can build, export and upload\nscript-language container from so-called flavors which are description\nhow to build the script language container. You can find pre-defined\nflavors in the\n`script-languages-release <https://github.com/exasol/script-languages-release>`__\nrepository. There we also described how you could customize these\nflavors to your needs.\n\n\nIn a Nutshell\n-------------\n\nPrerequisites\n~~~~~~~~~~~~~\n\n**Note**: Since version 1.0.0 the \u201cstarter scripts\u201d shipped with\nprevious version, which pulled the ``exaslct`` docker container runtime,\nwere removed. If you can\u2019t use Python3, you still can use our\n`AI-lab <https://github.com/exasol/ai-lab>`__ which provides VM images,\nAMI images and a Docker images, all capable of building\nscript-language-container.\n\nFor running\n^^^^^^^^^^^\n\nIn order to use this tool, your system needs to fulfill the following\nprerequisites:\n\n- Software\n\n - Linux\n\n - Python3 >= 3.10\n\n - `Docker <https://docs.docker.com/>`__ >= 17.05\n\n - with support for `multi-stage builds\n required <https://docs.docker.com/build/building/multi-stage/>`__\n - host volume mounts need to be allowed\n\n- System Setup\n\n - We recommend at least 50 GB free disk space on the partition where\n Docker stores its images, on linux Docker typically stores the\n images at /var/lib/docker.\n - For the partition where the output directory (default:\n ./.build_output) is located we recommend additionally at least 10 GB\n free disk space.\n\nFurther, prerequisites might be necessary for specific tasks. These are\nlisted under the corresponding section.\n\nInstallation\n~~~~~~~~~~~~\n\nIn general, it\u2019s good practice to install the package in a virtual\nenvironment, using ``venv`` or ``Poetry``.\n\nPip via PyPi\n^^^^^^^^^^^^\n\n.. code:: bash\n\n python3 -m pip install exasol-script-languages-container-tool\n\nPipx via Pypi\n^^^^^^^^^^^^^\n\nIf you plan to use ``exasol-script-languages-container-tool`` on the\ncommand line only via the ``exaslct`` script, we suggest the\ninstallation via ``pipx``:\n\n.. code:: bash\n\n pipx install exasol-script-languages-container-tool\n\nUsage\n~~~~~\n\nFor simplicity the following examples use the script version\n(``exaslct``), which will be installed together with the Python package.\nThe script is just an alias for ``python3 -m exasol.slc.tool.main``.\n\nHow to build an existing flavor?\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nCreate the language container and export it to the local file system\n\n.. code:: bash\n\n exaslct export --flavor-path=flavors/<flavor-name> --export-path <export-path>\n\nor deploy it directly to the BucketFS (both http and https are\nsupported)\n\n.. code:: bash\n\n exaslct deploy --flavor-path=flavors/<flavor-name> --bucketfs-host <hostname-or-ip> --bucketfs-port <port> \\\n --bucketfs-user w --bucketfs-password <password> --bucketfs-name <bucketfs-name> \\\n --bucket <bucket-name> --path-in-bucket <path/in/bucket> --bucketfs-use-https 1\n\nOnce it is successfully deployed, it will print the ALTER SESSION\nstatement that can be used to activate the script language container in\nthe database.\n\nHow to activate a script language container in the database\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nIf you uploaded a container manually, you can generate the language\nactivation statement with\n\n.. code:: bash\n\n exaslct generate-language-activation --flavor-path=flavors/<flavor-name> --bucketfs-name <bucketfs-name> \\\n --bucket-name <bucket-name> --path-in-bucket <path/in/bucket> --container-name <container-name>\n\nwhere <container-name> is the name of the uploaded archive without its\nfile extension. To activate the language, execute the generated\nstatement in your database session to activate the container for the\ncurrent session or system wide.\n\nThis command will print a SQL statement to activate the language similar\nto the following one:\n\n.. code:: bash\n\n ALTER SESSION SET SCRIPT_LANGUAGES='<LANGUAGE_ALIAS>=localzmq+protobuf:///<bucketfs-name>/<bucket-name>/<path-in-bucket>/<container-name>?lang=<language>#buckets/<bucketfs-name>/<bucket-name>/<path-in-bucket>/<container-name>/exaudf/exaudfclient[_py3]';\n\n**Please, refer to the** `User Guide <https://exasol.github.io/script-languages-container-tool/main/user_guide/user_guide.html>`__.\n**for more detailed information, how to use exalsct.**\n\nFeatures\n--------\n\n- Build a script language container as docker images\n- Export a script language container as an archive which can be used for\n extending Exasol UDFs\n- Upload a script language container as an archive to the Exasol DB\u2019s\n BucketFS\n- Generating the activation command for a script language container\n- Can use Docker registries, such as Docker Hub, as a cache to avoid\n rebuilding image without changes\n- Can push Docker images to Docker registries\n- Run tests for you container against an Exasol DB (docker-db or\n external db)\n\n\n\ud83d\udcda Documentation\n----------------\n\nFor further details, check out latest `documentation <https://exasol.github.io/script-languages-container-tool>`__.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Script Languages Container Tool",
"version": "3.4.0",
"project_urls": {
"Documentation": "https://github.com/exasol/script-languages-container-tool",
"Homepage": "https://github.com/exasol/script-languages-container-tool",
"Repository": "https://github.com/exasol/script-languages-container-tool",
"issues": "https://github.com/exasol/script-languages-container-tool/issues",
"source": "https://github.com/exasol/script-languages-container-tool"
},
"split_keywords": [
"exasol",
" udf",
" script-languages"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4f62770e917f04e69bdb2bd5f0c496ec2ef1df9df8c5c5368c22e0f5788ab27f",
"md5": "a8172db7c70265dfcac50e84c2cbf55d",
"sha256": "cdffb91f28718f2b8d52b605322f54a256029872ff20898df057dd0159c677b7"
},
"downloads": -1,
"filename": "exasol_script_languages_container_tool-3.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a8172db7c70265dfcac50e84c2cbf55d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4,>=3.10",
"size": 107774,
"upload_time": "2025-07-10T10:26:27",
"upload_time_iso_8601": "2025-07-10T10:26:27.975862Z",
"url": "https://files.pythonhosted.org/packages/4f/62/770e917f04e69bdb2bd5f0c496ec2ef1df9df8c5c5368c22e0f5788ab27f/exasol_script_languages_container_tool-3.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c60f57f9de388bbc49fec94b4718d33263570f2f9bde4ab73a41ff297f2fd774",
"md5": "5328b2cb6ba9c07e023ce7b25df9d08f",
"sha256": "037c802e4b87cdb0caa9cfd267ffefa8d1b24c0b9d804d0603285c943c996fce"
},
"downloads": -1,
"filename": "exasol_script_languages_container_tool-3.4.0.tar.gz",
"has_sig": false,
"md5_digest": "5328b2cb6ba9c07e023ce7b25df9d08f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4,>=3.10",
"size": 49788,
"upload_time": "2025-07-10T10:26:29",
"upload_time_iso_8601": "2025-07-10T10:26:29.316363Z",
"url": "https://files.pythonhosted.org/packages/c6/0f/57f9de388bbc49fec94b4718d33263570f2f9bde4ab73a41ff297f2fd774/exasol_script_languages_container_tool-3.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-10 10:26:29",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "exasol",
"github_project": "script-languages-container-tool",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "exasol-script-languages-container-tool"
}