========
pop-loop
========
.. image:: https://img.shields.io/badge/made%20with-pop-teal
:alt: Made with pop, a Python implementation of Plugin Oriented Programming
:target: https://pop.readthedocs.io/
.. image:: https://img.shields.io/badge/made%20with-python-yellow
:alt: Made with Python
:target: https://www.python.org/
`pop-loop` Contains plugins that allow alternate io loops to be used to run asynchronous code in pop projects.
About
=====
Pop used the asyncio loop by default in a built-in mod at 'hub.pop.loop'.
It became necessary to split the mod into it's own project for more loop capabilities.
For testing, loop management was difficult, but paired with pytest-pop, pop-loop makes async testing easy.
What is POP?
------------
This project is built with `pop <https://pop.readthedocs.io/>`__, a Python-based
implementation of *Plugin Oriented Programming (POP)*. POP seeks to bring
together concepts and wisdom from the history of computing in new ways to solve
modern computing problems.
For more information:
* `Intro to Plugin Oriented Programming (POP) <https://pop-book.readthedocs.io/en/latest/>`__
* `pop-awesome <https://gitlab.com/saltstack/pop/pop-awesome>`__
* `pop-create <https://gitlab.com/saltstack/pop/pop-create/>`__
Getting Started
===============
Prerequisites
-------------
* Python 3.8+
* git *(if installing from source, or contributing to the project)*
Installation
------------
.. note::
If wanting to contribute to the project, and setup your local development
environment, see the ``CONTRIBUTING.rst`` document in the source repository
for this project.
If wanting to use ``pop-loop``, you can do so by either
installing from PyPI or from source.
Install from PyPI
+++++++++++++++++
If package is available via PyPI, include the directions.
.. code-block:: bash
pip install pop-loop
Install Extras
++++++++++++++
``pop-loop`` can be installed with extras to enable the different loop plugins in this project.
trio:
.. code-block:: bash
pip install pop-loop\[trio\]
uvloop:
.. code-block:: bash
pip install pop-loop\[uvloop\]
qt:
.. code-block:: bash
pip install pop-loop\[qt\]
Install from source
+++++++++++++++++++
.. code-block:: bash
# clone repo
git clone git@gitlab.com/saltstack/pop/pop-loop.git
cd pop-loop
# Setup venv
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
Usage
=====
Describe some basic example use case for this plugin.
Examples
--------
uvloop example:
.. code-block:: python
import asyncio
import pop.hub
hub = pop.hub.Hub()
hub.pop.loop.create(loop_plugin="uv")
task = hub.pop.Loop.create(asyncio.sleep(0))
hub.pop.Loop.run_until_complete(task)
trio example:
.. code-block:: python
import asyncio
import pop.hub
hub = pop.hub.Hub()
hub.pop.loop.create(loop_plugin="trio")
task = hub.pop.Loop.create(asyncio.sleep(0))
hub.pop.Loop.run_until_complete(task)
QT example:
.. code-block:: python
import asyncio
import pop.hub
import PyQt5.QtWidgets as pyqt5
hub = pop.hub.Hub()
hub.loop.qt.APP = pyqt5.QApplication([])
hub.pop.loop.create(loop_plugin="qt")
task = hub.pop.Loop.create(asyncio.sleep(0))
hub.pop.Loop.run_until_complete(task)
Acknowledgements
================
* `Img Shields <https://shields.io>`__ for making repository badges easy.
Raw data
{
"_id": null,
"home_page": "https://vmware.gitlab.io/pop/pop-loop/en/latest/index.html",
"name": "pop-loop",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "",
"author": "VMware, Inc.",
"author_email": "idemproject@vmware.com",
"download_url": "https://files.pythonhosted.org/packages/73/1b/0b8939675e3e67c52a6e308a1b6ca429c9c372542f301fc78875c2d491bc/pop-loop-1.1.0.tar.gz",
"platform": null,
"description": "========\npop-loop\n========\n\n.. image:: https://img.shields.io/badge/made%20with-pop-teal\n :alt: Made with pop, a Python implementation of Plugin Oriented Programming\n :target: https://pop.readthedocs.io/\n\n.. image:: https://img.shields.io/badge/made%20with-python-yellow\n :alt: Made with Python\n :target: https://www.python.org/\n\n\n`pop-loop` Contains plugins that allow alternate io loops to be used to run asynchronous code in pop projects.\n\nAbout\n=====\n\nPop used the asyncio loop by default in a built-in mod at 'hub.pop.loop'.\nIt became necessary to split the mod into it's own project for more loop capabilities.\nFor testing, loop management was difficult, but paired with pytest-pop, pop-loop makes async testing easy.\n\n\nWhat is POP?\n------------\n\nThis project is built with `pop <https://pop.readthedocs.io/>`__, a Python-based\nimplementation of *Plugin Oriented Programming (POP)*. POP seeks to bring\ntogether concepts and wisdom from the history of computing in new ways to solve\nmodern computing problems.\n\nFor more information:\n\n* `Intro to Plugin Oriented Programming (POP) <https://pop-book.readthedocs.io/en/latest/>`__\n* `pop-awesome <https://gitlab.com/saltstack/pop/pop-awesome>`__\n* `pop-create <https://gitlab.com/saltstack/pop/pop-create/>`__\n\nGetting Started\n===============\n\nPrerequisites\n-------------\n\n* Python 3.8+\n* git *(if installing from source, or contributing to the project)*\n\nInstallation\n------------\n\n.. note::\n\n If wanting to contribute to the project, and setup your local development\n environment, see the ``CONTRIBUTING.rst`` document in the source repository\n for this project.\n\nIf wanting to use ``pop-loop``, you can do so by either\ninstalling from PyPI or from source.\n\nInstall from PyPI\n+++++++++++++++++\n\n If package is available via PyPI, include the directions.\n\n .. code-block:: bash\n\n pip install pop-loop\n\n\nInstall Extras\n++++++++++++++\n\n ``pop-loop`` can be installed with extras to enable the different loop plugins in this project.\n\n trio:\n .. code-block:: bash\n\n pip install pop-loop\\[trio\\]\n\n\n uvloop:\n .. code-block:: bash\n\n pip install pop-loop\\[uvloop\\]\n\n qt:\n .. code-block:: bash\n\n pip install pop-loop\\[qt\\]\n\n\nInstall from source\n+++++++++++++++++++\n\n.. code-block:: bash\n\n # clone repo\n git clone git@gitlab.com/saltstack/pop/pop-loop.git\n cd pop-loop\n\n # Setup venv\n python3 -m venv .venv\n source .venv/bin/activate\n pip install -e .\n\nUsage\n=====\n\nDescribe some basic example use case for this plugin.\n\nExamples\n--------\n\nuvloop example:\n.. code-block:: python\n\n import asyncio\n import pop.hub\n\n hub = pop.hub.Hub()\n\n hub.pop.loop.create(loop_plugin=\"uv\")\n task = hub.pop.Loop.create(asyncio.sleep(0))\n hub.pop.Loop.run_until_complete(task)\n\n\ntrio example:\n.. code-block:: python\n\n import asyncio\n import pop.hub\n\n hub = pop.hub.Hub()\n\n hub.pop.loop.create(loop_plugin=\"trio\")\n task = hub.pop.Loop.create(asyncio.sleep(0))\n hub.pop.Loop.run_until_complete(task)\n\n\nQT example:\n.. code-block:: python\n\n import asyncio\n import pop.hub\n import PyQt5.QtWidgets as pyqt5\n\n\n hub = pop.hub.Hub()\n hub.loop.qt.APP = pyqt5.QApplication([])\n hub.pop.loop.create(loop_plugin=\"qt\")\n\n task = hub.pop.Loop.create(asyncio.sleep(0))\n hub.pop.Loop.run_until_complete(task)\n\n\nAcknowledgements\n================\n\n* `Img Shields <https://shields.io>`__ for making repository badges easy.\n\n\n",
"bugtrack_url": null,
"license": "Apache Software License 2.0",
"summary": "Plugins that allow alternate io loops to be used to run asynchronous code in pop projects",
"version": "1.1.0",
"project_urls": {
"Code": "https://gitlab.com/vmware/pop/pop-loop",
"Homepage": "https://vmware.gitlab.io/pop/pop-loop/en/latest/index.html",
"Issue tracker": "https://gitlab.com/vmware/pop/pop-loop/issues"
},
"split_keywords": [],
"urls": [
{
"comment_text": "pypi",
"digests": {
"blake2b_256": "9c69278576aab27387de566cc676b405ea0ac1a8fab8cc40cfaf58bb297d1a53",
"md5": "79876caccc5b06c333a1a74c71e3a0a6",
"sha256": "c529a558895180e74eec1880fcc66189cab1e18070338590a82d0da28de179e2"
},
"downloads": -1,
"filename": "pop_loop-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "79876caccc5b06c333a1a74c71e3a0a6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 13274,
"upload_time": "2023-07-03T20:19:02",
"upload_time_iso_8601": "2023-07-03T20:19:02.758994Z",
"url": "https://files.pythonhosted.org/packages/9c/69/278576aab27387de566cc676b405ea0ac1a8fab8cc40cfaf58bb297d1a53/pop_loop-1.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "pypi",
"digests": {
"blake2b_256": "731b0b8939675e3e67c52a6e308a1b6ca429c9c372542f301fc78875c2d491bc",
"md5": "d83c6bd4fcf39f73d3f3e8ccc708cb3d",
"sha256": "9d5fd00afa2334c0edf80d9af331b668199cfbcf31a335dcf7730ff87bfc252f"
},
"downloads": -1,
"filename": "pop-loop-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "d83c6bd4fcf39f73d3f3e8ccc708cb3d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 11931,
"upload_time": "2023-07-03T20:19:04",
"upload_time_iso_8601": "2023-07-03T20:19:04.556831Z",
"url": "https://files.pythonhosted.org/packages/73/1b/0b8939675e3e67c52a6e308a1b6ca429c9c372542f301fc78875c2d491bc/pop-loop-1.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-07-03 20:19:04",
"github": false,
"gitlab": true,
"bitbucket": false,
"codeberg": false,
"gitlab_user": "vmware",
"gitlab_project": "pop",
"lcname": "pop-loop"
}