{ "info": { "author": "algernon_solutions/jcubeta", "author_email": "jcubeta@algernon.solutions", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU Affero General Public License v3", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Algernon\n**everything you need to be serverless and amazing**\n## overview\n>Algernon works in the AWS ecosystem, so if you are somewhere else, this isn't for you #sad_emoji_face\n\nEverything in the Algernon world is broken down to the smallest unit of work, which we call a Task. \nA Task has a task_name and an optional callback. When you run a Task, you can supply it with task_kwargs, which will \nbe the payload delivered to the Task code.\n### listeners and queues\nEvery Task is associated with an SQS queue and an SNS topic. The SNS topic serves as the listener, messages sent to it \nwill be transferred to the corresponding queue for processing.\n### workers\nTo simplify deployment, a single Lambda Function may serve multiple Tasks. In this case, you should use a handler capable \nof parsing out the task_name and routing the task accordingly. We commonly use:\n```python\nfrom some_package import tasks\n\ndef handler(event, context):\n task_name = event['task_name']\n task_kwargs = event.get('task_kwargs', {})\n task_fn = getattr(tasks, task_name)\n if task_fn is None:\n raise RuntimeError(f'task: {task_name} is not registered with the system')\n results = task_fn(**task_kwargs)\n return results\n```\nThe lambda function is subscribed to the SQS queue, so as tasks are pushed into the queue from the listener, \nthe workers automatically pick them up and start working. \n\n**idempotence**\n\nBy default, workers will pull messages from the queue in batches of ten. \nIf one of the tasks in that batch fails, _the entire batch_ remains in the queue, \nmeaning all those tasks will run again. For this reason, you must be markedly diligent to make your code idempotent. Whether it \nruns once, or it runs a hundred times, the result should be the same (this includes entries to databases, additions to storage, etc)\n\n### callbacks\nOnce a task has run, the results can be sent to another Task, creating a chain. You specify the name of the next \ntask under the callback key in the Task invocation.\n\n### context\nWhen a Lambda function invokes Python code, it provides the handler with two positional arguments, event and context.\nWe hijack the context, and use it to persist resources across a batch. The original AWS context is preserved \nunder the key 'aws'. You can store your own information into this context dictionary, and those will be available \nthroughout the life of the Task Worker.\n\nCommon uses of the context is to store database connections, retrieved credentials, or other things you don't \nwant to repeat ten times when your workers pull a batch.\n\n## Objects and Utilities\n### the @queued decorator\nThis function decorator is applied to the Worker handler function. It allows you to code your handler as if \nit were being directly invoked by Lambda. The decorator takes care of parsing the batch messages from SQS and \nsending indicated callbacks.\n\n### the serializers\nAlgernon loves object oriented programming, and one of our early struggles was in trying to get our objects from Task \nto Task. To accomplish this, we provide a base object (AlgObject), which has one required class method (parse_json). \nObjects which inherit from AlgObject can be sent across the wire in Task task_kwargs.\n\nTo serialize and rebuild AlgObjects, you can use the ajson utility included in this library.\n```python\nfrom algernon import ajson, AlgObject\n\n\nclass DatabaseCredentials(AlgObject):\n def __init__(self, username, password, read_url, write_url):\n self._username = username\n self._password = password\n self._read_url = read_url\n self._write_url = write_url\n \n @classmethod\n def parse_json(cls, json_dict):\n return cls(json_dict['username'], json_dict['password'], json_dict['read_url'], json_dict['write_url'])\n \n\ncredentials = DatabaseCredentials('my_username', '31iteP@zzW0rd', 'some_db_url', 'some_other_db_url')\nstrung_credentials = ajson.dumps(credentials)\n\n# send them to the next task\n\nrebuilt_credentials = ajson.loads(strung_credentials)\n```\n\nThe ajson utility also handles some common JSON problem children. \n- Python datetime objects\n- Tuples\n- Sets\n- Decimals\n\n### the rebuild_event function\nTo support modularity, the @queued decorator does not run messages through the ajson utility before sending them to the \nTask handler. This decision allows one Task Worker to handle messages meant for a different Task Worker, \nsuch as when routing or replaying messages. If you try to use the ajson utility on messages that contain AlgObjects \nfrom another Worker, and those AlgObjects are not imported into the Worker handler, your Worker will fail.\n\nIf you know that certain Tasks will only ever receive messages that can be rebuilt within the module, you can use the \nrebuild_event function to restore the AlgObjects in the message.\n```python\nfrom algernon import queued, rebuild_event\n\n@queued\ndef handler(event, context):\n event = rebuild_event(event)\n task_name = event['task_name']\n task_kwargs = event['task_kwargs']\n db_credentials = task_kwargs['db_credentials']\n\n```\n\n### the @lambda_logged decorator\nLambda functions capture all logging activity and store it through the CloudWatch service. To help organize and \nsearch these logs, you can decorate your Task or Worker handler with the @lambda_logged decorator. Doing so will \nclear all existing loggers, which we have found solves many logging problems with Lambda, and then setup the \nroot logger to include timestamp, function information, and request information with your logging. Additionally, \nyou can toggle debug level logging on by setting the environment variable \"DEBUG\" to True. Additionally, \nthe decorator will activate the native Lambda connection the X-Ray service. If you set this decorator, and then \nrun your Worker, you can see the traces for your function with their stats under the AWS X-Ray service. \n\nThis decorator activates logging for the most common libraries (requests, SQLite, etc). You can decorate your own \nfunctions directly to help improve the granularity of your tracing.\n```python\nfrom aws_xray_sdk.core import xray_recorder\n\n@xray_recorder.capture\ndef some_task(**kwargs):\n print(f'hey, did some work with {kwargs}')\n\n```\nWe have found that the Python boto library and the native x-ray library tend to produce chatter in the logs, so this \ndecorator sets both of them to log level WARNING.\n\n#### combining decorators\nyou absolutely can use the @queued and @lambda_logged decorators together on the same handler.\n\n### StoredData\nwhen passing information from function to function, as during a callback, the task_kwargs are not sent across the wire \nwhole. To help handle large messages, the results of the function will be uploaded to S3 and replaced with a pointer. \nWhen the information arrives at the next task, the information is automatically pulled from S3 and put back in place. \nYou specify the bucket to send the information to by setting the \"ALGERNON_BUCKET_NAME\" environment variable. By \ndefault, StoredData objects are set with the prefix \"cache\". You can change this by \"CACHE_FOLDER_NAME\" environment \nvariable. We suggest you set up expiration lifecycle rules on the bucket you use for this purpose to keep costs down.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/AlgernonSolutions/algernon", "keywords": "", "license": "GNU Affero General Public License v3.0", "maintainer": "", "maintainer_email": "", "name": "moncrief", "package_url": "https://pypi.org/project/moncrief/", "platform": "", "project_url": "https://pypi.org/project/moncrief/", "project_urls": { "Homepage": "https://github.com/AlgernonSolutions/algernon" }, "release_url": "https://pypi.org/project/moncrief/6.1.1/", "requires_dist": null, "requires_python": ">=3.6.0", "summary": "everything to run a project in a distributed and serverless fashion", "version": "6.1.1" }, "last_serial": 5815714, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "4657e2bb79a5659feae2eeb09eed909c", "sha256": "79336f60037a94cb35721d99e4dec61128758d675997e7832324583c3ebda74f" }, "downloads": -1, "filename": "moncrief-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4657e2bb79a5659feae2eeb09eed909c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 25533, "upload_time": "2019-05-22T18:13:28", "url": "https://files.pythonhosted.org/packages/ea/b9/665687d346bf304a9de385e927fde493dc99ddaab7ea6ad8c970b5bcd4a2/moncrief-1.0.0-py3-none-any.whl" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "610cbb5a2ca3dd88f36dbcc9318a5f94", "sha256": "a61da3c4f588c1e0fbd62533cd214bfa2a23f6f9f38095c045c7b7c76950d0e6" }, "downloads": -1, "filename": "moncrief-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "610cbb5a2ca3dd88f36dbcc9318a5f94", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 32819, "upload_time": "2019-05-29T16:00:23", "url": "https://files.pythonhosted.org/packages/e9/ad/4afabc929fbbcf0fada6d56a7c3204b10151d4770b67d6af1f654b5f61a8/moncrief-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dec450f742d4016fd18970a1d160bd19", "sha256": "c7b0ece00ad072b34359fd96ac6b66a0f641294cb2e7c4e54a9b4054fdb267a8" }, "downloads": -1, "filename": "moncrief-2.0.0.tar.gz", "has_sig": false, "md5_digest": "dec450f742d4016fd18970a1d160bd19", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 13227, "upload_time": "2019-05-29T16:00:25", "url": "https://files.pythonhosted.org/packages/d1/cf/cf10982296dc822cc0179490d98d54dd27b41f83ed790db28f569123e9b4/moncrief-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "ee5cc4d1ab8ea182489c088fe7cdbd4c", "sha256": "330be17e41e4971d8fa1fdfd4fde68bf0bfd06842811c61ffdb5805decb4d144" }, "downloads": -1, "filename": "moncrief-2.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ee5cc4d1ab8ea182489c088fe7cdbd4c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 14766, "upload_time": "2019-05-29T22:08:02", "url": "https://files.pythonhosted.org/packages/d3/36/d9e55e56275eeb7303c1e3e0e8ab962c055c6b5a2513f318b9b6800836ec/moncrief-2.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e847917b77548922f84871b604f6beb6", "sha256": "b4032a077d7e1c10cf1bebd20f8fe8a5c72dc4ebbeb1d322cd93ce83a7c08b68" }, "downloads": -1, "filename": "moncrief-2.0.1.tar.gz", "has_sig": false, "md5_digest": "e847917b77548922f84871b604f6beb6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 9096, "upload_time": "2019-05-29T22:08:04", "url": "https://files.pythonhosted.org/packages/8a/b1/c28af6cf5fa23f83cc171afe807d9b5a7c3f9bd98eead5d18844e16ae4b6/moncrief-2.0.1.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "d3b90de712a75775ccb4f4b00abab765", "sha256": "f740458fbf757793f05038ddbf4bc535397574ce3fb6f1caec97c72281949ba7" }, "downloads": -1, "filename": "moncrief-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d3b90de712a75775ccb4f4b00abab765", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16608, "upload_time": "2019-05-31T19:45:36", "url": "https://files.pythonhosted.org/packages/e4/44/74efc86fea2d92b4f480e3068880bda72d6b39c0347e14e4cf47384cca90/moncrief-2.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b452662cde10cc2a1ac7ef4aea677a90", "sha256": "83aadb210fe32ca3db1e44d990e81f9503c088bbddfad837eac6ac0c5939052c" }, "downloads": -1, "filename": "moncrief-2.1.0.tar.gz", "has_sig": false, "md5_digest": "b452662cde10cc2a1ac7ef4aea677a90", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10229, "upload_time": "2019-05-31T19:45:38", "url": "https://files.pythonhosted.org/packages/cd/a2/a72aaf2830d0a859c9ac86f9f16b5df40d116383f4bf8d24c25eac267087/moncrief-2.1.0.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "b4f97d737733a6813cc35840ba0b788b", "sha256": "273347d427b80f17a7746c96c3ed2ee09b578337ddfae547cb8b720bfb3859d2" }, "downloads": -1, "filename": "moncrief-2.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b4f97d737733a6813cc35840ba0b788b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16477, "upload_time": "2019-05-31T19:55:48", "url": "https://files.pythonhosted.org/packages/04/18/d78c531746d8cbb3ca452b285bc89d324de4e86a2ac0b53b4ee98afd11d9/moncrief-2.2.0-py3-none-any.whl" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "0050b409ac0c71d54688556fb76f1ada", "sha256": "aed3617bf6c490b614794cfc78e096762e29e6136f1f061367b80722f1a71c0d" }, "downloads": -1, "filename": "moncrief-2.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0050b409ac0c71d54688556fb76f1ada", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16482, "upload_time": "2019-05-31T19:58:28", "url": "https://files.pythonhosted.org/packages/cf/d8/09e12d1dc656d9017313b3be7cb5ac0a320658b8a5a17fb62f334da10a82/moncrief-2.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "14cdd92b101b3400515f4306b64917b7", "sha256": "4f4001bd2d5e9c812f844ae377af1f2cd647962cd86b6f4c9d61fb12b962e1ca" }, "downloads": -1, "filename": "moncrief-2.2.1.tar.gz", "has_sig": false, "md5_digest": "14cdd92b101b3400515f4306b64917b7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10118, "upload_time": "2019-05-31T19:58:29", "url": "https://files.pythonhosted.org/packages/1a/e5/4bffa017202ee79f8bd93b90794142e3ba6545fa4c0458cf1e4189b49dcf/moncrief-2.2.1.tar.gz" } ], "2.2.2": [ { "comment_text": "", "digests": { "md5": "8f1a271de0fd3f7ae3d69a6da2663be1", "sha256": "bfabae36991138c13c7117e61c9af54b13db82cf60bcf112c5aa79070051a0de" }, "downloads": -1, "filename": "moncrief-2.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8f1a271de0fd3f7ae3d69a6da2663be1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16480, "upload_time": "2019-06-03T14:52:29", "url": "https://files.pythonhosted.org/packages/d2/0f/9b7c5d40b956791297ddbf3f897218f1f29a2c77c0c9f7038eadba4a6e18/moncrief-2.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "60ebdb8b21eb2f0a4db60b284a2608dd", "sha256": "9b40d3f36425507128c32350bf3caa3bc13334588b8784833858a2fdc52d2a01" }, "downloads": -1, "filename": "moncrief-2.2.2.tar.gz", "has_sig": false, "md5_digest": "60ebdb8b21eb2f0a4db60b284a2608dd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10136, "upload_time": "2019-06-03T14:52:31", "url": "https://files.pythonhosted.org/packages/05/28/80291cd20d858a0a3942cc24bcc593017e75ff13202eccc9e61255692305/moncrief-2.2.2.tar.gz" } ], "2.2.3": [ { "comment_text": "", "digests": { "md5": "333b788cac2db1f74a28f71c919359fa", "sha256": "daa3a7e1d3081843051cbff12cc2dd9795b381d1047ebb28d82fc454fd9b87cc" }, "downloads": -1, "filename": "moncrief-2.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "333b788cac2db1f74a28f71c919359fa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16399, "upload_time": "2019-06-03T19:02:11", "url": "https://files.pythonhosted.org/packages/38/dd/1ceda496dda19dfc03737930b99ea76d92e77b0c1b3339616b599dc0dcc4/moncrief-2.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ad58b2c564e47c41f06fdcad496dd8db", "sha256": "f109ed4edca95b45345bd39d6c14bbaaed968b9f3beb40430ab8616b465d7c46" }, "downloads": -1, "filename": "moncrief-2.2.3.tar.gz", "has_sig": false, "md5_digest": "ad58b2c564e47c41f06fdcad496dd8db", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10031, "upload_time": "2019-06-03T19:02:12", "url": "https://files.pythonhosted.org/packages/ac/e4/937dd290232a459cf5fd81e63115d19f38b7caa1f17b880b79d623edbf7c/moncrief-2.2.3.tar.gz" } ], "2.2.4": [ { "comment_text": "", "digests": { "md5": "b52516d22de11482a1c6c045cd7c02f5", "sha256": "0488534411f495379ddc2fcca39d3818974a248fe9bb2c08e4b2e9161ed7a78b" }, "downloads": -1, "filename": "moncrief-2.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "b52516d22de11482a1c6c045cd7c02f5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16702, "upload_time": "2019-06-07T17:41:05", "url": "https://files.pythonhosted.org/packages/85/19/2660acdeb10d235f33ce9549c870bda92420bdc08167e793bf3c92f3d2d2/moncrief-2.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e0608beba3f44b6afd83da66ae262080", "sha256": "64cdc4615bd44d30ffb256243e0417e40081887a822ebe223f390cd12f316978" }, "downloads": -1, "filename": "moncrief-2.2.4.tar.gz", "has_sig": false, "md5_digest": "e0608beba3f44b6afd83da66ae262080", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10259, "upload_time": "2019-06-07T17:41:07", "url": "https://files.pythonhosted.org/packages/0f/b8/2418af2bb3d337657cfff8c912ee63d654cc37036f6c2d98fac18dbb8880/moncrief-2.2.4.tar.gz" } ], "2.2.5": [ { "comment_text": "", "digests": { "md5": "f8c8875135febda02242bf3c95217725", "sha256": "04118c323b8500ec492c700c94baba89ab7cfc7d602ac1e0ea79dac5b9b4bb8d" }, "downloads": -1, "filename": "moncrief-2.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "f8c8875135febda02242bf3c95217725", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16716, "upload_time": "2019-06-07T18:08:24", "url": "https://files.pythonhosted.org/packages/d0/57/4a3bcef5489f17652c5bf8b1a678b70789debb36092c0e190fcf689294ca/moncrief-2.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "da3648d264063597a5b9c80ec6383075", "sha256": "26477a32c99d60db2bf6ebccb41a25e431f8a5a1d9bcf05e26dba60a704c5f3c" }, "downloads": -1, "filename": "moncrief-2.2.5.tar.gz", "has_sig": false, "md5_digest": "da3648d264063597a5b9c80ec6383075", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10272, "upload_time": "2019-06-07T18:08:26", "url": "https://files.pythonhosted.org/packages/1a/87/3bd5e616ed46f747f112f067df0830158c1d331cb94721adf77ca5efb133/moncrief-2.2.5.tar.gz" } ], "2.2.6": [ { "comment_text": "", "digests": { "md5": "40152ef8ffc310cf39cdcc0d9cf76940", "sha256": "d64cf3f9a1fe41a23eb92d4b8596c9c96ea9d8fae5ee138866f93050e9d93748" }, "downloads": -1, "filename": "moncrief-2.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "40152ef8ffc310cf39cdcc0d9cf76940", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16753, "upload_time": "2019-06-07T18:47:57", "url": "https://files.pythonhosted.org/packages/9f/fb/979401be10dbbe057545499c09ba332e5f4d9f650006d0d8538b39e1555a/moncrief-2.2.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c6d68d88201050930e21f3e9facd2bf", "sha256": "fb8e0f77f44f389f89e7795a04c202d92c1040b016199e6610fdf004eec1a72e" }, "downloads": -1, "filename": "moncrief-2.2.6.tar.gz", "has_sig": false, "md5_digest": "9c6d68d88201050930e21f3e9facd2bf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10302, "upload_time": "2019-06-07T18:47:58", "url": "https://files.pythonhosted.org/packages/6c/e6/899cfe663b3360feadb7dd0c837838ae0b27eb96d0f8c9c2e11a9595e4c7/moncrief-2.2.6.tar.gz" } ], "2.2.7": [ { "comment_text": "", "digests": { "md5": "15b69f582806984c5a8037ecf81a9f08", "sha256": "32c8a98f6090ee0060c8be8627ad32ae2abadf310f12ff61f254b5c7ccd06706" }, "downloads": -1, "filename": "moncrief-2.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "15b69f582806984c5a8037ecf81a9f08", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16751, "upload_time": "2019-06-07T18:52:33", "url": "https://files.pythonhosted.org/packages/db/b7/2618207b141727553f89f885ba26c217b4a4a954bc202742dfc74573c94e/moncrief-2.2.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db3b6308eb8a3ea99d2a52f64001628f", "sha256": "6482b11368f51357aab5573528a3e89f22d904cd6e4ef078400393b68765b4bc" }, "downloads": -1, "filename": "moncrief-2.2.7.tar.gz", "has_sig": false, "md5_digest": "db3b6308eb8a3ea99d2a52f64001628f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10294, "upload_time": "2019-06-07T18:52:34", "url": "https://files.pythonhosted.org/packages/80/34/ea9c9f1c815aa03374a6747c2abf50cbf7cda219387345758278c61c1907/moncrief-2.2.7.tar.gz" } ], "2.2.8": [ { "comment_text": "", "digests": { "md5": "0673337fbd55d81379eca082fa8a4b36", "sha256": "dcc0c948ed433767b56160aa7e735e5e0e1e6c8031ef8c02cc60ee48b13a6e7e" }, "downloads": -1, "filename": "moncrief-2.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "0673337fbd55d81379eca082fa8a4b36", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16917, "upload_time": "2019-06-07T19:05:25", "url": "https://files.pythonhosted.org/packages/40/cb/21b44ce83f25cb742dc1872a4d52a502a8dc9df474f770a2e8f5df59cf5e/moncrief-2.2.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5450d16cffdadfc057d206af2f33dac9", "sha256": "b45ffb27353c2cb17a7c2aa03d356d0487fc033c8d5e4a02ac2b92d3fbbd6a34" }, "downloads": -1, "filename": "moncrief-2.2.8.tar.gz", "has_sig": false, "md5_digest": "5450d16cffdadfc057d206af2f33dac9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10460, "upload_time": "2019-06-07T19:05:26", "url": "https://files.pythonhosted.org/packages/d5/e3/bf97c2a866ed55fa91cc57df92537cef20276c7c38555992ee8335f40c59/moncrief-2.2.8.tar.gz" } ], "2.2.9": [ { "comment_text": "", "digests": { "md5": "a72ee2b57ab0f2d4ca4c1e140c4ed0b9", "sha256": "aa55e7b0e9f9d9f47530254a872b7cc564b383a908748552de7086d66bba97ba" }, "downloads": -1, "filename": "moncrief-2.2.9-py3-none-any.whl", "has_sig": false, "md5_digest": "a72ee2b57ab0f2d4ca4c1e140c4ed0b9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16989, "upload_time": "2019-06-07T19:29:47", "url": "https://files.pythonhosted.org/packages/86/25/8daf24343e81f6f57f539e2eef6161c6d27607c5956df848ba7006331909/moncrief-2.2.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a502307c7c6347bee9cc97cb507ada1f", "sha256": "2e7f83e34a09206fa9d5dad817abe15ce44cef78f6bcc083cf81f41360386b61" }, "downloads": -1, "filename": "moncrief-2.2.9.tar.gz", "has_sig": false, "md5_digest": "a502307c7c6347bee9cc97cb507ada1f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10514, "upload_time": "2019-06-07T19:29:48", "url": "https://files.pythonhosted.org/packages/39/f3/408cbe060a085225bdeb5c72c226480752d40c6f2d3602efc0e305df1187/moncrief-2.2.9.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "f398154575147a7ea5f448af500edabb", "sha256": "a0edbb3c8cb1f8a771b074b6c224eb51dc46cfda9697dad14f0093d1b41abc05" }, "downloads": -1, "filename": "moncrief-2.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f398154575147a7ea5f448af500edabb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 28898, "upload_time": "2019-06-24T19:44:06", "url": "https://files.pythonhosted.org/packages/c8/b7/4c0b8bb5124179bcdad2d6b1356ea891f0c68c4fb59e7e36d0e23dc9411e/moncrief-2.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b59ec7111e1372df382387ae45987501", "sha256": "c01c27b4959972eb1cc725d5cbc0555f8a618cee5299d93954e6d76113e59806" }, "downloads": -1, "filename": "moncrief-2.3.0.tar.gz", "has_sig": false, "md5_digest": "b59ec7111e1372df382387ae45987501", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 11416, "upload_time": "2019-06-24T19:44:08", "url": "https://files.pythonhosted.org/packages/91/10/d1235746cd85b19cf859fdc2e6bcd46c434e022611e62443e8c5f4570182/moncrief-2.3.0.tar.gz" } ], "2.3.1": [ { "comment_text": "", "digests": { "md5": "4dbe34656a8c8e52ec4823a960972296", "sha256": "874f27c8ab378b4946c5136322e14e4eda373ff66cf60e8a4f4fb9f810e410de" }, "downloads": -1, "filename": "moncrief-2.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4dbe34656a8c8e52ec4823a960972296", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 28927, "upload_time": "2019-06-24T19:51:46", "url": "https://files.pythonhosted.org/packages/d3/69/f0428e1f1f4c2903b3cf1805fe69c792183ae2bd8ef475965262b687f4d7/moncrief-2.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9b1413233b8fd201231943487cc89740", "sha256": "0801f887e169bf5fef59ab2a0279a329ea0967aa5a9f5ab937dd637ebdde9571" }, "downloads": -1, "filename": "moncrief-2.3.1.tar.gz", "has_sig": false, "md5_digest": "9b1413233b8fd201231943487cc89740", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 11439, "upload_time": "2019-06-24T19:51:47", "url": "https://files.pythonhosted.org/packages/8a/64/80bb13234d00c4cdb39c81ddb1a262ccce8d00e27cea2b03a3a409e1bb87/moncrief-2.3.1.tar.gz" } ], "2.3.10": [ { "comment_text": "", "digests": { "md5": "0eba6aea7d69be6c331e914d660d34b8", "sha256": "36c2f5a7786fae41a77853b44248d8880567ddede9b470567ca16c00dbf32f92" }, "downloads": -1, "filename": "moncrief-2.3.10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0eba6aea7d69be6c331e914d660d34b8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 32205, "upload_time": "2019-06-25T16:25:30", "url": "https://files.pythonhosted.org/packages/57/cc/979ac03c313b7e7c0a28e1cdd17b74861e5d9d674d1394eb40786b574d95/moncrief-2.3.10-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24dec03d29c5b68a529277d8353ab566", "sha256": "95328725bded7b664f0708bed0ad0593796dc0c239b4c8f484aa75917cb13f69" }, "downloads": -1, "filename": "moncrief-2.3.10.tar.gz", "has_sig": false, "md5_digest": "24dec03d29c5b68a529277d8353ab566", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 30551, "upload_time": "2019-06-25T16:25:32", "url": "https://files.pythonhosted.org/packages/e0/74/cca4a90ea2b36ee65184e4483b55663851262e75d0b1cad5794882a2d6a1/moncrief-2.3.10.tar.gz" } ], "2.3.11": [ { "comment_text": "", "digests": { "md5": "dd7ac9d91fdfa84a6fa4f7607239f21d", "sha256": "9bca4ad8638faf3759827a8dcd48100db9771015ccf6b98f74b71c12204a95d7" }, "downloads": -1, "filename": "moncrief-2.3.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dd7ac9d91fdfa84a6fa4f7607239f21d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 32211, "upload_time": "2019-06-25T17:34:06", "url": "https://files.pythonhosted.org/packages/e4/72/16c8e106ae464807ecce945df2e546ea91d87fa26b128f0da040c79a46b3/moncrief-2.3.11-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9bcdded3068e5723010b69bf0c513667", "sha256": "4aa152db8e598f2a349b73e1f9f36ddae6838b0b4bd0643221b8f48a80ec8e9f" }, "downloads": -1, "filename": "moncrief-2.3.11.tar.gz", "has_sig": false, "md5_digest": "9bcdded3068e5723010b69bf0c513667", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 30553, "upload_time": "2019-06-25T17:34:07", "url": "https://files.pythonhosted.org/packages/a2/2f/a44ff3238324880d2dec58401b048c9b1d329c026ad3fbc070df79468038/moncrief-2.3.11.tar.gz" } ], "2.3.12": [ { "comment_text": "", "digests": { "md5": "36187ba9abb54757f241b385c5621f1f", "sha256": "18ea6ea6ea1a53821ac01ff59ba1abd742bfd9ce22006a9f37d7ff7fbfbf9217" }, "downloads": -1, "filename": "moncrief-2.3.12-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "36187ba9abb54757f241b385c5621f1f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 32161, "upload_time": "2019-06-25T19:28:48", "url": "https://files.pythonhosted.org/packages/45/51/b5632e8b9d66c30b940a40d40af46d5deac26d7dbee81dd8b747dced9e54/moncrief-2.3.12-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac44e0cdde3b2390b008377b2dbe44ce", "sha256": "b966cccd9339796427dfc70dced61baba1bde60c8e41d8e5f8a39ec9bc3085c3" }, "downloads": -1, "filename": "moncrief-2.3.12.tar.gz", "has_sig": false, "md5_digest": "ac44e0cdde3b2390b008377b2dbe44ce", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 30521, "upload_time": "2019-06-25T19:28:49", "url": "https://files.pythonhosted.org/packages/ab/a6/b6940ec6f1b31f2ba35673a4d3b287c7f0bbcead6f3b0619e95e2dcd9d37/moncrief-2.3.12.tar.gz" } ], "2.3.13": [ { "comment_text": "", "digests": { "md5": "087aa74284a881ea1f266927b6f3d336", "sha256": "31bb19bd8fca0b70696c8cbe0c54739ed830ffbd45907b4325d8453bf3fc3ab8" }, "downloads": -1, "filename": "moncrief-2.3.13-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "087aa74284a881ea1f266927b6f3d336", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 32156, "upload_time": "2019-06-25T19:42:26", "url": "https://files.pythonhosted.org/packages/ee/86/9e00d19b8ef4e6886b15a1a28fa70d500a428f9c586c7eb815af6d2b5e8d/moncrief-2.3.13-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ee9c1fbf47f239d182a0032cc8b9e4a5", "sha256": "bd9f0b2d5860c33db3dc57346da06bbd4a38e517ac3f8e8543ad9e93ca89fd6b" }, "downloads": -1, "filename": "moncrief-2.3.13.tar.gz", "has_sig": false, "md5_digest": "ee9c1fbf47f239d182a0032cc8b9e4a5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 30510, "upload_time": "2019-06-25T19:42:28", "url": "https://files.pythonhosted.org/packages/04/a0/f7d0fb9413f663d54cd226f5549d0c862fc10d4a8ae5cdf0bc6f53880f9d/moncrief-2.3.13.tar.gz" } ], "2.3.2": [ { "comment_text": "", "digests": { "md5": "eebb630637a660eabd1b5deff9449d70", "sha256": "5f31aba8067dcf29fd6cb6a79788156a8d5f01c1baf7cf2c846991385ad46841" }, "downloads": -1, "filename": "moncrief-2.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "eebb630637a660eabd1b5deff9449d70", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 29114, "upload_time": "2019-06-24T20:02:29", "url": "https://files.pythonhosted.org/packages/1e/dd/26a412c29b44e004260321ac0795ef99835f8ea4eb283bf6c9dfdea861ed/moncrief-2.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5669e1499373d6bc04e41ab6dd7718e1", "sha256": "056746a7bf23537a7beea424589c0e1a2519b2431d87b9413933dc585b0ff317" }, "downloads": -1, "filename": "moncrief-2.3.2.tar.gz", "has_sig": false, "md5_digest": "5669e1499373d6bc04e41ab6dd7718e1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 11597, "upload_time": "2019-06-24T20:02:31", "url": "https://files.pythonhosted.org/packages/a0/30/5aa75168df2956894c5dbc6bbac36215ff6f1d3f7b1830ad0ea7e4a7744f/moncrief-2.3.2.tar.gz" } ], "2.3.3": [ { "comment_text": "", "digests": { "md5": "9c05979aee8ac2adaea97b933c01555a", "sha256": "1636f4a67727266b965e3b0dc2a75eb1633385e30feebb6d431ade16a8c63ae1" }, "downloads": -1, "filename": "moncrief-2.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "9c05979aee8ac2adaea97b933c01555a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 29243, "upload_time": "2019-06-24T20:11:19", "url": "https://files.pythonhosted.org/packages/61/6c/08cb93b7e5334ee1066b97b13fb57532dc4607c24802c5bfc7f84cc54e7a/moncrief-2.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "89e70b65e49a28cba505fc5e9a7ce33a", "sha256": "7f62adebed016fcbffb039436e67d3a570c618b344cd62f61c610b7de6f2d592" }, "downloads": -1, "filename": "moncrief-2.3.3.tar.gz", "has_sig": false, "md5_digest": "89e70b65e49a28cba505fc5e9a7ce33a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 11709, "upload_time": "2019-06-24T20:11:21", "url": "https://files.pythonhosted.org/packages/57/8d/53c8ad1a0bfd71966a967ff07f542ddcb4cfba272d17b5363bf7f34d2b83/moncrief-2.3.3.tar.gz" } ], "2.3.4": [ { "comment_text": "", "digests": { "md5": "4287cedd05b2d0c00e820e88d411aaf9", "sha256": "fb21046d3a751e8c4d72888a23b5ea5231904c56f5246e5b84ee6b58f2455837" }, "downloads": -1, "filename": "moncrief-2.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "4287cedd05b2d0c00e820e88d411aaf9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 29254, "upload_time": "2019-06-24T20:18:25", "url": "https://files.pythonhosted.org/packages/d3/ef/86820f6251e77d7f29a9acae89f511d2fde939e03f92c6aeaf045fbde4a6/moncrief-2.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3d5ebb53e14eebc80b5c5bf5f8b429e1", "sha256": "68b93f64dd6a275bf078327f9d475fa38e1ef4cabe72c571169ebe408ad3c56c" }, "downloads": -1, "filename": "moncrief-2.3.4.tar.gz", "has_sig": false, "md5_digest": "3d5ebb53e14eebc80b5c5bf5f8b429e1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 11719, "upload_time": "2019-06-24T20:18:26", "url": "https://files.pythonhosted.org/packages/86/d3/7ffb6c251ff186c911185116aab41616324cd9f8edd1fda50a7b7d91b2ad/moncrief-2.3.4.tar.gz" } ], "2.3.5": [ { "comment_text": "", "digests": { "md5": "982d94a814c0105e6195723849c59c15", "sha256": "4abed5efee0b0d1a43dad80b316fb322b72a8f8a4f86f1b10d40448232933ea2" }, "downloads": -1, "filename": "moncrief-2.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "982d94a814c0105e6195723849c59c15", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 29445, "upload_time": "2019-06-24T20:51:25", "url": "https://files.pythonhosted.org/packages/b7/09/b67393a7d01f2c7e36788d576863cdc6e9a520f3e278172888f04f099c7d/moncrief-2.3.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "67a1fe9ac36ca9413e426ba807806d73", "sha256": "c4fba8f824ca8b6d4989df54620db64ce10a1042c81d24c318190d725ab33858" }, "downloads": -1, "filename": "moncrief-2.3.5.tar.gz", "has_sig": false, "md5_digest": "67a1fe9ac36ca9413e426ba807806d73", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 11893, "upload_time": "2019-06-24T20:51:26", "url": "https://files.pythonhosted.org/packages/27/7e/881dd1d21d0aea22cd1d2984e6693916ce8134362567fd6463ca07816121/moncrief-2.3.5.tar.gz" } ], "2.3.6": [ { "comment_text": "", "digests": { "md5": "44131a419abeae3bfa031fd28f2cde6b", "sha256": "4ffdcd4d96736a5b03a1cac7f1be0897d6e7c0a4ed2c8c8d1d714f09c8382f66" }, "downloads": -1, "filename": "moncrief-2.3.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "44131a419abeae3bfa031fd28f2cde6b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 31904, "upload_time": "2019-06-24T23:18:12", "url": "https://files.pythonhosted.org/packages/14/22/aff1206668aa0adf5e86fca57314aacc7f23fc5e063f44d32f71bd56616d/moncrief-2.3.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "39484ebd186d96d60d0fbfb1e584e71c", "sha256": "14baf76f766905535cd72bfa67f72ad0687a63b00a5dcafdb36414358389fc41" }, "downloads": -1, "filename": "moncrief-2.3.6.tar.gz", "has_sig": false, "md5_digest": "39484ebd186d96d60d0fbfb1e584e71c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 30308, "upload_time": "2019-06-24T23:18:14", "url": "https://files.pythonhosted.org/packages/46/51/c89d70dd5cf3a9ff719535605dc1e90453976ad85f759a5c84896a8fa00f/moncrief-2.3.6.tar.gz" } ], "2.3.7": [ { "comment_text": "", "digests": { "md5": "4cc7b5fbffcc6b8a293cba311763f6f2", "sha256": "5c10dfce5e56dc042fc6c829571381be317b6505dfd28d45deda020faa5f01a9" }, "downloads": -1, "filename": "moncrief-2.3.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4cc7b5fbffcc6b8a293cba311763f6f2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 32064, "upload_time": "2019-06-25T15:38:04", "url": "https://files.pythonhosted.org/packages/c4/57/3cd8afed4e2c6407b148a45155b718b2b4b9039e43e58b38d4623a22c1b1/moncrief-2.3.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "71bcc0ec8b3c25e9789f6d4ed8fc5350", "sha256": "bfae440fba01d3a28334793b97094484d2e739c9200a3ba7e213d5fe57aad488" }, "downloads": -1, "filename": "moncrief-2.3.7.tar.gz", "has_sig": false, "md5_digest": "71bcc0ec8b3c25e9789f6d4ed8fc5350", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 30448, "upload_time": "2019-06-25T15:38:05", "url": "https://files.pythonhosted.org/packages/b1/62/92f3f3f3fcd9e4bb7340a40c4169ad1d46e5e20615ada80024e4577150c5/moncrief-2.3.7.tar.gz" } ], "2.3.8": [ { "comment_text": "", "digests": { "md5": "875c402a8e235773e2ec4c3d4b5ebc92", "sha256": "b013cca104e822c4b161eee5e3fdb31df5ef858420ea21528dadbe65d143e510" }, "downloads": -1, "filename": "moncrief-2.3.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "875c402a8e235773e2ec4c3d4b5ebc92", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 32093, "upload_time": "2019-06-25T15:42:52", "url": "https://files.pythonhosted.org/packages/5f/9a/377d6cd2821f7e87d315c589d9483f1c59460c29e2d5f53cc1a762d9d5d9/moncrief-2.3.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4606c4c3727dab974918d2614a64591f", "sha256": "cf4fe99e6499b4cbb9b66df05747e009908f37b5097df161f7b3dcc6bff60aa5" }, "downloads": -1, "filename": "moncrief-2.3.8.tar.gz", "has_sig": false, "md5_digest": "4606c4c3727dab974918d2614a64591f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 30468, "upload_time": "2019-06-25T15:42:53", "url": "https://files.pythonhosted.org/packages/67/01/ad738e011058df2e5f32aacee1122426133231d22fa1bb27c29f1341943d/moncrief-2.3.8.tar.gz" } ], "2.3.9": [ { "comment_text": "", "digests": { "md5": "13b5005f47936f4730ce5d4c5a57fc68", "sha256": "906dec66562720cbce9bacf1a4fb410175d7c38b5fd4b46b6c008b25621a188f" }, "downloads": -1, "filename": "moncrief-2.3.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "13b5005f47936f4730ce5d4c5a57fc68", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 32190, "upload_time": "2019-06-25T16:09:46", "url": "https://files.pythonhosted.org/packages/ae/f0/417a12b5311d56a1049ea3ef0d072e523b0417ea847640d7766590f267bb/moncrief-2.3.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b7bd893cf7c26c4b4bf061ddfca1695c", "sha256": "7d3fedadd8803d3a3d785709791b49e6a734755f246c1951102c172c8e020caf" }, "downloads": -1, "filename": "moncrief-2.3.9.tar.gz", "has_sig": false, "md5_digest": "b7bd893cf7c26c4b4bf061ddfca1695c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 30538, "upload_time": "2019-06-25T16:09:48", "url": "https://files.pythonhosted.org/packages/75/80/5b15e2fb717aefe74cb7e10c0d05cb4d71d59b662d3e5fe1bc3200a0156c/moncrief-2.3.9.tar.gz" } ], "2.4.0": [ { "comment_text": "", "digests": { "md5": "3476f19705b1c4cc118364c0ac77c30b", "sha256": "e293af0f10801aa24a9de637c69ec124317381114b73fd29c2c3bbcaf548a0e9" }, "downloads": -1, "filename": "moncrief-2.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3476f19705b1c4cc118364c0ac77c30b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 32415, "upload_time": "2019-06-25T21:33:01", "url": "https://files.pythonhosted.org/packages/85/56/5f842e2c8cdd14a47044036007c970d5a01c759ee845c31a9449851f9faa/moncrief-2.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6b02ac95e50287e1e6d5790af2a0c208", "sha256": "845acffa5cbb75a860cd067a2d4b4f48dcf5079133fb023cff8e8fa5ec0bf520" }, "downloads": -1, "filename": "moncrief-2.4.0.tar.gz", "has_sig": false, "md5_digest": "6b02ac95e50287e1e6d5790af2a0c208", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 30749, "upload_time": "2019-06-25T21:33:02", "url": "https://files.pythonhosted.org/packages/13/3b/1e2164e8a49c4988a63ece4a5eaadbea3acf0a791b60b991d169d64d72a0/moncrief-2.4.0.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "ad45395ee40820ad0d1f70d73f8ca62e", "sha256": "6b5a3562d0e3d46496ed13f97c0a1980163ddafe2fd76aea783177994f9866b9" }, "downloads": -1, "filename": "moncrief-3.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ad45395ee40820ad0d1f70d73f8ca62e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 32807, "upload_time": "2019-06-27T12:49:18", "url": "https://files.pythonhosted.org/packages/47/4e/95a47d90ba4a15e690e0ea551c6088797f435766de029a230f5d4139542b/moncrief-3.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ee8aa3d416b12544382d2e71589452d2", "sha256": "6bb09fa20770dd6ef2c533ba116541a1d1fef37846e411a4d58555a634226dd6" }, "downloads": -1, "filename": "moncrief-3.0.0.tar.gz", "has_sig": false, "md5_digest": "ee8aa3d416b12544382d2e71589452d2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 30875, "upload_time": "2019-06-27T12:49:19", "url": "https://files.pythonhosted.org/packages/e1/fc/ed0e7ce9ad25a643ab052e7b619db3258e29db5b1b94704ad549fc0f3506/moncrief-3.0.0.tar.gz" } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "fae6b4d5905d7ca0d73597d9c31c58bf", "sha256": "0301671dbdafad1013f66f71ac8793b2009f6a9198af512c224fa47ed941f7c8" }, "downloads": -1, "filename": "moncrief-3.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fae6b4d5905d7ca0d73597d9c31c58bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 33334, "upload_time": "2019-07-03T13:19:42", "url": "https://files.pythonhosted.org/packages/db/7e/a26ce7208afe521f02dc92c8d9a455c749cff7bb37211b0af2c186a78b75/moncrief-3.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e268e6ab7bc720f8e028c22a5abe7fff", "sha256": "daeb218352ac1326269849ba5f1a0da163e36fadab7d84a44e5b79e35be9e8cd" }, "downloads": -1, "filename": "moncrief-3.1.0.tar.gz", "has_sig": false, "md5_digest": "e268e6ab7bc720f8e028c22a5abe7fff", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 31130, "upload_time": "2019-07-03T13:19:44", "url": "https://files.pythonhosted.org/packages/d8/51/d8aeee6885b473b8d036253e0e7eb80be474cd8b36301edd97731dcb4d74/moncrief-3.1.0.tar.gz" } ], "3.1.1": [ { "comment_text": "", "digests": { "md5": "d940fb80558622045dafd9b47409c72b", "sha256": "e0038462603c7ffe0d750a2c2575c976c88833b1aa927b90a7c6833323de5323" }, "downloads": -1, "filename": "moncrief-3.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d940fb80558622045dafd9b47409c72b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 33336, "upload_time": "2019-07-03T14:04:15", "url": "https://files.pythonhosted.org/packages/69/6a/0573280677881c02f08ae8ca0305d857e7fcb59455c776c660a138c9f93d/moncrief-3.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "571d29572297e778de2fb7331f134177", "sha256": "729c2790455aabf7de7cf2095651455a628fba65b655c4170ed4a91fe042c49b" }, "downloads": -1, "filename": "moncrief-3.1.1.tar.gz", "has_sig": false, "md5_digest": "571d29572297e778de2fb7331f134177", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 31143, "upload_time": "2019-07-03T14:04:18", "url": "https://files.pythonhosted.org/packages/af/d6/28d97bc828ef5ff8f04ff12e07779bb2ba91006f063c1bd8b7d86bdca105/moncrief-3.1.1.tar.gz" } ], "3.1.2": [ { "comment_text": "", "digests": { "md5": "8c3395d67715de3b764b07fc38fbc3cb", "sha256": "5f9e6fa52ecf69901b17524c7caeeea41791add074f92335f4874c349ebb9413" }, "downloads": -1, "filename": "moncrief-3.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8c3395d67715de3b764b07fc38fbc3cb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 33355, "upload_time": "2019-07-03T14:17:17", "url": "https://files.pythonhosted.org/packages/8a/b9/fb8e4786c6be4ae2f4e71328baa03771af94d6b4b368502691fc1a1c2841/moncrief-3.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "66ef1a072e699f9c786ed4b056caa0a5", "sha256": "af9f5d5a0a08e27735d3ccfae584b2418e01d1cbd9e86763b0771e90d6db56f1" }, "downloads": -1, "filename": "moncrief-3.1.2.tar.gz", "has_sig": false, "md5_digest": "66ef1a072e699f9c786ed4b056caa0a5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 31149, "upload_time": "2019-07-03T14:17:21", "url": "https://files.pythonhosted.org/packages/91/85/08b029efd7b64d572e841ffeec246c13e68cb1dc2dd484dbc8c515dead51/moncrief-3.1.2.tar.gz" } ], "3.1.3": [ { "comment_text": "", "digests": { "md5": "2b56b9ffd8abb5e383cb94525233eff8", "sha256": "c53b6ccec31d84232877d7f6f59599ef50f43ac53280be25a152d397a484d9d3" }, "downloads": -1, "filename": "moncrief-3.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "2b56b9ffd8abb5e383cb94525233eff8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 33366, "upload_time": "2019-07-03T14:30:59", "url": "https://files.pythonhosted.org/packages/56/3e/2f4ed881f1c446f48bc863cdd6812f0a018e1ff96e106223de2d7383be5d/moncrief-3.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0c85008857a2aa2d94133a69aa4cdfd2", "sha256": "56de918b1a1d740a4480f525dc57b9ed3e726c1870c8bd96f02dd365700e8b01" }, "downloads": -1, "filename": "moncrief-3.1.3.tar.gz", "has_sig": false, "md5_digest": "0c85008857a2aa2d94133a69aa4cdfd2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 31157, "upload_time": "2019-07-03T14:31:05", "url": "https://files.pythonhosted.org/packages/2a/8e/44fe498cbd6e91ab68d5caac3793bb80cb5a26169095850e1ddeff08725a/moncrief-3.1.3.tar.gz" } ], "3.2.0": [ { "comment_text": "", "digests": { "md5": "461a8632fb69cff8104ffc16ee40b0d1", "sha256": "51e81d7ce32124db6f52b0a197d5e195d98aab0eca1a892f647c97473b8045df" }, "downloads": -1, "filename": "moncrief-3.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "461a8632fb69cff8104ffc16ee40b0d1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 36189, "upload_time": "2019-07-09T13:03:36", "url": "https://files.pythonhosted.org/packages/6b/8d/b4a4c51e089c99586851323037a6bf45bba8721dbbd2dbf5a9c318cc8536/moncrief-3.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "06805b38c2d75d016e25520231723b58", "sha256": "d8d5227997a1a8d854f59aebf57a0c798e280ea60157b7662d1defdd11a93b07" }, "downloads": -1, "filename": "moncrief-3.2.0.tar.gz", "has_sig": false, "md5_digest": "06805b38c2d75d016e25520231723b58", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 34517, "upload_time": "2019-07-09T13:03:41", "url": "https://files.pythonhosted.org/packages/88/4b/46f699814bab9826de0eb6b101c79ea4390147e6bf94cfbca6875b481f17/moncrief-3.2.0.tar.gz" } ], "3.2.1": [ { "comment_text": "", "digests": { "md5": "09060b2207199835ed2bae60b9d74d37", "sha256": "2016d1bed3b08e659afed932721567370ae9b2b00fcd0aa124f38d8601040ec9" }, "downloads": -1, "filename": "moncrief-3.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "09060b2207199835ed2bae60b9d74d37", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 36280, "upload_time": "2019-07-09T13:10:47", "url": "https://files.pythonhosted.org/packages/8e/5b/792630df2a297560b310cf58cc20b5f6d3aec86cd341202e9d8ffd32475d/moncrief-3.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "52c691244cb5e9d38c3719d2c5d37aab", "sha256": "f4241f2870e47823bbb01fa1bd248dcf9f5c3f26442f8826f00fc6e349593286" }, "downloads": -1, "filename": "moncrief-3.2.1.tar.gz", "has_sig": false, "md5_digest": "52c691244cb5e9d38c3719d2c5d37aab", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 34581, "upload_time": "2019-07-09T13:10:53", "url": "https://files.pythonhosted.org/packages/97/fc/63bcffd137973f6e4fd74ef98d330a29ebadc5124bcea4b2744f983eebb4/moncrief-3.2.1.tar.gz" } ], "3.2.3": [ { "comment_text": "", "digests": { "md5": "d173f007000d94f350d2da23a59cb6b0", "sha256": "8ff17b3fc4eee4c0087ff9268b008ebea6fd553c11b6111b7e30f320786879b4" }, "downloads": -1, "filename": "moncrief-3.2.3.tar.gz", "has_sig": false, "md5_digest": "d173f007000d94f350d2da23a59cb6b0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 34784, "upload_time": "2019-08-26T15:41:39", "url": "https://files.pythonhosted.org/packages/e3/94/d678ec302a3f8a198677c485cffbcd2191d78b80f6d097b5658c69fa0186/moncrief-3.2.3.tar.gz" } ], "4.0.0": [ { "comment_text": "", "digests": { "md5": "b20c554308eefe2003131a8e96753fdd", "sha256": "53021af8787229b4c03b684f6614635f1dfda89eee7ac2d38ef78d301802720f" }, "downloads": -1, "filename": "moncrief-4.0.0.tar.gz", "has_sig": false, "md5_digest": "b20c554308eefe2003131a8e96753fdd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 34797, "upload_time": "2019-09-06T14:31:40", "url": "https://files.pythonhosted.org/packages/0c/cb/702210cb0c526a96016c6c035ed6dec791552b08e7ee0f978bcef5619755/moncrief-4.0.0.tar.gz" } ], "5.0.0": [ { "comment_text": "", "digests": { "md5": "d5e92beb05b6bc78b8ee89014271d23f", "sha256": "ae8d9121f29e428246728138c522e06277e4411e9da664f987f9591ec0e47f35" }, "downloads": -1, "filename": "moncrief-5.0.0.tar.gz", "has_sig": false, "md5_digest": "d5e92beb05b6bc78b8ee89014271d23f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 35096, "upload_time": "2019-09-06T16:05:09", "url": "https://files.pythonhosted.org/packages/aa/11/16288ca1625312f13f12b7ce60792e74e10422ce9de982506e7cd71030cc/moncrief-5.0.0.tar.gz" } ], "6.0.0": [ { "comment_text": "", "digests": { "md5": "148a057a9ce0ad8a47930ffe0aa28e58", "sha256": "3fa17eb54ffd0bc3ad9a1e7e7cce44058c1a05055c031d8324aa5ddb574f7562" }, "downloads": -1, "filename": "moncrief-6.0.0.tar.gz", "has_sig": false, "md5_digest": "148a057a9ce0ad8a47930ffe0aa28e58", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 35121, "upload_time": "2019-09-10T17:52:09", "url": "https://files.pythonhosted.org/packages/5f/53/1b1432780417a694f82cdbb0f1676bee12fb52e69b7fd9758dae55c724dd/moncrief-6.0.0.tar.gz" } ], "6.1.0": [ { "comment_text": "", "digests": { "md5": "72d237448cccc9fb311bbaf9c3ee4b05", "sha256": "055baa7269d4ce6f2e2da0fe92439e92c3a90ff62f4aaa96e09b1f8e0c74913a" }, "downloads": -1, "filename": "moncrief-6.1.0.tar.gz", "has_sig": false, "md5_digest": "72d237448cccc9fb311bbaf9c3ee4b05", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 35167, "upload_time": "2019-09-11T15:47:13", "url": "https://files.pythonhosted.org/packages/5f/3b/31ce119e0430f2cb1f4aba17e20bda85283a29a78bb7be7faa9e35e445d4/moncrief-6.1.0.tar.gz" } ], "6.1.1": [ { "comment_text": "", "digests": { "md5": "cf93154c6dc1172f17379aff1d0cfffc", "sha256": "50a2f23a721a4f0cfa3cec79975db2bfdf74cc6ac06d8985bd0cb6cd02dda3cb" }, "downloads": -1, "filename": "moncrief-6.1.1.tar.gz", "has_sig": false, "md5_digest": "cf93154c6dc1172f17379aff1d0cfffc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 35171, "upload_time": "2019-09-11T15:51:35", "url": "https://files.pythonhosted.org/packages/a3/f0/0a80a63b580730205d64181b4635587b0f3ac0e76280c2db63cb9f27f477/moncrief-6.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cf93154c6dc1172f17379aff1d0cfffc", "sha256": "50a2f23a721a4f0cfa3cec79975db2bfdf74cc6ac06d8985bd0cb6cd02dda3cb" }, "downloads": -1, "filename": "moncrief-6.1.1.tar.gz", "has_sig": false, "md5_digest": "cf93154c6dc1172f17379aff1d0cfffc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 35171, "upload_time": "2019-09-11T15:51:35", "url": "https://files.pythonhosted.org/packages/a3/f0/0a80a63b580730205d64181b4635587b0f3ac0e76280c2db63cb9f27f477/moncrief-6.1.1.tar.gz" } ] }