{"id":19440741,"url":"https://github.com/streamingflow/dispel4py-client","last_synced_at":"2026-06-15T19:31:57.253Z","repository":{"id":249834849,"uuid":"832679340","full_name":"StreamingFlow/dispel4py-client","owner":"StreamingFlow","description":"Client for Laminar (serverless framework)","archived":false,"fork":false,"pushed_at":"2026-06-11T14:52:53.000Z","size":1772,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-11T15:11:26.132Z","etag":null,"topics":["client-side","dispel4py","laminar","serverless-framework","stream-based"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StreamingFlow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-07-23T13:59:52.000Z","updated_at":"2026-03-06T11:06:43.000Z","dependencies_parsed_at":"2024-08-27T11:49:33.644Z","dependency_job_id":null,"html_url":"https://github.com/StreamingFlow/dispel4py-client","commit_stats":null,"previous_names":["streamingflow/dispel4py-client"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/StreamingFlow/dispel4py-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StreamingFlow%2Fdispel4py-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StreamingFlow%2Fdispel4py-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StreamingFlow%2Fdispel4py-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StreamingFlow%2Fdispel4py-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StreamingFlow","download_url":"https://codeload.github.com/StreamingFlow/dispel4py-client/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StreamingFlow%2Fdispel4py-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34377872,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client-side","dispel4py","laminar","serverless-framework","stream-based"],"created_at":"2024-11-10T15:30:41.270Z","updated_at":"2026-06-15T19:31:57.234Z","avatar_url":"https://github.com/StreamingFlow.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Laminar Client\n\n![Laminar Logo](logo.webp)\n\n## Overview\n\nThe Laminar Client is the primary user-facing component of the Laminar framework. It provides a unified interface for\nregistering, managing, and executing dispel4py stream-based workflows, either through a Command Line Interface (CLI) or\ndirectly from Python code and Jupyter notebooks.\n\nThe client communicates with the Laminar Server to authenticate users, register workflows and Processing Elements (PEs),\nsubmit executions, and monitor their progress. Through this interaction, the Laminar Client enables efficient and\nscalable execution of data-intensive applications using dispel4py’s automatic parallelisation and dynamic execution\ncapabilities.\n\n## Architecture at a Glance\n\nThe Laminar Client acts as the entry point into the Laminar ecosystem and integrates with the following components:\n\n- Laminar Server: Handles authentication, request routing, and workflow management\n- Laminar Execution Engine: Executes registered workflows\n- dispel4py: Defines stream-based workflows and Processing Elements\n\nTogether, these components provide a flexible environment for developing and running scalable data processing pipelines.\n\n## Getting Started\n\n### Clone the Repository\n\n```bash\ngit clone https://github.com/StreamingFlow/dispel4py-client.git\ncd dispel4py-client\n```\n\n### Python Environment\n\nA Python 3.10 (or newer) environment is required. The recommended approach is to use Conda.\n\n```bash\nconda create --name laminar python=3.10\nconda activate laminar\n```\n\n### Install the Laminar Client\n\nInstall the client and CLI tool locally:\n\n```bash\npip install .\n```\n\nAfter installation, configure the target Laminar Server by editing the `config.ini` file and setting the server URL.\n\n## Using the Laminar Client in Python\n\nThe `CLIENT_EXAMPLES` directory contains several example dispel4py workflows that already integrate Laminar client\nfunctions. These examples demonstrate how to authenticate, register workflows, and trigger executions programmatically.\n\nAvailable examples include:\n\n- IsPrime.py  \n  Generates a user-defined number of random values and outputs only the prime numbers.\n\n- WordCount.py  \n  Counts the frequency of each word in a user-provided text.\n\n- SensorIoT.py  \n  Simulates an IoT sensor data processing workflow. A detailed explanation is available in the dispel4py workflows\n  repository.\n\n- AstroPhysics.py  \n  Implements an astrophysics workflow. Further documentation is available in the dispel4py workflows repository.\n\nAn interactive Jupyter notebook example is also provided:\n\n- Laminar_Notebook_Sample.ipynb\n\nAdditional workflows that do not include client functions are also available in the `CLIENT_EXAMPLES` directory and can\nbe used with the CLI.\n\n### Running Client-Based Examples\n\nTo execute a workflow that includes client functions:\n\n```bash\ncp CLIENT_EXAMPLES/\u003cfile\u003e .\npython \u003cfile\u003e\n```\n\nBefore running these examples, ensure that you have registered a user and logged in using the Laminar client functions,\nas authentication is required to interact with the Laminar framework.\n\n## Using the Laminar CLI\n\n### Register a New User\n\nRegister a user account (required only once per user):\n\n```bash\nlaminar --register\n```\n\nYou will be prompted to provide a username and password. It is also possible to skip the login step by setting the\nfollowing enviroment variables:\n- `LAMINAR_USERNAME`: Previously register laminar username\n- `LAMINAR_PASSWORD`: Password of the account\n\n### Launch the CLI\n\nStart the interactive CLI session:\n\n```bash\nlaminar\n```\n\nAlternatively, if running from the source directory:\n\n```bash\npython -m laminar\n```\n\n### Preparing Workflows for the CLI\n\nFor CLI-based testing, copy workflow or PE files that do not include client functions from the `CLIENT_EXAMPLES`\ndirectory:\n\n```bash\ncp CLIENT_EXAMPLES/\u003cfile\u003e .\nlaminar\n```\n\n### Registering Workflows and Processing Elements\n\nWithin the CLI session, workflows and PEs can be registered as follows:\n\n```bash\n(laminar) \u003e register workflow wordcount_wf.py\n(laminar) \u003e register workflow sensor_wf.py\n(laminar) \u003e register pe isprimePE.py\n```\n\nAdditional dispel4py workflows suitable for use with Laminar are available in the dispel4py workflows repository and can\nbe adapted as needed.\n\n## Documentation\n\nComprehensive documentation, including installation guides, configuration instructions, and detailed CLI and client API\nusage, is available in the project wiki:\n\nhttps://github.com/StreamingFlow/dispel4py-client/wiki\n\nThe user manual provides step-by-step instructions for running workflows, managing Processing Elements, and integrating\nLaminar into scripts and Jupyter notebooks.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstreamingflow%2Fdispel4py-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstreamingflow%2Fdispel4py-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstreamingflow%2Fdispel4py-client/lists"}