{ "info": { "author": "Sever Banesiu", "author_email": "banesiu.sever@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: System :: Logging" ], "description": "######\ngraypy\n######\n\n.. image:: https://img.shields.io/pypi/v/graypy.svg\n :target: https://pypi.python.org/pypi/graypy\n :alt: PyPI Status\n\n.. image:: https://travis-ci.org/severb/graypy.svg?branch=master\n :target: https://travis-ci.org/severb/graypy\n :alt: Build Status\n\n.. image:: https://readthedocs.org/projects/graypy/badge/?version=stable\n :target: https://graypy.readthedocs.io/en/stable/?badge=stable\n :alt: Documentation Status\n\n.. image:: https://codecov.io/gh/severb/graypy/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/severb/graypy\n :alt: Coverage Status\n\nDescription\n===========\n\nPython logging handlers that send log messages in the\nGraylog Extended Log Format (GELF_).\n\ngraypy supports sending GELF logs to both Graylog2 and Graylog3 servers.\n\nInstalling\n==========\n\nUsing pip\n---------\n\nInstall the basic graypy python logging handlers:\n\n.. code-block:: console\n\n pip install graypy\n\nInstall with requirements for ``GELFRabbitHandler``:\n\n.. code-block:: console\n\n pip install graypy[amqp]\n\nUsing easy_install\n------------------\n\nInstall the basic graypy python logging handlers:\n\n.. code-block:: console\n\n easy_install graypy\n\nInstall with requirements for ``GELFRabbitHandler``:\n\n.. code-block:: console\n\n easy_install graypy[amqp]\n\nUsage\n=====\n\ngraypy sends GELF logs to a Graylog server via subclasses of the python\n`logging.Handler`_ class.\n\nBelow is the list of ready to run GELF logging handlers defined by graypy:\n\n* ``GELFUDPHandler`` - UDP log forwarding\n* ``GELFTCPHandler`` - TCP log forwarding\n* ``GELFTLSHandler`` - TCP log forwarding with TLS support\n* ``GELFHTTPHandler`` - HTTP log forwarding\n* ``GELFRabbitHandler`` - RabbitMQ log forwarding\n\nUDP Logging\n-----------\n\nUDP Log forwarding to a locally hosted Graylog server can be easily done with\nthe ``GELFUDPHandler``:\n\n.. code-block:: python\n\n import logging\n import graypy\n\n my_logger = logging.getLogger('test_logger')\n my_logger.setLevel(logging.DEBUG)\n\n handler = graypy.GELFUDPHandler('localhost', 12201)\n my_logger.addHandler(handler)\n\n my_logger.debug('Hello Graylog.')\n\n\nUDP GELF Chunkers\n^^^^^^^^^^^^^^^^^\n\n`GELF UDP Chunking`_ is supported by the ``GELFUDPHandler`` and is defined by\nthe ``gelf_chunker`` argument within its constructor. By default the\n``GELFWarningChunker`` is used, thus, GELF messages that chunk overflow\n(i.e. consisting of more than 128 chunks) will issue a\n``GELFChunkOverflowWarning`` and **will be dropped**.\n\nOther ``gelf_chunker`` options are also available:\n\n* ``BaseGELFChunker`` silently drops GELF messages that chunk overflow\n* ``GELFTruncatingChunker`` issues a ``GELFChunkOverflowWarning`` and\n simplifies and truncates GELF messages that chunk overflow in a attempt\n to send some content to Graylog. If this process fails to prevent\n another chunk overflow a ``GELFTruncationFailureWarning`` is issued.\n\nRabbitMQ Logging\n----------------\n\nAlternately, use ``GELFRabbitHandler`` to send messages to RabbitMQ and\nconfigure your Graylog server to consume messages via AMQP. This prevents log\nmessages from being lost due to dropped UDP packets (``GELFUDPHandler`` sends\nmessages to Graylog using UDP). You will need to configure RabbitMQ with a\n``gelf_log`` queue and bind it to the ``logging.gelf`` exchange so messages\nare properly routed to a queue that can be consumed by Graylog (the queue and\nexchange names may be customized to your liking).\n\n.. code-block:: python\n\n import logging\n import graypy\n\n my_logger = logging.getLogger('test_logger')\n my_logger.setLevel(logging.DEBUG)\n\n handler = graypy.GELFRabbitHandler('amqp://guest:guest@localhost/', exchange='logging.gelf')\n my_logger.addHandler(handler)\n\n my_logger.debug('Hello Graylog.')\n\nDjango Logging\n--------------\n\nIt's easy to integrate ``graypy`` with Django's logging settings. Just add a\nnew handler in your ``settings.py``:\n\n.. code-block:: python\n\n LOGGING = {\n 'version': 1,\n # other dictConfig keys here...\n 'handlers': {\n 'graypy': {\n 'level': 'WARNING',\n 'class': 'graypy.GELFUDPHandler',\n 'host': 'localhost',\n 'port': 12201,\n },\n },\n 'loggers': {\n 'django.request': {\n 'handlers': ['graypy'],\n 'level': 'ERROR',\n 'propagate': True,\n },\n },\n }\n\nTraceback Logging\n-----------------\n\nBy default log captured exception tracebacks are added to the GELF log as\n``full_message`` fields:\n\n.. code-block:: python\n\n import logging\n import graypy\n\n my_logger = logging.getLogger('test_logger')\n my_logger.setLevel(logging.DEBUG)\n\n handler = graypy.GELFUDPHandler('localhost', 12201)\n my_logger.addHandler(handler)\n\n try:\n puff_the_magic_dragon()\n except NameError:\n my_logger.debug('No dragons here.', exc_info=1)\n\nDefault Logging Fields\n----------------------\n\nBy default a number of debugging logging fields are automatically added to the\nGELF log if available:\n\n * function\n * pid\n * process_name\n * thread_name\n\nYou can disable automatically adding these debugging logging fields by\nspecifying ``debugging_fields=False`` in the handler's constructor:\n\n.. code-block:: python\n\n handler = graypy.GELFUDPHandler('localhost', 12201, debugging_fields=False)\n\nAdding Custom Logging Fields\n----------------------------\n\ngraypy also supports including custom fields in the GELF logs sent to Graylog.\nThis can be done by using Python's LoggerAdapter_ and Filter_ classes.\n\nUsing LoggerAdapter\n^^^^^^^^^^^^^^^^^^^\n\nLoggerAdapter_ makes it easy to add static information to your GELF log\nmessages:\n\n.. code-block:: python\n\n import logging\n import graypy\n\n my_logger = logging.getLogger('test_logger')\n my_logger.setLevel(logging.DEBUG)\n\n handler = graypy.GELFUDPHandler('localhost', 12201)\n my_logger.addHandler(handler)\n\n my_adapter = logging.LoggerAdapter(logging.getLogger('test_logger'),\n {'username': 'John'})\n\n my_adapter.debug('Hello Graylog from John.')\n\nUsing Filter\n^^^^^^^^^^^^\n\nFilter_ gives more flexibility and allows for dynamic information to be\nadded to your GELF logs:\n\n.. code-block:: python\n\n import logging\n import graypy\n\n class UsernameFilter(logging.Filter):\n def __init__(self):\n # In an actual use case would dynamically get this\n # (e.g. from memcache)\n self.username = 'John'\n\n def filter(self, record):\n record.username = self.username\n return True\n\n my_logger = logging.getLogger('test_logger')\n my_logger.setLevel(logging.DEBUG)\n\n handler = graypy.GELFUDPHandler('localhost', 12201)\n my_logger.addHandler(handler)\n\n my_logger.addFilter(UsernameFilter())\n\n my_logger.debug('Hello Graylog from John.')\n\nContributors\n============\n\n * Sever Banesiu\n * Daniel Miller\n * Tushar Makkar\n * Nathan Klapstein\n\n.. _GELF: https://docs.graylog.org/en/latest/pages/gelf.html\n.. _logging.Handler: https://docs.python.org/3/library/logging.html#logging.Handler\n.. _GELF UDP Chunking: https://docs.graylog.org/en/latest/pages/gelf.html#chunking\n.. _LoggerAdapter: https://docs.python.org/howto/logging-cookbook.html#using-loggeradapters-to-impart-contextual-information\n.. _Filter: https://docs.python.org/howto/logging-cookbook.html#using-filters-to-impart-contextual-information\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/severb/graypy", "keywords": "logging gelf graylog2 graylog udp amqp", "license": "BSD License", "maintainer": "", "maintainer_email": "", "name": "graypy", "package_url": "https://pypi.org/project/graypy/", "platform": "", "project_url": "https://pypi.org/project/graypy/", "project_urls": { "Homepage": "https://github.com/severb/graypy" }, "release_url": "https://pypi.org/project/graypy/2.1.0/", "requires_dist": [ "amqplib (==1.0.2) ; extra == 'amqp'", "sphinx (<3.0.0,>=2.1.2) ; extra == 'docs'", "sphinx-rtd-theme (<1.0.0,>=0.4.3) ; extra == 'docs'", "sphinx-autodoc-typehints (<2.0.0,>=1.6.0) ; extra == 'docs'" ], "requires_python": "", "summary": "Python logging handlers that send messages in the Graylog Extended Log Format (GELF).", "version": "2.1.0" }, "last_serial": 5909369, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "465ea028c5353774b1bd9dce3de5e9e8", "sha256": "43ff7e4f9ebd8611078a2c4c78a64f3dbf54cba8a3d07b786a46d1587c1ec997" }, "downloads": -1, "filename": "graypy-0.1.tar.gz", "has_sig": false, "md5_digest": "465ea028c5353774b1bd9dce3de5e9e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2327, "upload_time": "2011-02-26T23:27:21", "url": "https://files.pythonhosted.org/packages/8b/6d/9922ddc03d951229ae6e01d9fcd006edf90392dd29cbdd03b9fe2c7ee09c/graypy-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "9adc3bd33e6e7c53789e76429d10d111", "sha256": "18091cb5de977f8b1ceebb0d16fe5db98c60abaaaf2059ce86d30e5c8003f3ec" }, "downloads": -1, "filename": "graypy-0.2.tar.gz", "has_sig": false, "md5_digest": "9adc3bd33e6e7c53789e76429d10d111", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2322, "upload_time": "2011-04-10T10:19:46", "url": "https://files.pythonhosted.org/packages/0a/fa/c4e34c1e0cb830f5bf80a247c820a658d0b8ce162ad500ebe9dd3b8dc367/graypy-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "36331dbed1cc17edfa6f7e732725a70f", "sha256": "8b30f98159937237cf49046e0ce3ec018dc0f526eea4985ffa4c8f26cf3c3b42" }, "downloads": -1, "filename": "graypy-0.2.1.tar.gz", "has_sig": false, "md5_digest": "36331dbed1cc17edfa6f7e732725a70f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2333, "upload_time": "2011-09-12T20:21:40", "url": "https://files.pythonhosted.org/packages/60/83/2ae4c0a5af05d8d453591c14e968148ca0e2ed8767e70c4ee883c58a6e22/graypy-0.2.1.tar.gz" } ], "0.2.10": [ { "comment_text": "", "digests": { "md5": "76e17c886b7aadee571730fa597a55ee", "sha256": "fc879c91c659218f27500596ac0e4966d3995433ae7f68c994570bd5f9b6df38" }, "downloads": -1, "filename": "graypy-0.2.10.tar.gz", "has_sig": false, "md5_digest": "76e17c886b7aadee571730fa597a55ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6927, "upload_time": "2014-06-14T14:26:47", "url": "https://files.pythonhosted.org/packages/4a/be/4e751aeafaebf8a5a765326a21024eca44f541e04b3bf5545b7cc2d268d4/graypy-0.2.10.tar.gz" } ], "0.2.11": [ { "comment_text": "", "digests": { "md5": "1891f5927399491d81b62381e62b6d36", "sha256": "146e149aafc07256a6058016ad8d9059b5f4228bd556d5dda9116e533a6ae501" }, "downloads": -1, "filename": "graypy-0.2.11.tar.gz", "has_sig": false, "md5_digest": "1891f5927399491d81b62381e62b6d36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6975, "upload_time": "2014-09-09T12:21:18", "url": "https://files.pythonhosted.org/packages/fb/68/dd52a04447200558ed91614cf4d127553ad1fb0046b70407937698a4c349/graypy-0.2.11.tar.gz" } ], "0.2.12": [ { "comment_text": "", "digests": { "md5": "0e925f9a42f9fb4ed834e2be22e68d0d", "sha256": "eae1c81f6ee1b3372f5e16bc0e6637fb453696be024a177e846ff128a9e83e37" }, "downloads": -1, "filename": "graypy-0.2.12-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0e925f9a42f9fb4ed834e2be22e68d0d", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 9899, "upload_time": "2015-09-14T08:46:52", "url": "https://files.pythonhosted.org/packages/1d/49/132a1e6022e00a7e1b229483a46b42cac70792d443915afcf3d13c75b8e3/graypy-0.2.12-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "88c98e48880b42cd4bb3fd078f303093", "sha256": "aebc47aa7b0812346b2bf14ab3086d40b42458ce30f6eaf1e0f7e946928176a5" }, "downloads": -1, "filename": "graypy-0.2.12.tar.gz", "has_sig": false, "md5_digest": "88c98e48880b42cd4bb3fd078f303093", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7147, "upload_time": "2015-09-14T08:46:48", "url": "https://files.pythonhosted.org/packages/4d/9c/cf1b382ee7346dc398ceb04bd2280acd7116780f10c936bd9107c070101c/graypy-0.2.12.tar.gz" } ], "0.2.13": [ { "comment_text": "", "digests": { "md5": "1bb2f875c7b43adbe879065ab3e071be", "sha256": "99f82c815836f95e398459069a15d3fe377cc006c6b3cc0a7e02bb2de23bedf0" }, "downloads": -1, "filename": "graypy-0.2.13-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1bb2f875c7b43adbe879065ab3e071be", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10167, "upload_time": "2016-05-16T16:10:45", "url": "https://files.pythonhosted.org/packages/d3/b5/aa51ef87a51ca1c0f34ff0c1e943c0eef346183f4ccbc352bad2050497d6/graypy-0.2.13-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ee0a3c788f54284fd850e3ef65e60687", "sha256": "7ac9455c60eca63372d45bbc6a78aad5bc6a5442e4386efb77417e50cb5cb1e9" }, "downloads": -1, "filename": "graypy-0.2.13.tar.gz", "has_sig": false, "md5_digest": "ee0a3c788f54284fd850e3ef65e60687", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7343, "upload_time": "2016-05-16T16:08:37", "url": "https://files.pythonhosted.org/packages/1e/87/4b94c335303f74667efdc8461e02a9705b05c5b801bab308efa762dce447/graypy-0.2.13.tar.gz" } ], "0.2.14": [ { "comment_text": "", "digests": { "md5": "65b209af2d342f26288b002e2293f06e", "sha256": "1a38da6a17b02b8d016fde64618effc611b6fcb092200728da622760e612c175" }, "downloads": -1, "filename": "graypy-0.2.14-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "65b209af2d342f26288b002e2293f06e", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10221, "upload_time": "2016-07-11T18:23:51", "url": "https://files.pythonhosted.org/packages/ec/41/2c80a16409c46ab132331c1e3f99f5f0d983336f9db9e94da7a6f84c2b9b/graypy-0.2.14-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "97c59964eec25c52777110f6b477cbe9", "sha256": "1f5b917e9152d3ea4593a0e98d50b4ef3e6f369f9b53b60f0546eb9aa96fde8d" }, "downloads": -1, "filename": "graypy-0.2.14.tar.gz", "has_sig": false, "md5_digest": "97c59964eec25c52777110f6b477cbe9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7407, "upload_time": "2016-07-11T18:23:25", "url": "https://files.pythonhosted.org/packages/10/2c/166c0ef6c2798cc897ca671ea68a6bbc9b576f5dd8ff83cf134e1a64a29e/graypy-0.2.14.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "0b6a7e1440df051888265c0f487e3836", "sha256": "77c8a1c2ba092fd8cc8bf83e85ce9052b008fa27fa427a044b3b3fcc1c6c3c41" }, "downloads": -1, "filename": "graypy-0.2.2.tar.gz", "has_sig": false, "md5_digest": "0b6a7e1440df051888265c0f487e3836", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4121, "upload_time": "2011-11-19T11:16:02", "url": "https://files.pythonhosted.org/packages/f8/50/0b8c4b4becfd1b53b61ed6abdebf2967b33060937e0b8be9ed0639f49bb5/graypy-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "0207081345d9c038da01b5b9e196ec53", "sha256": "fb329ae6b0cb80a6339ecc92e0115ffe5c39dbc6c1fe7e02b21bee7b8e341c4f" }, "downloads": -1, "filename": "graypy-0.2.3.tar.gz", "has_sig": false, "md5_digest": "0207081345d9c038da01b5b9e196ec53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4267, "upload_time": "2012-01-15T00:45:44", "url": "https://files.pythonhosted.org/packages/11/88/69a3106c2c18e1a9436796375d662a1728da113a7c06fe0de53190b6273a/graypy-0.2.3.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "4b98a72a50ec82ed0c057c3eb1917929", "sha256": "4bac9457014246e52a8f748528ee5cbd0f06b791b52976d2fac7aaec10f8f41c" }, "downloads": -1, "filename": "graypy-0.2.5.tar.gz", "has_sig": false, "md5_digest": "4b98a72a50ec82ed0c057c3eb1917929", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5847, "upload_time": "2012-08-18T14:51:18", "url": "https://files.pythonhosted.org/packages/0a/fc/7d031ffad0e6897e127c0ba69da4fa7843360ad2ebd20250c63b03b35ec2/graypy-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "93bb49d7c66119f097f50528880dbad3", "sha256": "c7bf7842ae6bb71ce22ef22094e7aca11233a39e311a2c046c758711307dd214" }, "downloads": -1, "filename": "graypy-0.2.6.tar.gz", "has_sig": false, "md5_digest": "93bb49d7c66119f097f50528880dbad3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5868, "upload_time": "2012-09-13T08:23:31", "url": "https://files.pythonhosted.org/packages/3c/88/f6fe62d880dbd3f783a2d7794686bc94ace507d70d4283825b2b64e0af25/graypy-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "a94a44069623b7cb831e15fe32d43d13", "sha256": "7253e429a0219a6de7f3a06fdd560d8073ebb7a14ed9ab850c2366fb7124f6c8" }, "downloads": -1, "filename": "graypy-0.2.7.tar.gz", "has_sig": false, "md5_digest": "a94a44069623b7cb831e15fe32d43d13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6173, "upload_time": "2012-11-13T10:09:22", "url": "https://files.pythonhosted.org/packages/d4/06/161670573c6404deb6b51a20bf3d30b986ca784c4f82ff5e4f7d48e041ce/graypy-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "8de39b3ab83391da03a57b58353f48e7", "sha256": "d8d1589391758a82d6419b6531576fa776ffd376d31ca2314133fa87bfea54f5" }, "downloads": -1, "filename": "graypy-0.2.8.tar.gz", "has_sig": false, "md5_digest": "8de39b3ab83391da03a57b58353f48e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6255, "upload_time": "2013-02-28T08:37:50", "url": "https://files.pythonhosted.org/packages/0c/d1/0084d535440938f157ff05949f036931d87a0761c3c62a6c91de1879cc13/graypy-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "47431a8fab6800b3de766d8c715303fd", "sha256": "b5dc9ba8744cc6fe2e79e877ed66a91d7314403db9c748e5a3046bf0cf6f60e9" }, "downloads": -1, "filename": "graypy-0.2.9.tar.gz", "has_sig": false, "md5_digest": "47431a8fab6800b3de766d8c715303fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6714, "upload_time": "2013-05-20T20:46:25", "url": "https://files.pythonhosted.org/packages/8b/26/9db16762bf98fa11583ff71edc3e1f05d8af0a7edbbe19e15b6d0f2b64c4/graypy-0.2.9.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "83e4e01ca2fcc88a77d910eade696314", "sha256": "a07936082b0bfad1b34e768f3cb265de19b3db7a621f7b9d09e46372e40a5320" }, "downloads": -1, "filename": "graypy-0.3.tar.gz", "has_sig": false, "md5_digest": "83e4e01ca2fcc88a77d910eade696314", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7795, "upload_time": "2018-04-30T18:35:36", "url": "https://files.pythonhosted.org/packages/c6/57/0ee45ca58c0f3dbf15e2d42c57f497b5cdd67e9629d55c79b073e178df09/graypy-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "04a66d10e04929b9675b79f9e3b678aa", "sha256": "13492a11caab912d7fe65ce2b95462887931b93f8d622e26f7c58fa5ac31581f" }, "downloads": -1, "filename": "graypy-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "04a66d10e04929b9675b79f9e3b678aa", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 11888, "upload_time": "2018-08-20T18:06:19", "url": "https://files.pythonhosted.org/packages/44/66/4e9af3fa8b61d4c4ba562086fe1c6bbf3b74d795f25e423c23685af43b32/graypy-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4c3d5b6fc61c6c39e03c822bf37904b5", "sha256": "dc4d46d64d12ad7061b1bac6764f69e8f03d476acb26e84b655fb116779bc499" }, "downloads": -1, "filename": "graypy-0.3.1.tar.gz", "has_sig": false, "md5_digest": "4c3d5b6fc61c6c39e03c822bf37904b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10230, "upload_time": "2018-08-20T18:06:40", "url": "https://files.pythonhosted.org/packages/c6/cf/da148350e6fe8ea923ac7e44a95bc1cde9cfcd2511e20b5e09a8393f68bc/graypy-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "43cb5ef999ae2842d86f4e8a3e60b58f", "sha256": "b3cda53ecd5b278a725f2949fbc80b16d30065a994910d6e25e2bfc1fe230134" }, "downloads": -1, "filename": "graypy-0.3.2.tar.gz", "has_sig": false, "md5_digest": "43cb5ef999ae2842d86f4e8a3e60b58f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11230, "upload_time": "2019-02-04T19:23:25", "url": "https://files.pythonhosted.org/packages/99/5b/d9ad4f330a0c32bcbfb5660fb36cce76c4997f2ce98751cc66fe30187219/graypy-0.3.2.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "e217198a629d6c58d87d14d2d2c1450f", "sha256": "fe54f1c525f99647c4876be1fe336649450bc4e894c44c97ec73d0a68d76110c" }, "downloads": -1, "filename": "graypy-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e217198a629d6c58d87d14d2d2c1450f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22005, "upload_time": "2019-03-19T19:09:16", "url": "https://files.pythonhosted.org/packages/2c/1f/ff46196a077937a069e931777a016a0af096220893602f47ffe65e0a6e46/graypy-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6f0f4230285844267652cec939bd6816", "sha256": "fdbd8157c66d9c2a18b8d57f7a344e63b6bd6fc8e601ec60e7f7e0d503f7ceed" }, "downloads": -1, "filename": "graypy-1.1.1.tar.gz", "has_sig": false, "md5_digest": "6f0f4230285844267652cec939bd6816", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17559, "upload_time": "2019-03-19T19:09:17", "url": "https://files.pythonhosted.org/packages/6e/82/342f55b082722f21a00104e1142cc139931a1c7fc36c3205ccf382468b7f/graypy-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "2d39403fb42fce360a92c538292778f9", "sha256": "e0e18ac67c13129f6e75f1808ede72655763e958cbadd61e62bb1a4b764727f5" }, "downloads": -1, "filename": "graypy-1.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2d39403fb42fce360a92c538292778f9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22027, "upload_time": "2019-03-19T22:02:20", "url": "https://files.pythonhosted.org/packages/63/b7/679fe127cf3f64982f5731165facee0187cc5695839141cccf9690bb894c/graypy-1.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3a7a955e51a0f93c85c1f16348784238", "sha256": "798617c2043f0cecaa032b45630f3a487a0686653aa7556155d3afd37bef6a41" }, "downloads": -1, "filename": "graypy-1.1.2.tar.gz", "has_sig": false, "md5_digest": "3a7a955e51a0f93c85c1f16348784238", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17594, "upload_time": "2019-03-19T22:02:22", "url": "https://files.pythonhosted.org/packages/17/96/316595b7f10f513cfb519d702d8f6907bce871cffb81c3dee93556a09ae4/graypy-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "ba975c32b095621a0ebd255a9c2a96dc", "sha256": "b16f8e9543e06d51d2076b5a34c863a3bce9cf848e31b2eaf4baa78ee2e88cf7" }, "downloads": -1, "filename": "graypy-1.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ba975c32b095621a0ebd255a9c2a96dc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22022, "upload_time": "2019-07-15T23:27:18", "url": "https://files.pythonhosted.org/packages/e3/d9/f5ee5da12750d3d2da4aa1e9645ac5bfdf63bbaca3fef5dc94aac23589de/graypy-1.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79cdc62d8a451a6a0b692dea8c6b85c8", "sha256": "02690c3da79d65f1ae207b44b8b82b20543be779d09a9200d7b35ccb49ea876e" }, "downloads": -1, "filename": "graypy-1.1.3.tar.gz", "has_sig": false, "md5_digest": "79cdc62d8a451a6a0b692dea8c6b85c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17589, "upload_time": "2019-07-15T23:27:19", "url": "https://files.pythonhosted.org/packages/dd/7d/a0d86ca38ee2e0553e9e6a2269d4623624358bd82f30662f887ac0ea326c/graypy-1.1.3.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "5d58d35d62d327be2ddccf321804a538", "sha256": "1b71dd52df92249272f4a88ebd62b18cc9e2dd26e5dccb509459a8a2d1c3fddd" }, "downloads": -1, "filename": "graypy-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5d58d35d62d327be2ddccf321804a538", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26976, "upload_time": "2019-07-26T00:29:43", "url": "https://files.pythonhosted.org/packages/e6/46/745099ad906e3365d067a5794d5624fc78be35297d0f7c0630a6611fc8a6/graypy-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "97d6d723b40ca86f2c3691365e6e3cdd", "sha256": "edfa0e262dac0279a7ab54ffc4a0242d547844a763d2a76aa2e9cc4f433e60ea" }, "downloads": -1, "filename": "graypy-1.2.0.tar.gz", "has_sig": false, "md5_digest": "97d6d723b40ca86f2c3691365e6e3cdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21527, "upload_time": "2019-07-26T00:29:44", "url": "https://files.pythonhosted.org/packages/ed/6e/8e14e059bfe435d9f52b61562b7d0cc347ed226270499fef166b56d8c9d6/graypy-1.2.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "d6066222fbe1c328ea95f89f0c66df11", "sha256": "14bcc327d21071f5f0d5251eac2922607a29e08bac92614f9c7e32f1a0a2d90c" }, "downloads": -1, "filename": "graypy-2.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d6066222fbe1c328ea95f89f0c66df11", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29746, "upload_time": "2019-09-27T01:37:24", "url": "https://files.pythonhosted.org/packages/b7/2a/76a7a75ef43b239772f6bb330564df799b7bf7925cf562ca9a02103bb3da/graypy-2.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aed4a78f825bf37938a8341b20f94f8a", "sha256": "d2201d55bac16f82cfec445214be45506c5f86a596de802cc9374347eab9d4bf" }, "downloads": -1, "filename": "graypy-2.0.0.tar.gz", "has_sig": false, "md5_digest": "aed4a78f825bf37938a8341b20f94f8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23993, "upload_time": "2019-09-27T01:37:26", "url": "https://files.pythonhosted.org/packages/c3/9c/c7c5edf2a087f2b3210a0e29cd25c7ddd96457995bfc59445a19a8cf56f7/graypy-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "2bb0120d4db56496fd631ac0bd08bbaa", "sha256": "5df0102ed52fdaa24dd579bc1e4904480c2c9bbb98917a0b3241ecf510c94207" }, "downloads": -1, "filename": "graypy-2.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2bb0120d4db56496fd631ac0bd08bbaa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29907, "upload_time": "2019-09-30T22:39:24", "url": "https://files.pythonhosted.org/packages/82/80/d9de7f4747ab54aad84c479d2c3dad9171de5a7f832ce4229bcef1f472ce/graypy-2.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4d795fad43069e27b7823b7402aa64ac", "sha256": "fd8dc4a721de1278576d92db10ac015e99b4e480cf1b18892e79429fd9236e16" }, "downloads": -1, "filename": "graypy-2.1.0.tar.gz", "has_sig": false, "md5_digest": "4d795fad43069e27b7823b7402aa64ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24187, "upload_time": "2019-09-30T22:39:26", "url": "https://files.pythonhosted.org/packages/8c/13/9fd9d88a16d4333b784c0d24daf90cf93bac63c7ab031dc72d9425b7f106/graypy-2.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2bb0120d4db56496fd631ac0bd08bbaa", "sha256": "5df0102ed52fdaa24dd579bc1e4904480c2c9bbb98917a0b3241ecf510c94207" }, "downloads": -1, "filename": "graypy-2.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2bb0120d4db56496fd631ac0bd08bbaa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29907, "upload_time": "2019-09-30T22:39:24", "url": "https://files.pythonhosted.org/packages/82/80/d9de7f4747ab54aad84c479d2c3dad9171de5a7f832ce4229bcef1f472ce/graypy-2.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4d795fad43069e27b7823b7402aa64ac", "sha256": "fd8dc4a721de1278576d92db10ac015e99b4e480cf1b18892e79429fd9236e16" }, "downloads": -1, "filename": "graypy-2.1.0.tar.gz", "has_sig": false, "md5_digest": "4d795fad43069e27b7823b7402aa64ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24187, "upload_time": "2019-09-30T22:39:26", "url": "https://files.pythonhosted.org/packages/8c/13/9fd9d88a16d4333b784c0d24daf90cf93bac63c7ab031dc72d9425b7f106/graypy-2.1.0.tar.gz" } ] }