{ "info": { "author": "Mxit Developers", "author_email": "developerrelations@mxit.com", "bugtrack_url": null, "classifiers": [], "description": "# python-mxit\n\nPython wrapper for accessing [Mxit's public APIs](https://dev.mxit.com/docs/restapi)\n\n## Installation\n\n\tpip install mxit\n\n## Usage\n\n### [Authentication](https://dev.mxit.com/docs/authentication)\n\nIn order to use the Mxit APIs, one needs a *client ID* and *client secret*, which can be obtained by registering your app at [dev.mxit.com](https://dev.mxit.com). With these credentials a client object can be created:\n\n```python\nfrom mxit import Mxit\n \nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET)\n```\n\nCertain *Mxit API* calls are publically available, and thus only require app authentication. It is not necessary to specify *scope* when making these calls through this *API wrapper*, since it is already done in the respective functions.\n\nCertain *Mxit API* calls require user authentication. The user would thus need to be redirected to *Mxit's* auth site, where permission will be granted by the user for the requested *scope(s)*. The auth site will then redirect the user back to a specified url with a *code* attached in the query string. This code is then used to obtain the auth token for the following *API* calls. For this flow the url where the auth site needs to redirect back to needs to be specified when instantiating the client:\n\n```python\nfrom mxit import Mxit\n\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_url='http://example.org')\nclient.oauth.get_user_token(SCOPE, RECEIVED_CODE)\n```\n\t\nThe auth site url to redirect the user to can be obtained with the following call (where *SCOPE* is the required scope(s) for the API calls to be made):\n\n```python\nclient.oauth.auth_url(SCOPE)\n```\n\t\nAfter the user has granted the desired permissions and the user redirected back the the url as specified, the auth token can be fetched as follows:\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_url='http://example.org')\nclient.oauth.get_user_token(SCOPE, RECEIVED_CODE)\n```\n\t\nFrom here the client has access to the api calls allowed by the specified *scope*.\n\n### [Messaging API](https://dev.mxit.com/docs/restapi/messaging)\n\n#### [send_message](https://dev.mxit.com/docs/restapi/messaging/post-message-send)\n\nSend a message (from a Mxit app) to a list of Mxit users\n\n*User authentication required*: **NO**\n\n*Required scope*: **message/send**\n\n##### Parameters\n* *app_mxit_id* (**required**)\n* *target_user_ids* (**required**)\n* *message* (**required**)\n* *contains_markup* (**optional**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET)\n\t\nclient.messaging.send_message(\"example_app_mxit_id\", [\"mxit_user_id_1\", \"mxit_user_id_2\" ], \"This is a test message\")\n```\n\n#### [send_user_to_user_message](https://dev.mxit.com/docs/restapi/messaging/post-message-send)\n\nSend a message (from a Mxit user) to a list of Mxit users\n\n*User authentication required*: **YES**\n\n*Required scope*: **message/user**\n\n##### Parameters\n* *from_user_id* (**required**)\n* *target_user_ids* (**required**)\n* *message* (**required**)\n* *contains_markup* (**optional**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"message/user\", RECEIVED_AUTH_CODE)\nclient.messaging.send_user_to_user_message(\"example_mxit_user_id\", [\"mxit_user_id_1\", \"mxit_user_id_2\" ], \"This is a test user to user message\")\n```\n\n### [User API](https://dev.mxit.com/docs/restapi/user])\n\n#### [get_user_id](https://dev.mxit.com/docs/restapi/user/get-user-lookup-mxitid)\n\nRetrieve the Mxit user's internal \"user ID\"\n\n*User authentication required*: **NO**\n\n*Required scope*: **profile/public**\n\n##### Parameters\n* *mxit_id* (**required**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET)\n\t\nuser_id = client.users.get_user_id(\"example_mxit_id\")\n```\n\n#### [get_status](https://dev.mxit.com/docs/restapi/user/get-user-statusmessage)\n\nRetrieve the Mxit user's current status\n\n*User authentication required*: **NO**\n\n*Required scope*: **profile/public**\n\n##### Parameters\n* *mxit_id* (**required**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET)\n\t\nstatus = client.users.get_status(\"example_mxit_id\")\n```\n\n#### [set_status](https://dev.mxit.com/docs/restapi/user/put-user-statusmessage)\n\nSet the Mxit user's status\n\n*User authentication required*: **YES**\n\n*Required scope*: **status/write**\n\n##### Parameters\n* *message* (**required**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"status/write\", RECEIVED_AUTH_CODE)\nclient.users.set_status(\"Some awesome status\")\n```\n\n#### [get_display_name](https://dev.mxit.com/docs/restapi/user/get-user-public-displayname-mxitid)\n\nRetrieve the Mxit user's display name\n\n*User authentication required*: **NO**\n\n*Required scope*: **profile/public**\n\n##### Parameters\n* *mxit_id* (**required**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET)\n\t\ndisplay_name = client.users.get_display_name(\"example_mxit_id\")\n```\n\n#### [get_avatar](https://dev.mxit.com/docs/restapi/user/get-user-avatar)\n\nRetrieve the Mxit user's avatar\n\n*User authentication required*: **NO**\n\n*Required scope*: **profile/public**\n\n##### Parameters\n\nIf *output_file_path* is set, the file will be saved at that path, otherwise the file data will be returned.\n\n* *mxit_id* (**required**)\n* *output_file_path* (**optional**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET)\n\t\nclient.users.get_avatar(\"example_mxit_id\", output_file_path=\"/path/to/avatar.png\")\ndata = client.users.get_avatar(\"example_mxit_id\")\n```\n\n\n#### [set_avatar](https://dev.mxit.com/docs/restapi/user/post-user-avatar)\n\nSet the Mxit user's avatar\n\n*User authentication required*: **YES**\n\n*Required scope*: **avatar/write**\n\n##### Parameters\n\nThe avatar can either be sent as a bytestream in *data* or as a filepath in *input_file_path*.\n\n* *data* (**optional**)\n* *input_file_path* (**optional**)\n* *content_type* (**optional**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"avatar/write\", RECEIVED_AUTH_CODE)\nclient.users.set_avatar(input_file_path=\"/path/to/avatar.png\")\n```\n\n#### [delete_avatar](https://dev.mxit.com/docs/restapi/user/delete-user-avatar)\n\nDelete the Mxit user's avatar\n\n*User authentication required*: **YES**\n\n*Required scope*: **avatar/write**\n\n##### Parameters\n\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"avatar/write\", RECEIVED_AUTH_CODE)\nclient.users.delete_avatar()\n```\n\n#### [get_basic_profile](https://dev.mxit.com/docs/restapi/user/get-user-profile-userid)\n\nRetrieve the Mxit user's basic profile\n\n*User authentication required*: **NO**\n\n*Required scope*: **profile/public**\n\n##### Parameters\n\n* *user_id* (**required**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET)\n\t\nbasic_profile = client.users.get_basic_profile(\"example_user_id\")\n```\n\n#### [get_full_profile](https://dev.mxit.com/docs/restapi/user/get-user-profile)\n\nRetrieve the Mxit user's full profile\n\n*User authentication required*: **YES**\n\n*Required scope*: **profile/private**\n\n##### Parameters\n\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"profile/private\", RECEIVED_AUTH_CODE)\nfull_profile = client.users.get_full_profile()\n```\n\n#### [update_profile](https://dev.mxit.com/docs/restapi/user/put-user-profile)\n\n\nUpdate the Mxit user's profile\n\n*User authentication required*: **YES**\n\n*Required scope*: **profile/write**\n\n##### Parameters\n\n* *about_me* (**optional**)\n* *display_name* (**optional**)\n* *email* (**optional**)\n* *first_name* (**optional**)\n* *gender* (**optional**)\n* *last_name* (**optional**)\n* *mobile_number* (**optional**)\n* *relationship_status* (**optional**)\n* *title* (**optional**)\n* *where_am_i* (**optional**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"profile/write\", RECEIVED_AUTH_CODE)\nclient.users.update_profile(email=\"test@test.com\", relationship_status=3)\n```\n\n#### [add_contact](https://dev.mxit.com/docs/restapi/user/put-user-socialgraph-contact-contact)\n\nAdd a contact on Mxit\n\n*User authentication required*: **YES**\n\n*Required scope*: **contact/invite**\n\n##### Parameters\n\n*contact_id* can either be the mxit ID of a service or a Mxit user\n\n* *contact_id* (**required**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"contact/invite\", RECEIVED_AUTH_CODE)\nclient.users.add_contact(\"example_contact_id\")\n```\n\n\n#### [get_contact_list](https://dev.mxit.com/docs/restapi/user/get-user-socialgraph-contactlist)\n\n Retrieve the Mxit user's full contact list\n\n*User authentication required*: **YES**\n\n*Required scope*: **graph/read**\n\n##### Parameters\n\n*list_filter* options can be found in ``mxit.CONTACT_LIST_FILTER``. The following options are available: **\"all\", \"friends\", \"apps\", \"invites\", \"connections\", \"rejected\", \"pending\", \"deleted\", \"blocked\"**\n\n* *list_filter* (**required**)\n* *skip* (**optional**)\n* *count* (**optional**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit, CONTACT_LIST_FILTER\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"graph/read\", RECEIVED_AUTH_CODE)\nclient.users.get_contact_list(CONTACT_LIST_FILTER['all'])\n```\n\n#### [get_friend_suggestions](https://dev.mxit.com/docs/restapi/user/get-user-socialgraph-suggestions)\n\nRetrieve the Mxit user's full profile\n\n*User authentication required*: **YES**\n\n*Required scope*: **graph/read**\n\n##### Parameters\n\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"graph/read\", RECEIVED_AUTH_CODE)\nclient.users.get_friend_suggestions()\n```\n\n#### [get_gallery_folder_list](https://dev.mxit.com/docs/restapi/user/get-user-media)\n\nRetrieve a list of the Mxit user's gallery folders\n\n*User authentication required*: **YES**\n\n*Required scope*: **content/read**\n\n##### Parameters\n\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"content/read\", RECEIVED_AUTH_CODE)\nclient.users.get_gallery_folder_list()\n```\n\n#### [create_gallery_folder](https://dev.mxit.com/docs/restapi/user/post-user-media-foldername)\n\nCreate a new folder in the Mxit user's gallery\n\n*User authentication required*: **YES**\n\n*Required scope*: **content/write**\n\n##### Parameters\n\n* *folder_name* (**required**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"content/write\", RECEIVED_AUTH_CODE)\nclient.users.create_gallery_folder(\"example folder name\")\n```\n\n#### [delete_gallery_folder](https://dev.mxit.com/docs/restapi/user/delete-user-media-foldername)\n\nDelete a folder in the Mxit user's gallery\n\n*User authentication required*: **YES**\n\n*Required scope*: **content/write**\n\n##### Parameters\n\n* *folder_name* (**required**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"content/write\", RECEIVED_AUTH_CODE)\nclient.users.delete_gallery_folder(\"example folder name\")\n```\n\n#### [rename_gallery_folder](https://dev.mxit.com/docs/restapi/user/put-user-media-foldername)\n\nRename a folder in the Mxit user's gallery\n\n*User authentication required*: **YES**\n\n*Required scope*: **content/write**\n\n##### Parameters\n\n* *old_folder_name* (**required**)\n* *new_folder_name* (**required**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"content/write\", RECEIVED_AUTH_CODE)\nclient.users.rename_gallery_folder(\"old example folder name\", \"new example folder name\")\n```\n\n#### [delete_gallery_file](https://dev.mxit.com/docs/restapi/user/delete-user-media-file-fileid)\n\nDelete a file in the Mxit user's gallery\n\n*User authentication required*: **YES**\n\n*Required scope*: **content/write**\n\n##### Parameters\n\n* *file_id* (**required**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"content/write\", RECEIVED_AUTH_CODE)\nclient.users.delete_gallery_file(\"example_file_id\")\n```\n\n#### [rename_gallery_file](https://dev.mxit.com/docs/restapi/user/put-user-media-file-fileid)\n\nRename a file in the Mxit user's gallery\n\n*User authentication required*: **YES**\n\n*Required scope*: **content/write**\n\n##### Parameters\n\n* *file_id* (**required**)\n* *new_file_name* (**required**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"content/write\", RECEIVED_AUTH_CODE)\nclient.users.rename_gallery_file(\"example_file_id\", \"new file name\")\n```\n\n#### [upload_gallery_file](https://dev.mxit.com/docs/restapi/user/post-user-media-file-foldername)\n\nUpload a file to a folder in the Mxit user's gallery\n\n*User authentication required*: **YES**\n\n*Required scope*: **content/write**\n\n##### Parameters\n\nThe file can either be sent as a bytestream in *data* or as a filepath in *input_file_path*.\n\n* *folder_name* (**required**)\n* *file_name* (**required**)\n* *data* (**optional**)\n* *input_file_path* (**optional**)\n* *prevent_share* (**optional**)\n* *content_type* (**optional**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"content/write\", RECEIVED_AUTH_CODE)\nclient.users.upload_gallery_file(\"example folder name\", \"example file name\", input_file_path=\"/path/to/image.png\", content_type=\"image/png\")\n```\n\n#### [get_gallery_item_list](https://dev.mxit.com/docs/restapi/user/get-user-media-list-foldername)\n\nGet the item listing in a given folder in the Mxit user's gallery\n\n*User authentication required*: **YES**\n\n*Required scope*: **content/read**\n\n##### Parameters\n\n* *folder_name* (**required**)\n* *skip* (**optional**)\n* *count* (**optional**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"content/read\", RECEIVED_AUTH_CODE)\nclient.users.get_gallery_item_list(\"example folder name\")\n```\n\n#### [get_gallery_file](https://dev.mxit.com/docs/restapi/user/get-user-media-content-fileid)\n\nGet a file in the Mxit user's gallery\n\n*User authentication required*: **YES**\n\n*Required scope*: **content/read**\n\n##### Parameters\n\nIf *output_file_path* is set, the file will be saved at that path, otherwise the file data will be returned.\n\n* *file_id* (**required**)\n* *output_file_path* (**optional**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET, redirect_uri=\"http://example.org\")\n\t\nclient.oauth.get_user_token(\"content/read\", RECEIVED_AUTH_CODE)\n\nclient.users.get_gallery_file(\"example_file_id\", output_file_path=\"/path/to/image.png\")\ndata = client.users.get_avatar(\"example_file_id\")\n```\n\n#### upload_file_and_send_file_offer\n\nUpload a file of any type to store and return a FileId once file offer has been sent.\n\n*User authentication required*: **NO**\n\n*Required scope*: **content/send**\n\n##### Parameters\n\nThe file can either be sent as a bytestream in *data* or as a filepath in *input_file_path*.\n\n* *file_name* (**required**)\n* *user_id* (**required**)\n* *data* (**optional**)\n* *input_file_path* (**optional**)\n* *auto_open* (**optional**)\n* *prevent_share* (**optional**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET)\n\nuser_id = client.users.get_user_id(\"example_mxit_id\")\nclient.users.upload_file_and_send_file_offer(\"example_file_name\", user_id, input_file_path=\"/path/to/image.png\")\n```\n\n#### send_file_offer\n\nUpload a file of any type to store and return a FileId once file offer has been sent.\n\n*User authentication required*: **NO**\n\n*Required scope*: **content/send**\n\n##### Parameters\n\n* *file_id* (**required**)\n* *user_id* (**required**)\n* *scope* (**optional**)\n\n##### Example\n\n```python\nfrom mxit import Mxit\n\t\nclient = Mxit(MXIT_CLIENT_ID, MXIT_CLIENT_SECRET)\n\nuser_id = client.users.get_user_id(\"example_mxit_id\")\nclient.users.send_file_offer(\"example_file_id\", user_id)\n```", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Mxit/python-mxit", "keywords": null, "license": "LICENSE", "maintainer": null, "maintainer_email": null, "name": "mxit", "package_url": "https://pypi.org/project/mxit/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/mxit/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/Mxit/python-mxit" }, "release_url": "https://pypi.org/project/mxit/0.3.8/", "requires_dist": null, "requires_python": null, "summary": "Python utility library for accessing Mxit's public APIs.", "version": "0.3.8" }, "last_serial": 1349386, "releases": { "0.3": [ { "comment_text": "", "digests": { "md5": "a6719bfa3c62514fa7e820a8887d8d23", "sha256": "de9c0fdeed9b34617a7f46e723aa64802557b151c36d502835bcc9ea9343ffc8" }, "downloads": -1, "filename": "mxit-0.3.tar.gz", "has_sig": false, "md5_digest": "a6719bfa3c62514fa7e820a8887d8d23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6700, "upload_time": "2013-11-29T14:18:42", "url": "https://files.pythonhosted.org/packages/4d/cc/7b5a7657ad689532c3faf5481000c102835c17d448dc185616a4a8740384/mxit-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "068975537d4f7029698f81041d49b0a9", "sha256": "5a166ec94bf0ddca247e863d606b30571652b1f13edc0a2e60078e5a83650092" }, "downloads": -1, "filename": "mxit-0.3.1.tar.gz", "has_sig": false, "md5_digest": "068975537d4f7029698f81041d49b0a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6892, "upload_time": "2013-12-13T12:33:48", "url": "https://files.pythonhosted.org/packages/27/b8/37e5cbafd32806b68bd0400c52d186bb8e71c0b18ba5558b3c4f371f33eb/mxit-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "f4c3d5f25f784c90aa2c161eef940643", "sha256": "1f3e4ccc6653d092c3d6e6392db43bac7bea1f87dbcd1ae133742efd5a2d64f3" }, "downloads": -1, "filename": "mxit-0.3.2.tar.gz", "has_sig": false, "md5_digest": "f4c3d5f25f784c90aa2c161eef940643", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6940, "upload_time": "2014-01-28T09:55:56", "url": "https://files.pythonhosted.org/packages/c0/97/7f7665241c253845f85cac9669d16c5cd3f7c3ddbe85eb3e865af6068422/mxit-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "2d17c708e805e0f03b96843acd3b3888", "sha256": "0e02fe6b43a0dda2e6e038f2726c0f44d210f27bbc20d6ea2dbfce15a6adeac7" }, "downloads": -1, "filename": "mxit-0.3.3.tar.gz", "has_sig": false, "md5_digest": "2d17c708e805e0f03b96843acd3b3888", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6952, "upload_time": "2014-04-03T11:44:50", "url": "https://files.pythonhosted.org/packages/b6/d6/f151b12a139b28237c0bbd79177378b01c10fec1d89a910217190fe6b8a8/mxit-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "9251bbb838dae3ab4c4273d3b687e00d", "sha256": "fa27dc212736e6e87a4b4934af49cbee96576418081e3a81304862682c99a3f3" }, "downloads": -1, "filename": "mxit-0.3.4.tar.gz", "has_sig": false, "md5_digest": "9251bbb838dae3ab4c4273d3b687e00d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7031, "upload_time": "2014-05-08T07:53:20", "url": "https://files.pythonhosted.org/packages/b3/9b/c27a44547e4102190d6925258091b85956b43ca682b7b01b1831f69b6d54/mxit-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "88852866aad88fc63aa99125d391763b", "sha256": "00086774d5d6693e3033dd264ed5d593467f55d23e7382ba9877ea5f95778ade" }, "downloads": -1, "filename": "mxit-0.3.5.tar.gz", "has_sig": false, "md5_digest": "88852866aad88fc63aa99125d391763b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7111, "upload_time": "2014-05-20T08:32:22", "url": "https://files.pythonhosted.org/packages/e1/22/480d64f413cf9595f0bc5000865f62b501c0448bc016c53538f1f62e7060/mxit-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "bb1cf240c0940ef7cffe4b0c7518d569", "sha256": "765d3db061fe65b5ff339578ea8916a2a6a83ff25dfb968d10e4679692922c3c" }, "downloads": -1, "filename": "mxit-0.3.6.tar.gz", "has_sig": false, "md5_digest": "bb1cf240c0940ef7cffe4b0c7518d569", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7122, "upload_time": "2014-05-28T10:51:14", "url": "https://files.pythonhosted.org/packages/45/23/69cc75f603d77b313bc0607c59514e3318b6f8a3b6b5107f2956806778f0/mxit-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "7f13df49d9b562de1624bf8c76ee35a2", "sha256": "e22361aa502d55b1c3fe4c43fdfc904a60057042be21d84c7a3e60ac6b5b08a4" }, "downloads": -1, "filename": "mxit-0.3.7.tar.gz", "has_sig": false, "md5_digest": "7f13df49d9b562de1624bf8c76ee35a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7153, "upload_time": "2014-07-11T10:52:17", "url": "https://files.pythonhosted.org/packages/f6/dc/1de5766f8d167a4bbe3bd0178d5624270778a547c5033a7dfc0681737bb7/mxit-0.3.7.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "cefa8f6ba560b937f74705be08e314ec", "sha256": "4843dd08004936e2a39b9b8d65d2323537bb227dbf5da8a1c957f3a210b78bb5" }, "downloads": -1, "filename": "mxit-0.3.8.tar.gz", "has_sig": false, "md5_digest": "cefa8f6ba560b937f74705be08e314ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7148, "upload_time": "2014-12-18T15:42:16", "url": "https://files.pythonhosted.org/packages/0a/1b/5ba48ed3da3e761e2d381471425f444ae10fa37b99658cdba8c209218de5/mxit-0.3.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cefa8f6ba560b937f74705be08e314ec", "sha256": "4843dd08004936e2a39b9b8d65d2323537bb227dbf5da8a1c957f3a210b78bb5" }, "downloads": -1, "filename": "mxit-0.3.8.tar.gz", "has_sig": false, "md5_digest": "cefa8f6ba560b937f74705be08e314ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7148, "upload_time": "2014-12-18T15:42:16", "url": "https://files.pythonhosted.org/packages/0a/1b/5ba48ed3da3e761e2d381471425f444ae10fa37b99658cdba8c209218de5/mxit-0.3.8.tar.gz" } ] }