devpi-plumber


Namedevpi-plumber JSON
Version 0.7.0 PyPI version JSON
download
home_pagehttps://github.com/blue-yonder/devpi-plumber
SummaryMario, the devpi-plumber, helps to automate and test large devpi installations.
upload_time2023-10-04 12:48:30
maintainer
docs_urlNone
authorStephan Erb
requires_python
licensenew BSD
keywords
VCS
bugtrack_url
requirements aiohttp aiosignal alabaster argon2-cffi argon2-cffi-bindings async-timeout attrs babel build certifi cffi charset-normalizer check-manifest coverage defusedxml devpi-client devpi-common devpi-server docutils exceptiongroup frozenlist hupper idna imagesize importlib-metadata iniconfig itsdangerous jinja2 lazy markupsafe mock multidict packaging passlib pastedeploy pep517 pkginfo plaster plaster-pastedeploy platformdirs pluggy py pycparser pygments pyparsing pyproject-hooks pyramid pytest pytest-cov python-dateutil pytz repoze-lru requests ruamel-yaml ruamel-yaml-clib setuptools-scm six snowballstemmer sphinx sphinxcontrib-applehelp sphinxcontrib-devhelp sphinxcontrib-htmlhelp sphinxcontrib-jsmath sphinxcontrib-qthelp sphinxcontrib-serializinghtml strictyaml tomli translationstring twitter-common-contextutil twitter-common-dirutil twitter-common-lang typing-extensions urllib3 venusian waitress webob yarl zipp zope-deprecation zope-interface
Travis-CI No Travis.
coveralls test coverage No coveralls.
            =======================
Mario the Devpi Plumber
=======================

.. image:: https://coveralls.io/repos/blue-yonder/devpi-plumber/badge.svg?branch=master
    :alt: Coverage Status
    :target: https://coveralls.io/r/blue-yonder/devpi-plumber?branch=master
.. image:: https://badge.fury.io/py/devpi-plumber.svg
    :alt: Latest Version
    :target: https://pypi.python.org/pypi/devpi-plumber

Mario, the devpi-plumber, helps to automate and test large devpi_ installations. It offers a simple python commandline wrapper
around the devpi client binary and utilities for using devpi in a test harness. To get access to the latter, install Mario
with the extra ``test`` requirement::

    pip install devpi-plumber[test]


Mario by Example:
=================

Among others, it can be used to automate the upload of packages:

.. code:: python

    with DevpiClient('https://devpi.company.com', 'user', 'secret') as devpi:
        devpi.use('user/testindex')
        devpi.upload('path/to/package-1.0.tar.gz')

To make it easier to perform modifications on non-volatile indices, there is a context manager that temporarily toggles the volatile flag.

.. code:: python

    with volatile_index(devpi, 'user/prodindex'):
        devpi.remove('broken_package==0.1.0')

In order to simplify the testing of such plumbing scripts, it ships with a simple context manager for starting and stopping devpi servers in tests.

.. code:: python

    def do_maintenance(devpi):
        """ My plumbing script """
        devpi.use('user/testindex')
        # ...

    users = { 
        'user': {'password': 'secret'},
    }
    indices = {
        'user/prodindex': {},
        'user/testindex': {'bases': 'user/prodindex'},
    }
    with TestServer(users, indices) as devpi:
        do_maintenance(devpi)


License
=======

`New BSD`_


.. _devpi: http://doc.devpi.net/latest/
.. _New BSD: https://github.com/blue-yonder/devpi-builder/blob/master/COPYING

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/blue-yonder/devpi-plumber",
    "name": "devpi-plumber",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "Stephan Erb",
    "author_email": "stephan.erb@blue-yonder.com",
    "download_url": "https://files.pythonhosted.org/packages/28/6b/6f67ece93542c2c659bfe760d5e4c3cff2754bc3238c39a5f0a26cb0a83c/devpi-plumber-0.7.0.tar.gz",
    "platform": null,
    "description": "=======================\nMario the Devpi Plumber\n=======================\n\n.. image:: https://coveralls.io/repos/blue-yonder/devpi-plumber/badge.svg?branch=master\n    :alt: Coverage Status\n    :target: https://coveralls.io/r/blue-yonder/devpi-plumber?branch=master\n.. image:: https://badge.fury.io/py/devpi-plumber.svg\n    :alt: Latest Version\n    :target: https://pypi.python.org/pypi/devpi-plumber\n\nMario, the devpi-plumber, helps to automate and test large devpi_ installations. It offers a simple python commandline wrapper\naround the devpi client binary and utilities for using devpi in a test harness. To get access to the latter, install Mario\nwith the extra ``test`` requirement::\n\n    pip install devpi-plumber[test]\n\n\nMario by Example:\n=================\n\nAmong others, it can be used to automate the upload of packages:\n\n.. code:: python\n\n    with DevpiClient('https://devpi.company.com', 'user', 'secret') as devpi:\n        devpi.use('user/testindex')\n        devpi.upload('path/to/package-1.0.tar.gz')\n\nTo make it easier to perform modifications on non-volatile indices, there is a context manager that temporarily toggles the volatile flag.\n\n.. code:: python\n\n    with volatile_index(devpi, 'user/prodindex'):\n        devpi.remove('broken_package==0.1.0')\n\nIn order to simplify the testing of such plumbing scripts, it ships with a simple context manager for starting and stopping devpi servers in tests.\n\n.. code:: python\n\n    def do_maintenance(devpi):\n        \"\"\" My plumbing script \"\"\"\n        devpi.use('user/testindex')\n        # ...\n\n    users = { \n        'user': {'password': 'secret'},\n    }\n    indices = {\n        'user/prodindex': {},\n        'user/testindex': {'bases': 'user/prodindex'},\n    }\n    with TestServer(users, indices) as devpi:\n        do_maintenance(devpi)\n\n\nLicense\n=======\n\n`New BSD`_\n\n\n.. _devpi: http://doc.devpi.net/latest/\n.. _New BSD: https://github.com/blue-yonder/devpi-builder/blob/master/COPYING\n",
    "bugtrack_url": null,
    "license": "new BSD",
    "summary": "Mario, the devpi-plumber, helps to automate and test large devpi installations.",
    "version": "0.7.0",
    "project_urls": {
        "Homepage": "https://github.com/blue-yonder/devpi-plumber"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ec049149c8773af694a1a1e18f14c801cdb13dc3023b556f9c4f48df90415e12",
                "md5": "c6190a28c1d4136513e9ec4c647803f8",
                "sha256": "e9aff00606aa3f4a74c53b45d734492179e33cdbae30e0c4ded2f11f2a925b0c"
            },
            "downloads": -1,
            "filename": "devpi_plumber-0.7.0-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c6190a28c1d4136513e9ec4c647803f8",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 7622,
            "upload_time": "2023-10-04T12:48:28",
            "upload_time_iso_8601": "2023-10-04T12:48:28.226526Z",
            "url": "https://files.pythonhosted.org/packages/ec/04/9149c8773af694a1a1e18f14c801cdb13dc3023b556f9c4f48df90415e12/devpi_plumber-0.7.0-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "286b6f67ece93542c2c659bfe760d5e4c3cff2754bc3238c39a5f0a26cb0a83c",
                "md5": "a20e8b61f3d6eaf8c411e1dee2efae74",
                "sha256": "e53105c3f7ae29f74aa6ae0ab46c2c54ad29d8175e59f82950f2852b04c14996"
            },
            "downloads": -1,
            "filename": "devpi-plumber-0.7.0.tar.gz",
            "has_sig": false,
            "md5_digest": "a20e8b61f3d6eaf8c411e1dee2efae74",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 182260,
            "upload_time": "2023-10-04T12:48:30",
            "upload_time_iso_8601": "2023-10-04T12:48:30.120235Z",
            "url": "https://files.pythonhosted.org/packages/28/6b/6f67ece93542c2c659bfe760d5e4c3cff2754bc3238c39a5f0a26cb0a83c/devpi-plumber-0.7.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-04 12:48:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "blue-yonder",
    "github_project": "devpi-plumber",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "aiohttp",
            "specs": [
                [
                    "==",
                    "3.8.5"
                ]
            ]
        },
        {
            "name": "aiosignal",
            "specs": [
                [
                    "==",
                    "1.3.1"
                ]
            ]
        },
        {
            "name": "alabaster",
            "specs": [
                [
                    "==",
                    "0.7.13"
                ]
            ]
        },
        {
            "name": "argon2-cffi",
            "specs": [
                [
                    "==",
                    "23.1.0"
                ]
            ]
        },
        {
            "name": "argon2-cffi-bindings",
            "specs": [
                [
                    "==",
                    "21.2.0"
                ]
            ]
        },
        {
            "name": "async-timeout",
            "specs": [
                [
                    "==",
                    "4.0.3"
                ]
            ]
        },
        {
            "name": "attrs",
            "specs": [
                [
                    "==",
                    "23.1.0"
                ]
            ]
        },
        {
            "name": "babel",
            "specs": [
                [
                    "==",
                    "2.13.0"
                ]
            ]
        },
        {
            "name": "build",
            "specs": [
                [
                    "==",
                    "1.0.3"
                ]
            ]
        },
        {
            "name": "certifi",
            "specs": [
                [
                    "==",
                    "2023.7.22"
                ]
            ]
        },
        {
            "name": "cffi",
            "specs": [
                [
                    "==",
                    "1.16.0"
                ]
            ]
        },
        {
            "name": "charset-normalizer",
            "specs": [
                [
                    "==",
                    "3.3.0"
                ]
            ]
        },
        {
            "name": "check-manifest",
            "specs": [
                [
                    "==",
                    "0.49"
                ]
            ]
        },
        {
            "name": "coverage",
            "specs": [
                [
                    "==",
                    "7.3.2"
                ]
            ]
        },
        {
            "name": "defusedxml",
            "specs": [
                [
                    "==",
                    "0.7.1"
                ]
            ]
        },
        {
            "name": "devpi-client",
            "specs": [
                [
                    "==",
                    "6.0.5"
                ]
            ]
        },
        {
            "name": "devpi-common",
            "specs": [
                [
                    "==",
                    "3.7.2"
                ]
            ]
        },
        {
            "name": "devpi-server",
            "specs": [
                [
                    "==",
                    "6.9.2"
                ]
            ]
        },
        {
            "name": "docutils",
            "specs": [
                [
                    "==",
                    "0.20.1"
                ]
            ]
        },
        {
            "name": "exceptiongroup",
            "specs": [
                [
                    "==",
                    "1.1.3"
                ]
            ]
        },
        {
            "name": "frozenlist",
            "specs": [
                [
                    "==",
                    "1.4.0"
                ]
            ]
        },
        {
            "name": "hupper",
            "specs": [
                [
                    "==",
                    "1.12"
                ]
            ]
        },
        {
            "name": "idna",
            "specs": [
                [
                    "==",
                    "3.4"
                ]
            ]
        },
        {
            "name": "imagesize",
            "specs": [
                [
                    "==",
                    "1.4.1"
                ]
            ]
        },
        {
            "name": "importlib-metadata",
            "specs": [
                [
                    "==",
                    "6.8.0"
                ]
            ]
        },
        {
            "name": "iniconfig",
            "specs": [
                [
                    "==",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "itsdangerous",
            "specs": [
                [
                    "==",
                    "2.1.2"
                ]
            ]
        },
        {
            "name": "jinja2",
            "specs": [
                [
                    "==",
                    "3.1.2"
                ]
            ]
        },
        {
            "name": "lazy",
            "specs": [
                [
                    "==",
                    "1.6"
                ]
            ]
        },
        {
            "name": "markupsafe",
            "specs": [
                [
                    "==",
                    "2.1.3"
                ]
            ]
        },
        {
            "name": "mock",
            "specs": [
                [
                    "==",
                    "5.1.0"
                ]
            ]
        },
        {
            "name": "multidict",
            "specs": [
                [
                    "==",
                    "6.0.4"
                ]
            ]
        },
        {
            "name": "packaging",
            "specs": [
                [
                    "==",
                    "21.3"
                ]
            ]
        },
        {
            "name": "passlib",
            "specs": [
                [
                    "==",
                    "1.7.4"
                ]
            ]
        },
        {
            "name": "pastedeploy",
            "specs": [
                [
                    "==",
                    "3.0.1"
                ]
            ]
        },
        {
            "name": "pep517",
            "specs": [
                [
                    "==",
                    "0.13.0"
                ]
            ]
        },
        {
            "name": "pkginfo",
            "specs": [
                [
                    "==",
                    "1.9.6"
                ]
            ]
        },
        {
            "name": "plaster",
            "specs": [
                [
                    "==",
                    "1.1.2"
                ]
            ]
        },
        {
            "name": "plaster-pastedeploy",
            "specs": [
                [
                    "==",
                    "1.0.1"
                ]
            ]
        },
        {
            "name": "platformdirs",
            "specs": [
                [
                    "==",
                    "3.11.0"
                ]
            ]
        },
        {
            "name": "pluggy",
            "specs": [
                [
                    "==",
                    "1.3.0"
                ]
            ]
        },
        {
            "name": "py",
            "specs": [
                [
                    "==",
                    "1.11.0"
                ]
            ]
        },
        {
            "name": "pycparser",
            "specs": [
                [
                    "==",
                    "2.21"
                ]
            ]
        },
        {
            "name": "pygments",
            "specs": [
                [
                    "==",
                    "2.16.1"
                ]
            ]
        },
        {
            "name": "pyparsing",
            "specs": [
                [
                    "==",
                    "3.1.1"
                ]
            ]
        },
        {
            "name": "pyproject-hooks",
            "specs": [
                [
                    "==",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "pyramid",
            "specs": [
                [
                    "==",
                    "2.0.2"
                ]
            ]
        },
        {
            "name": "pytest",
            "specs": [
                [
                    "==",
                    "7.4.2"
                ]
            ]
        },
        {
            "name": "pytest-cov",
            "specs": [
                [
                    "==",
                    "4.1.0"
                ]
            ]
        },
        {
            "name": "python-dateutil",
            "specs": [
                [
                    "==",
                    "2.8.2"
                ]
            ]
        },
        {
            "name": "pytz",
            "specs": [
                [
                    "==",
                    "2023.3.post1"
                ]
            ]
        },
        {
            "name": "repoze-lru",
            "specs": [
                [
                    "==",
                    "0.7"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    "==",
                    "2.31.0"
                ]
            ]
        },
        {
            "name": "ruamel-yaml",
            "specs": [
                [
                    "==",
                    "0.17.35"
                ]
            ]
        },
        {
            "name": "ruamel-yaml-clib",
            "specs": [
                [
                    "==",
                    "0.2.8"
                ]
            ]
        },
        {
            "name": "setuptools-scm",
            "specs": [
                [
                    "==",
                    "8.0.4"
                ]
            ]
        },
        {
            "name": "six",
            "specs": [
                [
                    "==",
                    "1.16.0"
                ]
            ]
        },
        {
            "name": "snowballstemmer",
            "specs": [
                [
                    "==",
                    "2.2.0"
                ]
            ]
        },
        {
            "name": "sphinx",
            "specs": [
                [
                    "==",
                    "7.1.2"
                ]
            ]
        },
        {
            "name": "sphinxcontrib-applehelp",
            "specs": [
                [
                    "==",
                    "1.0.4"
                ]
            ]
        },
        {
            "name": "sphinxcontrib-devhelp",
            "specs": [
                [
                    "==",
                    "1.0.2"
                ]
            ]
        },
        {
            "name": "sphinxcontrib-htmlhelp",
            "specs": [
                [
                    "==",
                    "2.0.1"
                ]
            ]
        },
        {
            "name": "sphinxcontrib-jsmath",
            "specs": [
                [
                    "==",
                    "1.0.1"
                ]
            ]
        },
        {
            "name": "sphinxcontrib-qthelp",
            "specs": [
                [
                    "==",
                    "1.0.3"
                ]
            ]
        },
        {
            "name": "sphinxcontrib-serializinghtml",
            "specs": [
                [
                    "==",
                    "1.1.5"
                ]
            ]
        },
        {
            "name": "strictyaml",
            "specs": [
                [
                    "==",
                    "1.7.3"
                ]
            ]
        },
        {
            "name": "tomli",
            "specs": [
                [
                    "==",
                    "2.0.1"
                ]
            ]
        },
        {
            "name": "translationstring",
            "specs": [
                [
                    "==",
                    "1.4"
                ]
            ]
        },
        {
            "name": "twitter-common-contextutil",
            "specs": [
                [
                    "==",
                    "0.3.11"
                ]
            ]
        },
        {
            "name": "twitter-common-dirutil",
            "specs": [
                [
                    "==",
                    "0.3.11"
                ]
            ]
        },
        {
            "name": "twitter-common-lang",
            "specs": [
                [
                    "==",
                    "0.3.11"
                ]
            ]
        },
        {
            "name": "typing-extensions",
            "specs": [
                [
                    "==",
                    "4.8.0"
                ]
            ]
        },
        {
            "name": "urllib3",
            "specs": [
                [
                    "==",
                    "2.0.6"
                ]
            ]
        },
        {
            "name": "venusian",
            "specs": [
                [
                    "==",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "waitress",
            "specs": [
                [
                    "==",
                    "2.1.2"
                ]
            ]
        },
        {
            "name": "webob",
            "specs": [
                [
                    "==",
                    "1.8.7"
                ]
            ]
        },
        {
            "name": "yarl",
            "specs": [
                [
                    "==",
                    "1.9.2"
                ]
            ]
        },
        {
            "name": "zipp",
            "specs": [
                [
                    "==",
                    "3.17.0"
                ]
            ]
        },
        {
            "name": "zope-deprecation",
            "specs": [
                [
                    "==",
                    "5.0"
                ]
            ]
        },
        {
            "name": "zope-interface",
            "specs": [
                [
                    "==",
                    "6.0"
                ]
            ]
        }
    ],
    "lcname": "devpi-plumber"
}
        
Elapsed time: 0.12652s