pop


Namepop JSON
Version 27.1.0 PyPI version JSON
download
home_pagehttps://pop.readthedocs.io
SummaryThe Plugin Oriented Programming System
upload_time2023-12-26 18:23:59
maintainer
docs_urlNone
authorThomas S Hatch
requires_python>=3.8
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ====
POP
====

Pop is used to express the Plugin Oriented Programming Paradigm. The Plugin
Oriented Programming Paradigm has been designed to make pluggable software
easy to write and easy to extend.

Plugin Oriented Programming presents a new way to scale development teams
and deliver complex software. This is done by making the applications entirely
out of plugins, and also making the applications themselves natively pluggable
with each other.

Using Plugin Oriented Programming it then becomes easy to have the best of both
worlds, software can be built in small pieces, making development easier to
maintain. The small pieces can then be merged and deployed in a single
binary, making code deployment easy as well.

All this using Python, one of the world's most popular and powerful programming
languages.

Getting Started
===============

A more complete Getting Started Guide is available inside of the documentation
for ``pop``. The best place to start is in the doc's Getting Started Guide found
here:

https://pop.readthedocs.io

First off, install ``pop`` from pypi:

.. code-block:: bash

    pip3 install pop

Now all it takes to create a pluggable application is a few lines of code.
This is the root of every pop project.
We create a hub, we add dynamic subsystems, and then we call them through the hub's namespace.

.. code-block:: python

    import pop.hub

    hub = pop.hub.Hub()
    # Dynamic subsystems can now be added to the hub
    hub.pop.sub.add(dyne_name="my_dynamic_sub")
    # This hub now exists on the namespace and mirrors the file tree of that sub
    # the sub "my_dynamic_sub" had a plugin called "init" with a function called "cli" we could do this:
    hub.my_dynamic_sub.init.cli()


Writing your first pop application can be very simple, there is a tool called ``pop-create`` that automates
much of the groundwork needed to get started with an advanced application.

.. code-block:: bash

    pip3 install pop-create

Now that you have ``pop-create``, use the tool  to bootstrap your project!
This will make your Python project boiler plate for you!

.. code-block:: bash

    mkdir poppy
    cd poppy
    pop-create seed -n poppy

Now you have a ``setup.py`` that file will detect changes to you project and "Just Work".
Feel free to open it up and fill in some of the blank places, like author name,
description, etc. The ``pop-create`` program also made your first directories, your
``run.py`` startup script, everything you need to install your project and the ``pop``
`conf.py` file used to load in configuration. Running `pop-create` also made a few
other files, but nothing to worry about now.
Look at `pop-create <https://gitlab.com/saltstack/pop/pop-create>`__'s documentation
for more details of what it can do.

Congratulations! You have a ``pop`` project! Now you can run the project:

.. code-block:: bash

    python3 run.py

With a project up and running you can now add more plugins, more code and more
plugin subsystems!

What Happened?
==============

Take a look at the `poppy/poppy/init.py` file, your little `run.py` script
created the `hub`, loaded your first plugin subsystem, `poppy` and called
the run function therein. This is the starting point for your app.

Next dive into the `pop documentation <https://pop.readthedocs.io>`__, we will take you through how to
think in Plugin Oriented Programming, helping you see a new way to write
code that is more flexible and dynamic than anything you have seen before!

Single Binary
=============

In the first few sentences of this document I promised you a single binary!
This is easy to do! Just pip install ``tiamat``:

.. code-block:: bash

    pip3 install tiamat
    tiamat --log-level=debug build -n poppy -r requirements/base.txt

This built a single binary of your program! Now you can run it.

.. code-block:: bash

    ./dist/poppy

Documentation
=============

Check out the docs for more information:

https://pop.readthedocs.io

There is a much more in depth tutorial here, followed by documents on how to
think in Plugin Oriented Programming. Take your time to read it, it is not long
and can change how you look at writing software!

            

Raw data

            {
    "_id": null,
    "home_page": "https://pop.readthedocs.io",
    "name": "pop",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "",
    "author": "Thomas S Hatch",
    "author_email": "thatch@vmware.com",
    "download_url": "https://files.pythonhosted.org/packages/60/9b/7b5de10ae4d37683e4c975f70ec63ed7ed8d4fe7e3bf03a185ea6f976b27/pop-27.1.0.tar.gz",
    "platform": null,
    "description": "====\nPOP\n====\n\nPop is used to express the Plugin Oriented Programming Paradigm. The Plugin\nOriented Programming Paradigm has been designed to make pluggable software\neasy to write and easy to extend.\n\nPlugin Oriented Programming presents a new way to scale development teams\nand deliver complex software. This is done by making the applications entirely\nout of plugins, and also making the applications themselves natively pluggable\nwith each other.\n\nUsing Plugin Oriented Programming it then becomes easy to have the best of both\nworlds, software can be built in small pieces, making development easier to\nmaintain. The small pieces can then be merged and deployed in a single\nbinary, making code deployment easy as well.\n\nAll this using Python, one of the world's most popular and powerful programming\nlanguages.\n\nGetting Started\n===============\n\nA more complete Getting Started Guide is available inside of the documentation\nfor ``pop``. The best place to start is in the doc's Getting Started Guide found\nhere:\n\nhttps://pop.readthedocs.io\n\nFirst off, install ``pop`` from pypi:\n\n.. code-block:: bash\n\n    pip3 install pop\n\nNow all it takes to create a pluggable application is a few lines of code.\nThis is the root of every pop project.\nWe create a hub, we add dynamic subsystems, and then we call them through the hub's namespace.\n\n.. code-block:: python\n\n    import pop.hub\n\n    hub = pop.hub.Hub()\n    # Dynamic subsystems can now be added to the hub\n    hub.pop.sub.add(dyne_name=\"my_dynamic_sub\")\n    # This hub now exists on the namespace and mirrors the file tree of that sub\n    # the sub \"my_dynamic_sub\" had a plugin called \"init\" with a function called \"cli\" we could do this:\n    hub.my_dynamic_sub.init.cli()\n\n\nWriting your first pop application can be very simple, there is a tool called ``pop-create`` that automates\nmuch of the groundwork needed to get started with an advanced application.\n\n.. code-block:: bash\n\n    pip3 install pop-create\n\nNow that you have ``pop-create``, use the tool  to bootstrap your project!\nThis will make your Python project boiler plate for you!\n\n.. code-block:: bash\n\n    mkdir poppy\n    cd poppy\n    pop-create seed -n poppy\n\nNow you have a ``setup.py`` that file will detect changes to you project and \"Just Work\".\nFeel free to open it up and fill in some of the blank places, like author name,\ndescription, etc. The ``pop-create`` program also made your first directories, your\n``run.py`` startup script, everything you need to install your project and the ``pop``\n`conf.py` file used to load in configuration. Running `pop-create` also made a few\nother files, but nothing to worry about now.\nLook at `pop-create <https://gitlab.com/saltstack/pop/pop-create>`__'s documentation\nfor more details of what it can do.\n\nCongratulations! You have a ``pop`` project! Now you can run the project:\n\n.. code-block:: bash\n\n    python3 run.py\n\nWith a project up and running you can now add more plugins, more code and more\nplugin subsystems!\n\nWhat Happened?\n==============\n\nTake a look at the `poppy/poppy/init.py` file, your little `run.py` script\ncreated the `hub`, loaded your first plugin subsystem, `poppy` and called\nthe run function therein. This is the starting point for your app.\n\nNext dive into the `pop documentation <https://pop.readthedocs.io>`__, we will take you through how to\nthink in Plugin Oriented Programming, helping you see a new way to write\ncode that is more flexible and dynamic than anything you have seen before!\n\nSingle Binary\n=============\n\nIn the first few sentences of this document I promised you a single binary!\nThis is easy to do! Just pip install ``tiamat``:\n\n.. code-block:: bash\n\n    pip3 install tiamat\n    tiamat --log-level=debug build -n poppy -r requirements/base.txt\n\nThis built a single binary of your program! Now you can run it.\n\n.. code-block:: bash\n\n    ./dist/poppy\n\nDocumentation\n=============\n\nCheck out the docs for more information:\n\nhttps://pop.readthedocs.io\n\nThere is a much more in depth tutorial here, followed by documents on how to\nthink in Plugin Oriented Programming. Take your time to read it, it is not long\nand can change how you look at writing software!\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "The Plugin Oriented Programming System",
    "version": "27.1.0",
    "project_urls": {
        "Homepage": "https://pop.readthedocs.io"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "pypi",
            "digests": {
                "blake2b_256": "530bffef39da7ed7744d8db471f942e3979e8b86dd4ee9167a7b4ca6e9b368bb",
                "md5": "583f53f5060ba0cc1315ebf28d75e59f",
                "sha256": "6ea71286823115ee7407803721d7a1cd07d11773ce99fa2c8d895f04c39fd311"
            },
            "downloads": -1,
            "filename": "pop-27.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "583f53f5060ba0cc1315ebf28d75e59f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 43680,
            "upload_time": "2023-12-26T18:23:57",
            "upload_time_iso_8601": "2023-12-26T18:23:57.517924Z",
            "url": "https://files.pythonhosted.org/packages/53/0b/ffef39da7ed7744d8db471f942e3979e8b86dd4ee9167a7b4ca6e9b368bb/pop-27.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "pypi",
            "digests": {
                "blake2b_256": "609b7b5de10ae4d37683e4c975f70ec63ed7ed8d4fe7e3bf03a185ea6f976b27",
                "md5": "85a19d02ee7b7d9f44a1571aa9b40795",
                "sha256": "da6ab2f5af91f3ea88c090b80f6e3b1def6af4044c0b02f6b1b2adc785aab130"
            },
            "downloads": -1,
            "filename": "pop-27.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "85a19d02ee7b7d9f44a1571aa9b40795",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 40314,
            "upload_time": "2023-12-26T18:23:59",
            "upload_time_iso_8601": "2023-12-26T18:23:59.727690Z",
            "url": "https://files.pythonhosted.org/packages/60/9b/7b5de10ae4d37683e4c975f70ec63ed7ed8d4fe7e3bf03a185ea6f976b27/pop-27.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-26 18:23:59",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "pop"
}
        
Elapsed time: 0.15996s