{ "info": { "author": "Vox Pupuli", "author_email": "voxpupuli@groups.io", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: POSIX", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries" ], "description": "##########\npypuppetdb\n##########\n\n.. image:: https://api.travis-ci.org/voxpupuli/pypuppetdb.png\n :target: https://travis-ci.org/voxpupuli/pypuppetdb\n\n.. image:: https://coveralls.io/repos/voxpupuli/pypuppetdb/badge.png\n :target: https://coveralls.io/repos/voxpupuli/pypuppetdb\n\n\npypuppetdtb is a library to work with PuppetDB's REST API. It is implemented\nusing the `requests` library.\n.. _requests: http://docs.python-requests.org/en/latest/\n\n**pypuppetdb >= 0.2.0 requires PuppetDB 3.0.0 or later. There is no support for\nprevious versions beyond 0.1.1**\n\n**pypuppetdb >= 0.2.2 supports PuppetDB 4.0.0. Backwards compatibility with 3.x\nis available.**\n\nThis library is a thin wrapper around the REST API providing some convenience\nfunctions and objects to request and hold data from PuppetDB.\n\nTo use this library you will need:\n * Python 2.7\n * Python 3.5, 3.6, 3.7\n\nInstallation\n============\n\nYou can install this package from source or from PyPi.\n\n.. code-block:: bash\n\n $ pip install pypuppetdb\n\n.. code-block:: bash\n\n $ git clone https://github.com/voxpupuli/pypuppetdb\n $ python setup.py install\n\nIf you wish to hack on it clone the repository but after that run:\n\n.. code-block:: bash\n\n $ pip install -r requirements.txt\n\nThis will install all the runtime requirements of pypuppetdb and the\ndependencies for the test suite and generation of documentation.\n\nPackages\n--------\nNative packages for your operating system will be provided in the near future.\n\n+------------------+-----------+--------------------------------------------+\n| OS | Status | |\n+==================+===========+============================================+\n| Debian 6/Squeeze | planned | Requires Backports |\n+------------------+-----------+--------------------------------------------+\n| Debian 7/Wheezy | planned | |\n+------------------+-----------+--------------------------------------------+\n| Ubuntu 13.04 | planned | |\n+------------------+-----------+--------------------------------------------+\n| Ubuntu 13.10 | planned | |\n+------------------+-----------+--------------------------------------------+\n| CentOS/RHEL 5 | n/a | Python 2.4 |\n+------------------+-----------+--------------------------------------------+\n| CentOS/RHEL 6 | planned | |\n+------------------+-----------+--------------------------------------------+\n| CentOS/RHEL 7 | planned | |\n+------------------+-----------+--------------------------------------------+\n| `ArchLinux`_ | available | Maintained by `Tim Meusel`_ |\n+------------------+-----------+--------------------------------------------+\n| `OpenBSD`_ | available | Maintained by `Jasper Lievisse Adriaanse`_ |\n+------------------+-----------+--------------------------------------------+\n\n.. _ArchLinux: https://aur.archlinux.org/packages/?O=0&SeB=nd&K=puppetdb&outdated=&SB=n&SO=a&PP=50&do_Search=Go\n.. _Tim Meusel: https://github.com/bastelfreak\n.. _Jasper Lievisse Adriaanse: https://github.com/jasperla\n.. _OpenBSD: http://www.openbsd.org/cgi-bin/cvsweb/ports/databases/py-puppetdb/\n\nUsage\n=====\n\nOnce you have pypuppetdb installed you can configure it to connect to PuppetDB\nand take it from there.\n\nConnecting\n----------\n\nThe first thing you need to do is to connect with PuppetDB:\n\n.. code-block:: python\n\n >>> from pypuppetdb import connect\n >>> db = connect()\n\nNodes\n-----\n\nThe following will return a generator object yielding Node objects for every\nreturned node from PuppetDB.\n\n.. code-block:: python\n\n >>> nodes = db.nodes()\n >>> for node in nodes:\n >>> print(node)\n host1\n host2\n ...\n\nTo query a single node the singular `node()` can be used:\n\n.. code-block:: python\n\n >>> node = db.node('hostname')\n >>> print(node)\n hostname\n\nNode scope\n~~~~~~~~~~\n\nThe Node objects are a bit more special in that they can query for facts and\nresources themselves. Using those methods from a node object will automatically\nadd a query to the request scoping the request to the node.\n\n.. code-block:: python\n\n >>> node = db.node('hostname')\n >>> print(node.fact('osfamily'))\n osfamily/hostname\n\nFacts\n-----\n\n.. code-block:: python\n\n >>> facts = db.facts('osfamily')\n >>> for fact in facts:\n >>> print(fact)\n osfamily/host1\n osfamily/host2\n\nThat queries PuppetDB for the 'osfamily' fact and will yield Fact objects,\none per node this fact is known for.\n\nResources\n---------\n\n.. code-block:: python\n\n >>> resources = db.resources('file')\n\nWill return a generator object containing all file resources you're managing\nacross your infrastructure. This is probably a bad idea if you have a big\nnumber of nodes as the response will be huge.\n\nCatalogs\n---------\n\n.. code-block:: python\n\n >>> catalog = db.catalog('hostname')\n >>> for res in catalog.get_resources():\n >>> print(res)\n\nWill return a Catalog object with the latest Catalog of the definded host. This\ncatalog contains the defined Resources and Edges.\n\n.. code-block:: python\n\n >>> catalog = db.catalog('hostname')\n >>> resource = catalog.get_resource('Service','ntp')\n >>> for rel in resource.relationships:\n >>> print(rel)\n Class[Ntp] - contains - Service[ntp]\n File[/etc/ntp.conf] - notifies - Service[ntp]\n File[/etc/ntp.conf] - required-by - Service[ntp]\n\n\nWill return all Relationships of a given Resource defined by type and title.\nThis will list all linked other Resources and the type of relationship.\n\nQuery Builder\n-------------\n\nStarting with version 0.3.0 pypuppetdb comes shipped with a QueryBuilder component\nthat, as the name suggests, allows users to build PuppetDB AST queries in an\nObject-Oriented fashion. Vastly superior to constructing long strings than adding\nadditional clauses to fulfill new requirements.\n\nThe following code will build a query for the Nodes endpoint to find all nodes\nbelonging to the production environment.\n\n.. code-block:: python\n\n >>> from pypuppetdb.QueryBuilder import *\n >>> op = AndOperator()\n >>> op.add(EqualsOperator('catalog_environment', 'production'))\n >>> op.add(EqualsOperator('facts_environment', 'production'))\n >>> print(op)\n [\"and\",[\"=\", \"catalog_environment\", \"production\"],[\"=\", \"facts_environment\", \"production\"]]\n\nThis functionality is based on the PuppetDB AST query string syntax documented\n`here`_.\n\n.. _here: https://docs.puppet.com/puppetdb/4.1/api/query/v4/ast.html\n\nSubqueries are implemented using corresponding operators (like documented).\n\n* SubqueryOperator\n* InOperator\n* ExtractOperator\n\n.. code-block:: python\n\n >>> from pypuppetdb.QueryBuilder import *\n >>> op = InOperator('certname')\n >>> ex = ExtractOperator()\n >>> ex.add_field(str('certname'))\n >>> sub = SubqueryOperator('events')\n >>> sub.add_query(EqualsOperator('status', 'noop'))\n >>> ex.add_query(sub)\n >>> op.add_query(ex)\n >>> print(op)\n [\"in\",\"certname\",[\"extract\",[\"certname\"],[\"select_events\",[\"=\", \"status\", \"noop\"]]]]\n\n\nOr using [in ] querying:\n\n.. code-block:: python\n\n >>> from pypuppetdb.QueryBuilder import *\n >>> op = InOperator('certname')\n >>> op.add_array([\"prod1.server.net\", \"prod2.server.net\"])\n >>> print(op)\n [\"in\",\"certname\",[\"array\", ['prod1.server.net', 'prod2.server.net']]]\n\nYou can also access different entities from a single query on the root endpoint with the FromOperator:\n\n.. code-block:: python\n\n >>> op = InOperator('certname')\n >>> ex = ExtractOperator()\n >>> ex.add_field('certname')\n >>> fr = FromOperator('fact_contents')\n >>> nd = AndOperator()\n >>> nd.add(EqualsOperator(\"path\", [\"networking\", \"eth0\", \"macaddresses\", 0]))\n >>> nd.add(EqualsOperator(\"value\", \"aa:bb:cc:dd:ee:00\"))\n >>> ex.add_query(nd)\n >>> fr.add_query(ex)\n >>> op.add_query(fr)\n >>> print(op)\n [\"in\",\"certname\",[\"from\",\"fact_contents\",[\"extract\",[\"certname\"],[\"and\",[\"=\", \"path\", ['networking', 'eth0', 'macaddresses', 0]],[\"=\", \"value\", \"aa:bb:cc:dd:ee:00\"]]]]]\n\nGetting Help\n============\nThis project is still very new so it's not inconceivable you'll run into\nissues.\n\nFor bug reports you can file an `issue`_. If you need help with something\nfeel free to pop by #voxpupuli on `Freenode`_ or the #puppetboard channel.\n\n.. _issue: https://github.com/voxpupuli/pypuppetdb/issues\n.. _Freenode: http://freenode.net\n\nDocumentation\n=============\nAPI documentation is automatically generated from the docstrings using\nSphinx's autodoc feature.\n\nDocumentation will automatically be rebuilt on every push thanks to the\nRead The Docs webhook. You can `find it here`_.\n\n.. _find it here: https://pypuppetdb.readthedocs.org/en/latest/\n\nYou can build the documentation manually by doing:\n\n.. code-block:: bash\n\n $ cd docs\n $ make html\n\nDoing so will only work if you have Sphinx installed, which you can achieve\nthrough:\n\n.. code-block:: bash\n\n $ pip install -r requirements.txt\n\nContributing\n============\n\nWe welcome contributions to this library. However, there are a few ground\nrules contributors should be aware of.\n\nLicense\n-------\nThis project is licensed under the Apache v2.0 License. As such, your\ncontributions, once accepted, are automatically covered by this license.\n\nCopyright (c) 2013-2014 Daniele Sluijters\n\nCommit messages\n---------------\nWrite decent commit messages. Don't use swear words and refrain from\nuninformative commit messages as 'fixed typo'.\n\nThe preferred format of a commit message:\n\n::\n\n docs/quickstart: Fixed a typo in the Nodes section.\n\n If needed, elaborate further on this commit. Feel free to write a\n complete blog post here if that helps us understand what this is\n all about.\n\n Fixes #4 and resolves #2.\n\nIf you'd like a more elaborate guide on how to write and format your commit\nmessages have a look at this post by `Tim Pope`_.\n\n.. _Tim Pope: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html\n\nTests\n-----\nCommits are expected to contain tests or updates to tests if they add to or\nmodify the current behavior.\n\nThe test suite is powered by `pytest`_ and requires `pytest`_, `pytest-pep8`_,\n`httpretty`_ and `pytest-httpretty`_ which will be installed for you if you\nrun:\n\n.. code-block:: bash\n\n $ pip install -r requirements.txt\n\n.. _pytest: http://pytest.org/latest/\n.. _pytest-pep8: https://pypi.python.org/pypi/pytest-pep8\n.. _httpretty: https://pypi.python.org/pypi/httpretty/\n.. _pytest-httpretty: https://github.com/papaeye/pytest-httpretty\n\nTo run the unit tests (the ones that don't require a live PuppetDB):\n\n.. code-block:: bash\n\n $ py.test -v -m unit\n\nIf the tests pass, you're golden. If not we'll have to figure out why and\nfix that. Feel free to ask for help on this.\n\n#########\nChangelog\n#########\n\n1.2.0\n=====\n\n* Add option to get nodes without using event-counts\n* define the project status as stable\n* bundle requirements-test.txt in python package\n\n1.1.0\n=====\n\n* deduplicate dependencylist\n* QueryBuilder.py: Use native data structures for internal representation\n* Add support for the Command API, /pdb/cmd/v1. Added _cmd alongside _query to minimise changes to original code\n\n1.0.0\n=====\n\n* Bump dependencies\n* QueryBuilder: Added support for FromOperator, arrays and FromOperator\n* New endpoint: status\n* POST query in request body\n* Simplify JSON encoding for POST\n* Upload and publish is built in to setuptools\n\n0.3.3\n=====\n\n* Add support for authentication with tokens\n* Fix bug with parsing results from inventory endpoint\n\n0.3.2\n=====\n\n* Fixed noop puppet runs reporting unchanged instead of noop.\n* Fixed unreported nodes shown as 'noop' in puppetdb > 4.1.0.\n* Add Inventory API endpoint for PuppetDB 4.2.0.\n* Support for producer field on catalogs, facts and report types.\n\n0.3.1\n=====\n\n* Fixed a datetime related bug in `pypuppetdb.api.nodes()` that caused\n all returned nodes to be an unreported status\n\n0.3.0\n=====\n\n* New QueryBuilder module allows users to build PuppetDB queries in an\n Object-Oriented fashion.\n* Adding support for new fields provided in PuppetDB 4.1.0.\n\n0.2.3\n=====\n\n* Removed deprecation of `pypuppetdb.types.Report.events()`. Expanded\n resource events data timestamps are not parseable.\n* Escaping additional path parameters passed to _url() with urllib.quote\n\n0.2.2\n=====\n\n* Fixed URL Encoding found when querying the specific value of a macaddress\n fact.\n* Adding support for PuppetDB 4.0.0 information. Namely Adding a catalog_uuid\n attribute to the Catalog type object. Adding code_id, catalog_uuid and\n cached_catalog_status attributes to the Report type object.\n* Removing unneeded sudo option from .travis.yml, this gave unnecessary\n warning in the test environment.\n* Updating the files under docs/ so https://pypuppetdb.readthedocs.org/en/latest/\n can be updated\n* Deprecating `pypuppetdb.types.Report.events()` in favour of the new\n events list variable.\n* Renaming test-requirements.txt to requirements.txt\n\n0.2.1\n=====\n\n* Adding a version comparison utility function using examples provided in\n http://stackoverflow.com/questions/1714027/version-number-comparison\n* Adding a new variable latest_report_hash to the Node object. Default\n None but is given a real value from the field of the same name in the\n Nodes endpoint available in PuppetDB 3.2 or higher.\n* Allowing support for 'GET' AND 'POST' requests in the api _query()\n function. This will allow clients to send requests to the PuppetDB that\n are too long for a GEt request query string\n* Adding a node field, code_id, to the Catalog object using the field of\n the same name from the Catalogs endpoint (currently unused as of\n PuppetDB 3.2.2)\n* Adding test cases for new features EXCEPT the GET and POST update.\n\n0.2.0\n=====\n\n* Version bump to 0.2.0\n* Adding support for v4 of the Query API\n* Removing v2 and v3 api functions as per changelog\n* pypuppetdb will no longer support multiple API versions, removing the\n api_version attribute from pypuppetdb.connect()\n* All clients must remove the api_version attribute from the connect function,\n or the starting number, since it is no longer supported\n* Removing all NotImplemented errors in the function of BaseAPI and filled\n them with the real code\n\nNew Features\n------------\n\nNew endpoints:\n\n* ``environments``: ``environments()``\n* ``factsets``: ``factsets()``\n* ``fact-paths``: ``fact_paths()``\n* ``fact-contents``: ``fact_contents()``\n* ``edges``: ``edges()``\n\nChanges to Types:\n\n* ``pypupperdb.types.Report`` now requires ``api`` to be passed as the second\n argument, this allows to directly query for any events that occurred in this\n report object. This functionality was proposed and denied because of backward\n compatability reasons, since the previous versions are now removed this is no\n longer a problem.\n* All ``pypupperdb.types.*`` accept the v4 API information as optional parameters.\n These parameters are primarily environment related but may include additional\n information if provided from that endpoint.\n* Functions appearing inside ``pypuppetdb.types`` that run queries against the\n PuppetDB now accept and passing additional keyword arguments to the query.\n* All ``pypuppetdb.BaseAPI`` functions pass any received keyword arguments to the\n ``pypuppetdb.api.__init__._query()`` function. This allows for easy integration\n with paging functions and parameters.\n\n0.1.1\n=====\n\n* Fix the license in our ``setup.py``. The license shouldn't be longer than\n 200 characters. We were including the full license tripping up tools like\n bdist_rpm.\n\n0.1.0\n=====\nSignificant changes have been made in this release. The complete v3 API is\nnow supported except for query pagination.\n\nMost changes are backwards compatible except for a change in the SSL\nconfiguration. The previous behaviour was buggy and slightly misleading in\nthe names the options took:\n\n* ``ssl`` has been renamed to ``ssl_verify`` and now defaults to ``True``.\n* Automatically use HTTPS if ``ssl_key`` and ``ssl_cert`` are provided.\n\nFor additional instructions about getting SSL to work see the Quickstart\nin the documentation.\n\nDeprecation\n------------\nSupport for API v2 will be dropped in the 0.2.x release series.\n\nNew features\n------------\n\nThe following features are **only** supported for **API v3**.\n\nThe ``node()`` and ``nodes()`` function have gained the following options:\n\n * ``with_status=False``\n * ``unreported=2``\n\nWhen ``with_status`` is set to ``True`` an additional query will be made using\nthe ``events-count`` endpoint scoped to the latest report. This will result in\nan additional ``events`` and ``status`` keys on the node object. ``status``\nwill be either of ``changed``, ``unchanged`` or ``failed`` depending on if\n``events`` contains ``successes`` or ``failures`` or none.\n\nBy default ``unreported`` is set to ``2``. This is only in effect when\n``with_status`` is set to ``True``. It means that if a node hasn't checked in\nfor two hours it will get a ``status`` of ``unreported`` instead.\n\nNew endpoints:\n\n * ``events-count``: ``events_count()``\n * ``aggregate-event-counts``: ``aggregate_event_counts()``\n * ``server-time``: ``server_time()``\n * ``version``: ``current_version()``\n * ``catalog``: ``catalog()``\n\nNew types:\n\n * ``pypuppetdb.types.Catalog``\n * ``pypuppetdb.types.Edge``\n\nChanges to types:\n\n * ``pypuppetdb.types.Node`` now has:\n * ``status`` defaulting to ``None``\n * ``events`` defaulting to ``None``\n * ``unreported_time`` defaulting to ``None``\n\n0.0.4\n=====\n\nDue to a fairly serious bug 0.0.3 was pulled from PyPi minutes after release.\n\nWhen a bug was fixed to be able to query for all facts we accidentally\nintroduced a different bug that caused the ``facts()`` call on a node to\nquery for all facts because we were resetting the query.\n\n* Fix a bug where ``node.facts()`` was causing us to query all facts because\n the query to scope our request was being reset.\n\n0.0.3\n=====\n\nWith the introduction of PuppetDB 1.5 a new API version, v3, was also\nintroduced. In that same release the old ``/experimental`` endpoints\nwere removed, meaning that as of PuppetDB 1.5 with the v2 API you can\nno longer get access to reports or events.\n\nIn light of this the support for the experimental endpoints has been\ncompletely removed from pypuppetdb. As of this release you can only get\nto reports and/or events through v3 of the API.\n\nThis release includes preliminary support for the v3 API. Everything that\ncould be done with v2 plus the experimental endpoints is now possible on\nv3. However, more advanced funtionality has not yet been implemented. That\nwill be the focus of the next release.\n\n* Removed dependency on pytz.\n* Fixed the behaviour of ``facts()`` and ``resources()``. We can now\n correctly query for all facts or resources.\n* Fixed an issue with catalog timestampless nodes.\n* Pass along the ``timeout`` option to ``connect()``.\n* Added preliminary PuppetDB API v3 support.\n* Removed support for the experimental endpoints.\n* The ``connect()`` method defaults to API v3 now.\n\n0.0.2\n=====\n* Fix a bug in ``setup.py`` preventing successful installation.\n\n0.0.1\n=====\nInitial release. Implements most of the v2 API.\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/voxpupuli/pypuppetdb", "keywords": "puppet puppetdb", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "pypuppetdb", "package_url": "https://pypi.org/project/pypuppetdb/", "platform": "", "project_url": "https://pypi.org/project/pypuppetdb/", "project_urls": { "Homepage": "https://github.com/voxpupuli/pypuppetdb" }, "release_url": "https://pypi.org/project/pypuppetdb/1.2.0/", "requires_dist": [ "httpretty (==0.9.6)", "requests (==2.22.0)", "six (==1.12.0)" ], "requires_python": "", "summary": "Library for working with the PuppetDB REST API.", "version": "1.2.0" }, "last_serial": 5869934, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "17530b27edd80fab35eb5a028f45ed68", "sha256": "06a6dc9a5d7a731a0d66af4dd03bb3981aeac56d4ead220f13a972ec9beb27a5" }, "downloads": -1, "filename": "pypuppetdb-0.0.1.tar.gz", "has_sig": false, "md5_digest": "17530b27edd80fab35eb5a028f45ed68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22407, "upload_time": "2013-08-06T19:10:12", "url": "https://files.pythonhosted.org/packages/ec/57/06a1d918119192723fe8e1f202e940fe1a5b4a02aef5d686951c5baae082/pypuppetdb-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "c85d400817db3e5ef9dbbb48cc182dc4", "sha256": "f792364298d0a9872ade0f7171b012ea98dc669e034afc3faa49d577eb896918" }, "downloads": -1, "filename": "pypuppetdb-0.0.2.tar.gz", "has_sig": false, "md5_digest": "c85d400817db3e5ef9dbbb48cc182dc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22648, "upload_time": "2013-08-09T14:53:08", "url": "https://files.pythonhosted.org/packages/13/4b/0ce36a130b6735d654672c77ae9c17521e6e889fb787ff7f00f6b07819b8/pypuppetdb-0.0.2.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "b9b038b5529fc703e0feb0b5e3fcfacd", "sha256": "f577b7b8b17f54aa8b9995f393b1ba9cf5bc6c85fc36fab6c07a8a434c89fa6e" }, "downloads": -1, "filename": "pypuppetdb-0.0.4.tar.gz", "has_sig": false, "md5_digest": "b9b038b5529fc703e0feb0b5e3fcfacd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24402, "upload_time": "2013-10-14T09:58:29", "url": "https://files.pythonhosted.org/packages/35/66/4cc2d6ac36c0750c14d6c225fe0468bfd3be05b3faaff0ed8a899a12c200/pypuppetdb-0.0.4.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "0751fae5ec5f9914d63879fcd3dcc131", "sha256": "7cc76b81b34e028be7fab965d090007d9f7841aab0b2ab37647205a72e320ba5" }, "downloads": -1, "filename": "pypuppetdb-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0751fae5ec5f9914d63879fcd3dcc131", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 31589, "upload_time": "2014-01-13T10:39:00", "url": "https://files.pythonhosted.org/packages/37/6a/b84d543202654b8e90606bc3bef3a05b35286dfc1c13dbc1631413fad400/pypuppetdb-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a25cd245d0b1e17073a37b844da82f7", "sha256": "b53532b310361427b907e227b3692616f9dc8447072440be80846e29beff7656" }, "downloads": -1, "filename": "pypuppetdb-0.1.0.tar.gz", "has_sig": false, "md5_digest": "6a25cd245d0b1e17073a37b844da82f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28911, "upload_time": "2014-01-13T10:38:46", "url": "https://files.pythonhosted.org/packages/ab/7c/00614beef46d3d73edd76fc7169e4bc0d00433c8000dd027609c03612d52/pypuppetdb-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "3a1f1b553e9049ab105ba72f210cfefc", "sha256": "cf4baa2c0210a527d03dc79635aa50fda15512a1478e081bc9a7c1919ae742c9" }, "downloads": -1, "filename": "pypuppetdb-0.1.1.tar.gz", "has_sig": false, "md5_digest": "3a1f1b553e9049ab105ba72f210cfefc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24203, "upload_time": "2014-01-21T14:21:50", "url": "https://files.pythonhosted.org/packages/01/c4/94e79fdec222fc7edb88c7b35e8d7b52a184e9f6201a30b41c321e1f0132/pypuppetdb-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "d97d94a80cdcf1bbbc9fee5c9c20813d", "sha256": "ef6b70b450d831a990a527e7a9f444328a24d84081a22e8afcc73c59bb1c3b84" }, "downloads": -1, "filename": "pypuppetdb-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d97d94a80cdcf1bbbc9fee5c9c20813d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29803, "upload_time": "2015-10-21T23:20:59", "url": "https://files.pythonhosted.org/packages/88/94/8bf174dc8e3162c3e2a19b024fe3f75b130afba13945b6ef70927e09c7c0/pypuppetdb-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "c19b08ceb1f264a55464a7fb6e97b543", "sha256": "db2a7a810d0cb02fd190c761181023d1a55ca713a2624f2014f076111b6e7dc3" }, "downloads": -1, "filename": "pypuppetdb-0.2.1.tar.gz", "has_sig": false, "md5_digest": "c19b08ceb1f264a55464a7fb6e97b543", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31474, "upload_time": "2015-12-27T21:07:06", "url": "https://files.pythonhosted.org/packages/6c/83/1ddbff0fbbaf78b07576f417dbe8b1a240dce44500fc79b86f13a01dac55/pypuppetdb-0.2.1.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "d0f9d111136ba4e1fc045befad6c0aa1", "sha256": "d636fb209ec1ab081463b5fd96f4630ce295d27519322afb6c3d1d5a1ba2ce1a" }, "downloads": -1, "filename": "pypuppetdb-0.2.3.tar.gz", "has_sig": false, "md5_digest": "d0f9d111136ba4e1fc045befad6c0aa1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33813, "upload_time": "2016-05-17T00:49:30", "url": "https://files.pythonhosted.org/packages/cd/56/5c0a77d2a2899550d5d8a8c70753abbeb2035cab7b64115a4671b2578fe6/pypuppetdb-0.2.3.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "962fa399024e0bbc5c60860e97e085df", "sha256": "2c4e3aa774827a6170b87e3d7c88e8a97007e1908a5e4696ee79fe131be41b51" }, "downloads": -1, "filename": "pypuppetdb-0.3.0.tar.gz", "has_sig": false, "md5_digest": "962fa399024e0bbc5c60860e97e085df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36495, "upload_time": "2016-06-11T22:20:55", "url": "https://files.pythonhosted.org/packages/2a/6c/abc479b83799d66b278dd839319ed574550f4442da1e107aa2368a4f2508/pypuppetdb-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "b9caeb7abc150f699df960b44135d1e2", "sha256": "5dc0eb79d5b6b1f2cdf5d242bc163a726db727f9d2e4a2446bbd1815f9de4d67" }, "downloads": -1, "filename": "pypuppetdb-0.3.1.tar.gz", "has_sig": false, "md5_digest": "b9caeb7abc150f699df960b44135d1e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36589, "upload_time": "2016-06-21T01:23:42", "url": "https://files.pythonhosted.org/packages/55/6a/fa04dab4fae06ed34f84ef5be3dbdce52a62b2b1999ca27449692de87cba/pypuppetdb-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "f23a1189fd2e869abff89a549a0b9325", "sha256": "85fcde9f18afa714b9540f9c8ea95e132ea98c52add3d62ea76dad16bb1aefaf" }, "downloads": -1, "filename": "pypuppetdb-0.3.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "f23a1189fd2e869abff89a549a0b9325", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35516, "upload_time": "2017-01-30T20:54:58", "url": "https://files.pythonhosted.org/packages/d4/70/816716c6519f5bb7f40ac476dde6cc1d2a2ba845fab6840306cf3e569883/pypuppetdb-0.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "800e4059956d7c5be665695458356743", "sha256": "a620d3b7fe6ea12de03e46b4c8b953677817a8805525b05c08de76be8862b49f" }, "downloads": -1, "filename": "pypuppetdb-0.3.2.tar.gz", "has_sig": true, "md5_digest": "800e4059956d7c5be665695458356743", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39346, "upload_time": "2017-01-30T20:56:44", "url": "https://files.pythonhosted.org/packages/8e/c2/fe3b867e9482f3e69684427117e7824a6ab9b0e08337ecb241ab5a82aa88/pypuppetdb-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "573a5e71e96b9b0e3391b1ac4ebba539", "sha256": "f04a89c9cb1549e868bddd74bb8eb78b50f06695ccdc24c75f75c1291ddb4f69" }, "downloads": -1, "filename": "pypuppetdb-0.3.3-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "573a5e71e96b9b0e3391b1ac4ebba539", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 36056, "upload_time": "2017-10-15T19:59:23", "url": "https://files.pythonhosted.org/packages/ec/a5/f1f6359720c6fa060c84508d3dd06a649efd425cea317b890167c9fe1fd3/pypuppetdb-0.3.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "08cc24b3f6e4c73cb852b56d0ca88832", "sha256": "793666aba36ac86f73ec13facb936b6abeae703751fdc32f0228e5b1f2a11d32" }, "downloads": -1, "filename": "pypuppetdb-0.3.3.tar.gz", "has_sig": true, "md5_digest": "08cc24b3f6e4c73cb852b56d0ca88832", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38321, "upload_time": "2017-10-15T19:59:24", "url": "https://files.pythonhosted.org/packages/1e/95/dfb4c26f253650012686721edd66e2c058fa4f5571da854da91aab3106eb/pypuppetdb-0.3.3.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "e8a8bb2b63714cf60ace28205b6298a4", "sha256": "4cfe01368647a53e163c474d086f109561b0c3a83906529a24332a8b0e0d75fa" }, "downloads": -1, "filename": "pypuppetdb-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e8a8bb2b63714cf60ace28205b6298a4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33792, "upload_time": "2019-05-30T12:15:26", "url": "https://files.pythonhosted.org/packages/c7/7b/45c58d4e071c01730bb87387ba200bdc17520258e2943e381b05ad3235fc/pypuppetdb-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d35bd99c321a88cfd7645494889a535", "sha256": "a59d104ee2cb0db1b63ca232779734cbe483a9be5bcea2d36abfb59233749bd1" }, "downloads": -1, "filename": "pypuppetdb-1.0.0.tar.gz", "has_sig": false, "md5_digest": "0d35bd99c321a88cfd7645494889a535", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42008, "upload_time": "2019-05-30T12:15:28", "url": "https://files.pythonhosted.org/packages/3b/0b/39b0ea9ce91cd2d408da7465cf7818c14884185c8ce31a5347b8492a3b36/pypuppetdb-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "a0ef13564ac912f0d9b58c0b381f45d5", "sha256": "9ac1452886c6ab4147f0ad39899928979a41c7ca3aec6f8b7ffb60a2a3355d99" }, "downloads": -1, "filename": "pypuppetdb-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a0ef13564ac912f0d9b58c0b381f45d5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34115, "upload_time": "2019-08-31T10:37:20", "url": "https://files.pythonhosted.org/packages/28/e5/2e8e0da6c495169bb32f4fef5e9409cf1a575a6b1aa6c2f9848be8fd2cac/pypuppetdb-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9faeb3876be3fa3e1ca68acdcbf8e50d", "sha256": "4a02dd45a398b30a940bb019b110bbd741c2a5a2772186a7c3c2faca0b0a41e3" }, "downloads": -1, "filename": "pypuppetdb-1.1.0.tar.gz", "has_sig": false, "md5_digest": "9faeb3876be3fa3e1ca68acdcbf8e50d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42579, "upload_time": "2019-08-31T10:37:22", "url": "https://files.pythonhosted.org/packages/30/d0/15605e4476cb634251cc04e10ad50caaf566586b9cccf7de6c73014b5c4f/pypuppetdb-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "fe0934b417279d0ef371c9ff6e4a2c01", "sha256": "5bfdd4ed16276149d49a2673405a97f7723deee9edc760837ee13aea31dd17e1" }, "downloads": -1, "filename": "pypuppetdb-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fe0934b417279d0ef371c9ff6e4a2c01", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34822, "upload_time": "2019-09-22T18:17:15", "url": "https://files.pythonhosted.org/packages/cf/46/a2f7e8afae6d4629bf2f724268a7b8a58bcb0d917f9a545873a8860411a1/pypuppetdb-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29e81890df9d14145adba7ec38fc7153", "sha256": "f251e9116ceade2b31f29b482685fecca0d06dcbe3e6a7d8d2c9b6fde722f246" }, "downloads": -1, "filename": "pypuppetdb-1.2.0.tar.gz", "has_sig": false, "md5_digest": "29e81890df9d14145adba7ec38fc7153", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43090, "upload_time": "2019-09-22T18:17:17", "url": "https://files.pythonhosted.org/packages/ed/17/5a3a3a42087a941e8948cbe8e90d85b0d3d8c61e66590ba5a399ac85dd87/pypuppetdb-1.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fe0934b417279d0ef371c9ff6e4a2c01", "sha256": "5bfdd4ed16276149d49a2673405a97f7723deee9edc760837ee13aea31dd17e1" }, "downloads": -1, "filename": "pypuppetdb-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fe0934b417279d0ef371c9ff6e4a2c01", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34822, "upload_time": "2019-09-22T18:17:15", "url": "https://files.pythonhosted.org/packages/cf/46/a2f7e8afae6d4629bf2f724268a7b8a58bcb0d917f9a545873a8860411a1/pypuppetdb-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29e81890df9d14145adba7ec38fc7153", "sha256": "f251e9116ceade2b31f29b482685fecca0d06dcbe3e6a7d8d2c9b6fde722f246" }, "downloads": -1, "filename": "pypuppetdb-1.2.0.tar.gz", "has_sig": false, "md5_digest": "29e81890df9d14145adba7ec38fc7153", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43090, "upload_time": "2019-09-22T18:17:17", "url": "https://files.pythonhosted.org/packages/ed/17/5a3a3a42087a941e8948cbe8e90d85b0d3d8c61e66590ba5a399ac85dd87/pypuppetdb-1.2.0.tar.gz" } ] }