{ "info": { "author": "Ross Delinger", "author_email": "rdelinge@redhat.com", "bugtrack_url": null, "classifiers": [], "description": "Fedora Badges\n=============\n\nThis repo contains the consumer and the command necessary to hook the\nbadges stack (Tahrir, Tahrir-API, Tahrir-REST) into fedmsg. It is the process\nthat runs in the background, monitoring activity of Fedora contributors, and is\nresponsible for awarding badges for activity as it happens. It is separate\nfrom and sometimes confused with the *frontend* of the badges system; that web\napplication is called `tahrir `_. This\nproject (fedbadges) writes to a database that the web frontend (tahrir) reads\nfrom.\n\nThe *actual badge rules* that we act on in Fedora Infrastructure can be\nfound `here `.\n\nArchitecture\n------------\n\nfedbadges runs as a ``Consumer`` plugin to the ``fedmsg-hub`` (really,\na moksha-hub). When started, it will load some initial configuration\nand a set of ``BadgeRules`` (more on that later) and then sit quietly\nlistening to the fedmsg bus. Each rule (composed of some metadata,\na ``trigger``, and a set of ``criteria``) is defined on disk as a yaml file.\n\n* When a new message comes along, our ``Consumer`` looks to see if it matches\n any of the ``BadgeRules`` it has registered.\n\n* Each BadgeRule must define a ``trigger`` -- a `lightweight` check.\n When processing a message, this is the first thing that is checked. It\n defines a *pattern* that the message must match. If the message does not\n match, then the current BadgeRule is discarded and processing moves to\n the next.\n\n A ``trigger`` is typically something like \"any bodhi message\"\n or \"messages only from the failure of a koji build\". More on their\n specification below.\n\n* BadgeRules must also define a set of ``criteria`` -- a more `heavyweight`\n checks. During the processing of a newly received message, if the\n message matches a BadgeRule's ``trigger``, the ``criteria`` is then\n considered. This typically involves a more expensive query to the\n `datanommer `_ database.\n\n A BadgeRule ``criteria`` may read something like \"$user has\n pushed 200 bodhi updates to stable\" or \"$user chaired an IRC meeting\".\n\n **Aside:** Although datanommer is the only currently supported backend, we\n can implement other queryable backend in the future as needed like FAS2\n (to see if the user is in X number of groups) or even off-site services\n like libravatar (to award a badge if the user is a user of the AGPL web\n service).\n\n* If a badge's ``trigger`` and ``criteria`` both match, then the badge is\n awarded. If the BadgeRule doesn't specify, we award the badge to all\n usernames returned by a call to ``fedmsg.meta.msg2usernames(msg)``.\n\n That is usually correct -- but sometimes, a BadgeRule needs to specify\n that one particular user (not all related users) should be recipients of\n the badge. In this case, the BadgeRule may define a ``recipient``\n in dot-notation that instructs the ``Consumer`` how to extract the\n recipient's username from the received message.\n\n The badge is awarded to our deserving user via the `tahrir_api\n `_. At the end of the day,\n this amounts to adding a row in a database table for the `Tahrir\n `_ application.\n\nThere are some optimizations in place omitted above for clarity.\nFor instance, after the trigger has matched we first check if the user\nthat *would* be awarded the badge already has it. If they do, we stop\nprocessing the badge rule immediately to avoid making an unnecessary\nexpensive check against the datanommer db.\n\nConfiguration - Global\n----------------------\n\nfedbadges needs three major pieces of global configuration.\nAll configuration is loaded in the standard fedmsg way, from\npython files in ``/etc/fedmsg.d/``.\n\nFirst, generic and tahrir-related configuration. See\n`fedmsg.d/badges-global.py\n`_\nin the git repo for an example.\n\nSecond, datanommer connection information. See\n`fedmsg.d/datanommer.py\n`_\nin the git repo for an example.\n\nThird, fedbadges emits its own fedmsg messages when it awards badges. It will\nneed its own endpoint definitions for this. See `fedmsg.d/endpoints.py\n`_\nin the git repo for an example.\n\nConfiguration - BadgeRule specification\n---------------------------------------\n\nBadgeRules are specified in `YAML `_ on the file system.\n\nTriggers\n~~~~~~~~\n\nEvery BadgeRule must carry the following minimum set of metadata::\n\n # This is some metadata about the badge\n name: Like a Rock\n description: You have pushed 500 or more bodhi updates to stable status.\n creator: ralph\n\n # This is a link to the discussion about adopting this as a for-real badge.\n discussion: http://github.com/fedora-infra/badges/pull/SOME_NUMBER\n\n # A link to the image for the badge\n image_url: http://somelink.org/to-an-image.png\n\nHere's a simple example of a ``trigger``::\n\n trigger:\n category: bodhi\n\nThe above will match any bodhi message on any of the topics that come\nfrom the bodhi update system.\n\nTriggers may employ a little bit of logic to make more complex\nfilters. The following trigger will match any message that comes from\n*either* the bodhi update system or the fedora git package repos::\n\n trigger:\n category:\n any:\n - bodhi\n - git\n\nAt present triggers may directly compare themselves against only the\n`category` or the `topic` of a message. In the future we'd like to add\nmore comparisons.. in the meantime, here's an example of comparing against\nthe fully qualified message topic. This will match any message\nthat is specifically for editing a wiki page::\n\n trigger:\n topic: org.fedoraproject.prod.wiki.article.edit\n\n----\n\nThere is one additional way you can specify a trigger. If you need more\nflexibility than ``topic`` and\n``category`` allow, you may specify a custom filter expression with a\n``lambda`` filter. For example::\n\n trigger:\n lambda: \"a string of interest\" in json.dumps(msg)\n\nThe above trigger will match if the string ``\"a string of interest\"`` appears\nanywhere in the incoming message. fedbadges takes the expression you provide\nit and compiles it into a python callable on initialization. Our callable\nhere serializes the message to a JSON string before doing its comparison.\nPowerful!\n\nCriteria\n~~~~~~~~\n\nAs mentioned above in the architecture section, we currently only support\ndatanommer as a queryable backend for criteria. We hope to expand that\nin the future.\n\nDatanommer criteria are composed of three things:\n\n- A **filter** limits the scope of the query to datanommer.\n- An **operation** defines what we want to do with the filtered query.\n Currently, we can only *count* the results.\n- A **condition** defines how we want to compare the results of the\n **operation** to determine if our criteria matches or not.\n\nHere's an example of a simple criteria definition::\n\n criteria:\n filter:\n topics:\n - \"%(topic)s\"\n operation: count\n condition:\n greater than or equal to: 2\n\nThe above criteria will match if there is more than one message in datanommer\nwith the same topic as the incoming message being handled. Here, ``\"%(topic)s\"``\nis a `template variable`. Template variables will have their values\nsubstituted before the expensive check is made against datanommer.\n\n----\n\nThe above example doesn't make much sense -- we'd never use it for a real\nbadge. The criteria would be true if there were two of *any* message kicked\noff by *any* user at any time in the past. Pretty generic.\nHere's a more interesting criteria definition::\n\n criteria:\n filter:\n topics:\n - org.fedoraproject.prod.git.receive\n usernames:\n - \"%(msg.commit.username)s\"\n operation: count\n condition:\n greater than or equal to: 50\n\nThis criteria would match if there existed 50 messages of the topic\n``\"org.fedoraproject.prod.git.receive\"`` that were also kicked off by whatever\nuser is listed in the ``msg['msg']['commit']['username']`` field of the\nmessage being currently processed. In other words, this criteria would match\nif the user has pushed to the fedora git repos 50 or more times.\n\n----\n\nYou can do some fancy things with the **condition** of a datanommer\nfilter. Here's a list of the possible comparisons you can make:\n\n- ``\"is greater than or equal to\"`` or alternatively\n ``\"greater than or equal to\"``\n- ``\"greater than\"``\n- ``\"is less than or equal to\"`` or alternatively\n ``\"less than or equal to\"``\n- ``\"less than\"``\n- ``\"equal to\"`` or alternatively ``\"is equal to\"``\n- ``\"is not\"`` or alternatively ``\"is not equal to\"``\n\nAs you can see, some of them are synonyms for each other.\n\n----\n\nIf any of those don't meet your needs, you can specify a custom expression\nby using the ``lambda`` condition whereby fedbadges will compile whatever\nstatement you provide into a callable and use that at runtime. For example::\n\n\n criteria:\n filter:\n topics:\n - org.fedoraproject.prod.git.receive\n usernames:\n - \"%(msg.commit.username)s\"\n operation: count\n condition:\n lambda: value != 0 and ((value & (value - 1)) == 0)\n\nWho knows why you would want to do this, but the above criteria check will\nsucceed if the number of messages returned from the filtered datanommer query\nis exactly a power of 2.\n\nSpecifying Recipients\n~~~~~~~~~~~~~~~~~~~~~\n\nBy default, if the trigger and criteria match, fedbadges will award badges\nto all the users returned by a call to ``fedmsg.meta.msg2usernames(msg)``.\nThis *usually* corresponds with \"what users are responsible\" for this message.\nThat is *usually* what we want to award badges for.\n\nThere are some instances for which that is not what we want.\n\nTake the `org.fedoraproject.prod.fas.group.member.remove\n`_\nmessage for example. When user A removes user B from a group, both\nusernames are returned from a call to ``fedmsg.meta.msg2usernames(msg)``\nwith no further distinction as to which was removing and which was removed.\n\nImagine we have a \"Group Pruner\" badge that's awarded to group admins who\nremove inactive users from groups. We don't want to inadvertently award\nthat badge to the persons who *were removed*, only to those who *removed\nthem*.\n\nTo allow for this scenario, badges may optionally define a ``recipient``\nin dotted notation that tells fedbadges where to find the username of the\nrecipient in the originating message. For instance, the following would\nhandle the fas case we described above::\n\n\n trigger:\n topic: org.fedoraproject.prod.fas.group.member.remove\n criteria:\n filter:\n topics:\n - \"%(topic)s\"\n operation: count\n condition:\n greater than or equal to: 1\n recipient: \"%(msg.agent.username)s\"\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/fedora-infra/fedbadges", "keywords": "", "license": "GPLv2+", "maintainer": "Ralph Bean", "maintainer_email": "rbean@redhat.com", "name": "fedbadges", "package_url": "https://pypi.org/project/fedbadges/", "platform": "", "project_url": "https://pypi.org/project/fedbadges/", "project_urls": { "Homepage": "https://github.com/fedora-infra/fedbadges" }, "release_url": "https://pypi.org/project/fedbadges/1.0.2/", "requires_dist": [ "tahrir-api", "fedmsg", "fedmsg-meta-fedora-infrastructure", "PyYAML", "datanommer.models", "zope.sqlalchemy", "requests", "psutil", "moksha" ], "requires_python": "", "summary": "fedmsg consumer for awarding open badges", "version": "1.0.2" }, "last_serial": 4982302, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e84a60360b45b5c93442672e99718aea", "sha256": "d0b971e8d915f59d1983605202e3a5306ef203c3410340fa7062f0bc09034ccb" }, "downloads": -1, "filename": "fedbadges-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e84a60360b45b5c93442672e99718aea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2168, "upload_time": "2012-08-01T17:38:06", "url": "https://files.pythonhosted.org/packages/07/e6/79cb3ec788c38d5392bd7fd0f000877051cae80a6010c8e167fd610ef80b/fedbadges-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "16ce7cc1818e4f709526e9646e81a959", "sha256": "b86899f56aa5d194faeed34ea7708cf626fc6fa597e722ae8f3f727894ab956d" }, "downloads": -1, "filename": "fedbadges-0.1.1.tar.gz", "has_sig": false, "md5_digest": "16ce7cc1818e4f709526e9646e81a959", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2174, "upload_time": "2012-08-01T22:16:39", "url": "https://files.pythonhosted.org/packages/e1/59/7bb9c7607c3433e08522f0ca20b8c75c133eb33c93383160875b0c24f2dc/fedbadges-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "e506383170eb1a7ca8acb7d761e0df06", "sha256": "8dd77af410639f769832be52cb92da6e383470de780914c2ddd49b12164008c6" }, "downloads": -1, "filename": "fedbadges-0.1.2.tar.gz", "has_sig": false, "md5_digest": "e506383170eb1a7ca8acb7d761e0df06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3234, "upload_time": "2012-08-06T18:24:49", "url": "https://files.pythonhosted.org/packages/65/2c/4d6cf3cbad5d291f51ecf613aabc07d4e470d29474dfacd6ff3d4f853f2b/fedbadges-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "b2c7694a245f982239f115d02a1d5184", "sha256": "420e9c254bf0f5a523afb1c87c2ecbcb3e5de26b79dc2565b70a7fbd5e48b2ad" }, "downloads": -1, "filename": "fedbadges-0.1.3.tar.gz", "has_sig": false, "md5_digest": "b2c7694a245f982239f115d02a1d5184", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3227, "upload_time": "2012-08-06T18:48:40", "url": "https://files.pythonhosted.org/packages/af/36/6a23e09eed3ae6c04077dee317c496a79bf7ff66af22dab8a33e90698bb7/fedbadges-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "1d2944b455e4a5aebce043f1b6bef512", "sha256": "093a7dac498734dad740fbc8c6e8158166d394cfab5ac78e58ba87ce20517992" }, "downloads": -1, "filename": "fedbadges-0.1.4.tar.gz", "has_sig": false, "md5_digest": "1d2944b455e4a5aebce043f1b6bef512", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3615, "upload_time": "2012-08-06T19:51:06", "url": "https://files.pythonhosted.org/packages/d4/33/934d145968ed1d13dd5d6262eceb3c9fc4e178579d302418d9ead915ed22/fedbadges-0.1.4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "91e02fd4496966837c7a80515c7cac43", "sha256": "d8f2babc1e36e25c3cb3197997c342851c5ffef78e7b37d2dfb48546706c79d2" }, "downloads": -1, "filename": "fedbadges-0.2.0.tar.gz", "has_sig": true, "md5_digest": "91e02fd4496966837c7a80515c7cac43", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15661, "upload_time": "2013-06-07T18:24:37", "url": "https://files.pythonhosted.org/packages/91/93/5c8fac3997a127f9319c69ee342e81a99d75f0a6366205da45282818a9d3/fedbadges-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "115c3002cb904aa356e8b371df41d942", "sha256": "1e61dad914f60043ce6e55108f66b3cc73177c23f647783a8a08f5f4c1634a72" }, "downloads": -1, "filename": "fedbadges-0.2.1.tar.gz", "has_sig": true, "md5_digest": "115c3002cb904aa356e8b371df41d942", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22352, "upload_time": "2013-06-07T18:55:40", "url": "https://files.pythonhosted.org/packages/97/2a/55b45ac983e35fc2fdbcc54b4fc6bf8261351856d4cc80aee7732dea8899/fedbadges-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "be22e459f38c7fac34d8f55bcb6138f5", "sha256": "d3dcaa057c99ff74e0777f8233ae5590f35b51e3d02173f5bfc5289638945eed" }, "downloads": -1, "filename": "fedbadges-0.2.2.tar.gz", "has_sig": true, "md5_digest": "be22e459f38c7fac34d8f55bcb6138f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23311, "upload_time": "2013-07-16T15:27:26", "url": "https://files.pythonhosted.org/packages/2d/b1/471c2a6b4d9927af39f0cad191897ed0451da77c80dce354adfd5ca6c81b/fedbadges-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "16cad4d71bf68716f76f306b2e5584d7", "sha256": "0dce6ccba9a6b870fc53d67bab272632c36a5519fc4a2f3881b18db272b1819c" }, "downloads": -1, "filename": "fedbadges-0.2.3.tar.gz", "has_sig": true, "md5_digest": "16cad4d71bf68716f76f306b2e5584d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23239, "upload_time": "2013-07-17T13:36:57", "url": "https://files.pythonhosted.org/packages/1f/07/639954f478f42b7341bd7d81fcef5a1e6b310cbe36e49b34e70cdf081cd5/fedbadges-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "9dc3458553ebc9e06c9b716182e23573", "sha256": "d07adaa32eddce31d482ef6986084e82614d63a5d9fa429e7bfba1f8eb2c22ce" }, "downloads": -1, "filename": "fedbadges-0.2.4.tar.gz", "has_sig": true, "md5_digest": "9dc3458553ebc9e06c9b716182e23573", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23650, "upload_time": "2013-07-30T19:37:01", "url": "https://files.pythonhosted.org/packages/cd/8d/c84da1551387e1fa1d956b13679379feab28b4875f8bab6ebb6a528d63bc/fedbadges-0.2.4.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "e32e3f0f34ebffe03361945b3fc63ee1", "sha256": "1391574782ed47f1f64ddb83675299f80a4e7bb5dfda11503a67d747f02816be" }, "downloads": -1, "filename": "fedbadges-0.3.0.tar.gz", "has_sig": true, "md5_digest": "e32e3f0f34ebffe03361945b3fc63ee1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23788, "upload_time": "2013-08-26T20:15:14", "url": "https://files.pythonhosted.org/packages/93/d6/a2308ed24e670d3eca9b865066a464a963fc76d9298ee952e2acf5f610a7/fedbadges-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "78dfd7bdb14376c856af7e4dc71668a6", "sha256": "66f61f3b8ee67941f98392a1d1ea9736c884d16c316eadfc9ef16840e3eba918" }, "downloads": -1, "filename": "fedbadges-0.4.0.tar.gz", "has_sig": true, "md5_digest": "78dfd7bdb14376c856af7e4dc71668a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30726, "upload_time": "2014-03-04T16:28:37", "url": "https://files.pythonhosted.org/packages/05/45/d487231a62c2b47f944dfa5ceb021639c578a2813f3d8f3a861eae8a8ea6/fedbadges-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "de948b188fa8b0eccbf2811019b61dfa", "sha256": "b85975e3793bf3a8c0cf0ef7f24d1de1b7392ebcfa8006f0d2c1d88f09122c0a" }, "downloads": -1, "filename": "fedbadges-0.4.1.tar.gz", "has_sig": true, "md5_digest": "de948b188fa8b0eccbf2811019b61dfa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31474, "upload_time": "2014-03-05T15:51:06", "url": "https://files.pythonhosted.org/packages/6c/aa/a17e08afcc0d61ca141afcccf555211e3de2914a7dd39288f8e8be94dd73/fedbadges-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "3cb78a260f6814100f147f35a5176fa1", "sha256": "195b264615b0355c74aab795a76d0664031aee7321beab22350692b77bba1f3f" }, "downloads": -1, "filename": "fedbadges-0.4.2.tar.gz", "has_sig": true, "md5_digest": "3cb78a260f6814100f147f35a5176fa1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31864, "upload_time": "2014-03-31T12:26:56", "url": "https://files.pythonhosted.org/packages/bf/9e/676a22ccb3cad7d39ab1aa21b58a90020b5a829cdaf48307d15fb9812010/fedbadges-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "871e6cfd73af1ce83ce529ef90c01742", "sha256": "89e7b98efe1fad8f4bde7b54ef43c7b018f88b1f13d82646030f9269013d343a" }, "downloads": -1, "filename": "fedbadges-0.4.3.tar.gz", "has_sig": true, "md5_digest": "871e6cfd73af1ce83ce529ef90c01742", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32355, "upload_time": "2014-05-16T13:52:50", "url": "https://files.pythonhosted.org/packages/ec/ea/b258d540ad1e50bdae6f31b7d6f0c49fe092db3041c827b3ae7f59fe25bd/fedbadges-0.4.3.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "4461c5b1a7bd88fbf46aff54c9a29d08", "sha256": "870eb236693c742dfedc6f407acd853628ea17949bd773167a9678f206d5b927" }, "downloads": -1, "filename": "fedbadges-0.5.0.tar.gz", "has_sig": true, "md5_digest": "4461c5b1a7bd88fbf46aff54c9a29d08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32661, "upload_time": "2014-09-29T18:48:56", "url": "https://files.pythonhosted.org/packages/d4/bf/d18206c6afde6f1c57916d867795da000645c252da84b75ea8a1d1246d2f/fedbadges-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "b4a4ad0d4266f67cc6d943e8044edd7e", "sha256": "8ebe5979262e8c9bb71776ff209d7c5b8f54292f30aecdf39765f705adc10489" }, "downloads": -1, "filename": "fedbadges-0.5.1.tar.gz", "has_sig": true, "md5_digest": "b4a4ad0d4266f67cc6d943e8044edd7e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33715, "upload_time": "2015-05-05T15:17:58", "url": "https://files.pythonhosted.org/packages/2c/f8/8bfe4e12bb5b0c76fbea055599e3a18e8a45cdcd5afb46c89cdfb79c670a/fedbadges-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "97919c1bb5c2b85d2ebc295e18c2bf6f", "sha256": "ad8dba4479efd8031601dafa34584184266f9c9f3df952b36c5696d4e11f7060" }, "downloads": -1, "filename": "fedbadges-0.5.2.tar.gz", "has_sig": true, "md5_digest": "97919c1bb5c2b85d2ebc295e18c2bf6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33890, "upload_time": "2015-08-28T13:54:03", "url": "https://files.pythonhosted.org/packages/0c/43/e5ee0e8b042ba89cd52e6a78cf274af25fcc70f05c650b1348e48d7d1fb7/fedbadges-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "e060bb944daaaa8d2cc5b4cc755aa780", "sha256": "98c91e0f37f4267f80c1a390a80d7e240c97fe9d524ecd6cb5385bd16ba7df34" }, "downloads": -1, "filename": "fedbadges-0.5.3.tar.gz", "has_sig": true, "md5_digest": "e060bb944daaaa8d2cc5b4cc755aa780", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33578, "upload_time": "2018-11-13T17:21:24", "url": "https://files.pythonhosted.org/packages/8f/74/685fc6020aa36dd11c05cd38c2423b8014f2d50ab61742530a3c2bf282a3/fedbadges-0.5.3.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "e46a402d087bb2ba3b0c5273f9e71139", "sha256": "9d4c61eedaefef3afdca1d9479a7b0e865b08787e14f98ea00135f1828e038a9" }, "downloads": -1, "filename": "fedbadges-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e46a402d087bb2ba3b0c5273f9e71139", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23125, "upload_time": "2019-03-17T14:56:27", "url": "https://files.pythonhosted.org/packages/3c/74/4a46abb78fd092f44bca1e6fe25dc01703ba04615676416d989300616183/fedbadges-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a001edcfa0d21a66e525f88957bf58e", "sha256": "479d80acf77270a9cd5f6489a41f46eba106f12f98d89209cffcf889b35e3027" }, "downloads": -1, "filename": "fedbadges-1.0.0.tar.gz", "has_sig": false, "md5_digest": "6a001edcfa0d21a66e525f88957bf58e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34075, "upload_time": "2019-03-17T14:56:29", "url": "https://files.pythonhosted.org/packages/b5/ad/c76aa879a6440d86105a1bc15219bce17f9fafd7bc3afdcb47ecc9cbe369/fedbadges-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "c7c3cd2edcce712b039bb67ff69382b7", "sha256": "110011ecd844b602835a671a57decea3a45d52bbe561db04ba1a80b01d1c858e" }, "downloads": -1, "filename": "fedbadges-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c7c3cd2edcce712b039bb67ff69382b7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23121, "upload_time": "2019-03-21T07:48:30", "url": "https://files.pythonhosted.org/packages/04/67/5687931aeaece110e9496f7e44040e4ad148525caac969f5b44508b45792/fedbadges-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "abdb3faf54daf18cbccfc92322e19592", "sha256": "e916c45bcddb66e4471e45cf08b6986ff14578071f8218fffe8c5e1c11e75e95" }, "downloads": -1, "filename": "fedbadges-1.0.1.tar.gz", "has_sig": false, "md5_digest": "abdb3faf54daf18cbccfc92322e19592", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34148, "upload_time": "2019-03-21T07:48:32", "url": "https://files.pythonhosted.org/packages/15/6a/d63b8e5eaa219bdeadae37f6156a2169177548b178cdeeda5a90d620fe44/fedbadges-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "d5e608556a19174b84ea2bf258b2d643", "sha256": "5c7ce008077629fb265a5766c5f4c03fd51ab9e23f72838f339991d38bdda2fd" }, "downloads": -1, "filename": "fedbadges-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d5e608556a19174b84ea2bf258b2d643", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23308, "upload_time": "2019-03-25T12:50:05", "url": "https://files.pythonhosted.org/packages/42/a0/d71b8a878491dfff14bce4e68e52b6a302605366b50da1f858c9c5ac65e8/fedbadges-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e17007e9e2b0c0e9e3c10af9a6740526", "sha256": "5db9021ac790a897fa051320109dd5382671bb89b59ecce423109e8cc3b762a1" }, "downloads": -1, "filename": "fedbadges-1.0.2.tar.gz", "has_sig": false, "md5_digest": "e17007e9e2b0c0e9e3c10af9a6740526", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34321, "upload_time": "2019-03-25T12:50:07", "url": "https://files.pythonhosted.org/packages/82/14/a1f3282178e2b2ccdf104d87145aebe37b37d85bb1b33b0aa3b7887249e8/fedbadges-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d5e608556a19174b84ea2bf258b2d643", "sha256": "5c7ce008077629fb265a5766c5f4c03fd51ab9e23f72838f339991d38bdda2fd" }, "downloads": -1, "filename": "fedbadges-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d5e608556a19174b84ea2bf258b2d643", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23308, "upload_time": "2019-03-25T12:50:05", "url": "https://files.pythonhosted.org/packages/42/a0/d71b8a878491dfff14bce4e68e52b6a302605366b50da1f858c9c5ac65e8/fedbadges-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e17007e9e2b0c0e9e3c10af9a6740526", "sha256": "5db9021ac790a897fa051320109dd5382671bb89b59ecce423109e8cc3b762a1" }, "downloads": -1, "filename": "fedbadges-1.0.2.tar.gz", "has_sig": false, "md5_digest": "e17007e9e2b0c0e9e3c10af9a6740526", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34321, "upload_time": "2019-03-25T12:50:07", "url": "https://files.pythonhosted.org/packages/82/14/a1f3282178e2b2ccdf104d87145aebe37b37d85bb1b33b0aa3b7887249e8/fedbadges-1.0.2.tar.gz" } ] }