{ "info": { "author": "Steven Brien", "author_email": "spbrien@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7" ], "description": "# Mir Framework\n\nA framework for creating complex, highly-customizable REST APIs and their management dashboards with minimal effort.\n\nBuilt on top of [Eve](http://python-eve.org/).\n\n---\n\n## Installation\n\nMir can be installed using [pip](https://pip.pypa.io/en/stable/installing/). The python package includes the framework's core files and a CLI tool used for creating and scaffolding projects, running development and production servers, and deploying your project.\n\n```bash\npip install mir\n```\n\n*Mir requires a running [MongoDB](https://docs.mongodb.com/manual/installation/) instance.*\n\n---\n\n## Starting a Project\n\nLike Eve, Mir is simple.\n\n```bash\n# initialize a project\nmir init my_new_project\n\n# navigate to your project directory\ncd my_new_project\n\n# Create a new endpoint\nmir model -n new_endpoint\n\n# start a dev server at http://localhost:8080\nmir dev\n\ncurl http://localhost:8080/new_endpoint\n```\n\n---\n\n## Features\n\n* Mir creates highly customizable REST APIs using simple, readable configuration files as an alternative to manual CRUD programming. You configure settings and validation for your database resources and get a REST API for free.\n\n* Automatically creates flexible, fully-featured web-based Admin UIs to manage your API based on the settings and validation specified in your resource configuration files.\n\n* Includes fully customizable token-based authentication out of the box. Control access per resource, per user, and/or per role via the application's configuration files.\n\n* Includes document versioning for all resources.\n\n* Includes media storage for files, videos, and images. Mir also implements an API for manipulating images on-the-fly via query string parameters, modeled after the [Cloudinary](https://cloudinary.com/) service.\n\n* Implements interfaces and APIs for creating custom application routes, request hooks, etc.\n\n* Provides code APIs for customizing much of the core functionality, including media/file storage and authentication.\n\n---\n\n## Development\n\nTo get started developing Mir, first clone the repo and install it as a python package in development mode:\n\n```bash\ngit clone https://github.com/spbrien/mir.git\npip install -e ./mir\n```\n\n* The core application (which imports/registers all project-specific code and other python modules) is in `mir/mir.py`\n* The CLI tool is in `mir/cli.py`\n* The source code for the Admin UI is in `admin/src`\n\n### Working on the API core files\n\nIn a separate directory, scaffold out and run a new Mir project:\n\n```bash\nmir init test_project\ncd test_project\nmir dev\n```\n\nOnce you have a running Mir instance, you can update core files and see your changes in the running instance. Due to the way Mir dynamically imports python modules from project-specific code, many changes require manually restarting the development server:\n\n```bash\nctrl + c\nmir dev\n```\n\n### Working on the Admin UI\n\nIn a separate testing directory, scaffold out and run a new Mir project:\n\n```bash\nmir init test_project\ncd test_project\nmir dev\n```\n\nIn your main Mir directory, change to the admin application folder and start a dev server:\n\n```bash\ncd admin\nnpm run dev\n```\n\nThis starts a frontend development server for the Admin Vue application at http://localhost:8081\n\nTo build your changes into the running mir instance, run `npm run build` and restart the mir dev server from the testing directory. For the Admin UI, build files should be committed to the Mir package repo.\n\n---\n\nFor full documentation, visit the [Python Mir](http://python-mir.org) website.\n\n\n# History\n\n## 0.1.0 (2018-02-13)\n\n* First release on PyPI.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/spbrien/mir", "keywords": "mir", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "mir", "package_url": "https://pypi.org/project/mir/", "platform": "", "project_url": "https://pypi.org/project/mir/", "project_urls": { "Homepage": "https://github.com/spbrien/mir" }, "release_url": "https://pypi.org/project/mir/1.2.8/", "requires_dist": null, "requires_python": "", "summary": "Mir API Framework", "version": "1.2.8" }, "last_serial": 4422270, "releases": { "0.3.16": [ { "comment_text": "", "digests": { "md5": "14ca25d7c11ba26536c094cf424088f2", "sha256": "4662d02968b48c9c832e1cf0f6d48a526ec1d623ee1d8a4505272466c896309a" }, "downloads": -1, "filename": "mir-0.3.16.tar.gz", "has_sig": false, "md5_digest": "14ca25d7c11ba26536c094cf424088f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 768293, "upload_time": "2018-04-15T18:35:05", "url": "https://files.pythonhosted.org/packages/43/57/a91d3b5c6713957cb4c0458ab398fdc84c41a3b5262ad8b97e2d4a1aa032/mir-0.3.16.tar.gz" } ], "0.3.17": [ { "comment_text": "", "digests": { "md5": "22d5e21ad3180374ac44be4435d93401", "sha256": "49ac41455981ef65c2abc7024ae95f556a7f4101a0b479bdda4965f9e12e8354" }, "downloads": -1, "filename": "mir-0.3.17.tar.gz", "has_sig": false, "md5_digest": "22d5e21ad3180374ac44be4435d93401", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 774147, "upload_time": "2018-04-15T22:52:25", "url": "https://files.pythonhosted.org/packages/fd/68/e08b20ea202aba9c791c1976cc5fc74d749ad7273bcf44111d3a5372562e/mir-0.3.17.tar.gz" } ], "0.3.18": [ { "comment_text": "", "digests": { "md5": "381750fc7c6556192ca205e24c799730", "sha256": "fea04b64b147651d4c77c23e11584c1b066a14b940ae8bf6072d90e150d1e5ab" }, "downloads": -1, "filename": "mir-0.3.18.tar.gz", "has_sig": false, "md5_digest": "381750fc7c6556192ca205e24c799730", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 774371, "upload_time": "2018-04-16T17:40:48", "url": "https://files.pythonhosted.org/packages/ac/67/e46c034b9e0c3b0307c0282a36dcd131bb6bac44aaafb56325a72671b1ba/mir-0.3.18.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "b3f7638b0aedc840f358e6e650589326", "sha256": "73e3a54c93f69eca1905b74329c0b93c76a247f3f4e07250e5733ef081e11dd4" }, "downloads": -1, "filename": "mir-1.0.0.tar.gz", "has_sig": false, "md5_digest": "b3f7638b0aedc840f358e6e650589326", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 652935, "upload_time": "2018-04-17T14:52:24", "url": "https://files.pythonhosted.org/packages/a6/d9/933334339814f52148d59d5c457de80332c475852fb7f65feaf4d008272f/mir-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "5d6d1b4697a68a56c0815349f80c27ef", "sha256": "1be612c4bdf5263176a4633c01d4daec1a567adf999fe213d8bbbc6ce9719d4f" }, "downloads": -1, "filename": "mir-1.1.0.tar.gz", "has_sig": false, "md5_digest": "5d6d1b4697a68a56c0815349f80c27ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 653006, "upload_time": "2018-04-19T14:55:26", "url": "https://files.pythonhosted.org/packages/d0/0c/2143834d2460fd8fd40869f1ec79038e2eb1b03e03f2771f388fa1dbccaf/mir-1.1.0.tar.gz" } ], "1.1.11": [ { "comment_text": "", "digests": { "md5": "f9b1ca9e91da51e3baee83ce9fdb4413", "sha256": "545c1959fca6ae1d3a83a8eb7df5f8641ae5d06b2866b414e2895f3be9c9b54e" }, "downloads": -1, "filename": "mir-1.1.11.tar.gz", "has_sig": false, "md5_digest": "f9b1ca9e91da51e3baee83ce9fdb4413", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 682602, "upload_time": "2018-08-13T14:58:25", "url": "https://files.pythonhosted.org/packages/d9/3d/2fa9da9d0a9ca79e4d2b9d3ed40d252d99986ee7ed2e13f6979480f87bdd/mir-1.1.11.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "cae42c88d6331d2a36af2c7943ce0acc", "sha256": "2b818959fb3cc38cbeb747ffc02f03aada877003d7472aa168b6bf1c4ff4aff4" }, "downloads": -1, "filename": "mir-1.1.2.tar.gz", "has_sig": false, "md5_digest": "cae42c88d6331d2a36af2c7943ce0acc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 651170, "upload_time": "2018-04-25T16:04:11", "url": "https://files.pythonhosted.org/packages/54/98/09b0e8da80ab38c5715889e9ec1b3c328dfb09a3eca47499dede8485626f/mir-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "754806d1772756f37bb96148af7f9360", "sha256": "ca8d32ea1438713f46f16253ba6cf441785ddb180567f7a42e6f77d1f09850c0" }, "downloads": -1, "filename": "mir-1.1.3.tar.gz", "has_sig": false, "md5_digest": "754806d1772756f37bb96148af7f9360", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 655355, "upload_time": "2018-04-26T20:47:40", "url": "https://files.pythonhosted.org/packages/34/a6/9a5812ae5007eaaf99287ce2237ecdb7f8508dbb3477978a4e844db1e180/mir-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "dafa4da3fd7b5150c8c1feab4bcbc4ea", "sha256": "3b3df50d4c9ca5b58d241f8d2b3277b60e5e4f8f95ce9fd471536cbd4d9e8828" }, "downloads": -1, "filename": "mir-1.1.4.tar.gz", "has_sig": false, "md5_digest": "dafa4da3fd7b5150c8c1feab4bcbc4ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 655402, "upload_time": "2018-04-27T20:35:54", "url": "https://files.pythonhosted.org/packages/f3/01/76f2e52b6a842cb311798ec4cb79771649fb99fd73f1cd518cc5f54183a1/mir-1.1.4.tar.gz" } ], "1.1.7": [ { "comment_text": "", "digests": { "md5": "805559dc72279015945d6cf5b229c485", "sha256": "87d1658cce3d8d73ce096af370989bfb38c2645f651a68d767af6e513e0e0927" }, "downloads": -1, "filename": "mir-1.1.7.tar.gz", "has_sig": false, "md5_digest": "805559dc72279015945d6cf5b229c485", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 682259, "upload_time": "2018-07-03T15:44:03", "url": "https://files.pythonhosted.org/packages/32/8c/b17fe6c42a0cea08b96a6c67e171ebdce459ae331350cff894e333725bc1/mir-1.1.7.tar.gz" } ], "1.1.8": [ { "comment_text": "", "digests": { "md5": "5dca7efaa1132928b7c9e99833983440", "sha256": "39eae0ce9c2dc7d681a2e3b04787475ea5a975e4e643be5e00a867ab6f528429" }, "downloads": -1, "filename": "mir-1.1.8.tar.gz", "has_sig": false, "md5_digest": "5dca7efaa1132928b7c9e99833983440", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 682278, "upload_time": "2018-07-03T16:03:51", "url": "https://files.pythonhosted.org/packages/9e/d2/faeaf8b3e777991de854cc2727de1bbdbbb14850c3af2efb38d1b1e74200/mir-1.1.8.tar.gz" } ], "1.1.9": [ { "comment_text": "", "digests": { "md5": "01071c11fe8ade2b4448a6d7570c8666", "sha256": "74fbb575fb077a627235a40dc071ce3e99f8d800759961ee9acb86aa4016dfe4" }, "downloads": -1, "filename": "mir-1.1.9.tar.gz", "has_sig": false, "md5_digest": "01071c11fe8ade2b4448a6d7570c8666", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 682567, "upload_time": "2018-07-06T15:38:19", "url": "https://files.pythonhosted.org/packages/9b/41/e4b5ce452fbf3efa1fbd0ffe03d2d037283461cbb24dc2ee889e1a0444f8/mir-1.1.9.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "15e8974df08cde4d5468d9f3234c6a02", "sha256": "58d7fd16159ed8d64dab177126561c1c7da85b686c1946e4e945ebd69d809390" }, "downloads": -1, "filename": "mir-1.2.0.tar.gz", "has_sig": false, "md5_digest": "15e8974df08cde4d5468d9f3234c6a02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 687852, "upload_time": "2018-08-15T15:17:38", "url": "https://files.pythonhosted.org/packages/5b/a0/64cbab2adaf3722ea67ca6ea96858b721100c5004a1eb0b2fdbe0e9c34b4/mir-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "711379f5768dc2117889601efa9cdb7f", "sha256": "19feebf782f79e076d51bb003eeaaadc0aa446e8a6a19bb727efc0350e75342d" }, "downloads": -1, "filename": "mir-1.2.1.tar.gz", "has_sig": false, "md5_digest": "711379f5768dc2117889601efa9cdb7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 687836, "upload_time": "2018-08-22T14:24:04", "url": "https://files.pythonhosted.org/packages/d8/10/a034551dee5ab2a669a8bedbcf6f3c3a983d725d681495cb4c8f0873f606/mir-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "69957a5fe908667fbb38b7353d8faa1e", "sha256": "094e137f86752b72f3ff57bd037895ea02bd68e585233f9c81e9942f6b53f3d5" }, "downloads": -1, "filename": "mir-1.2.2.tar.gz", "has_sig": false, "md5_digest": "69957a5fe908667fbb38b7353d8faa1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 687991, "upload_time": "2018-09-27T21:14:10", "url": "https://files.pythonhosted.org/packages/55/53/3606a66359b4c0f4eb7e98cfdc570da36b25e1f5f2d34a35f5230d0273d6/mir-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "0d99885c25fdbb2ff1b99f688cc46717", "sha256": "66d81536b836c1502bb14216d0a68e17e6df15de28988d6f1ba15c65af404d42" }, "downloads": -1, "filename": "mir-1.2.3.tar.gz", "has_sig": false, "md5_digest": "0d99885c25fdbb2ff1b99f688cc46717", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 688013, "upload_time": "2018-09-28T13:31:34", "url": "https://files.pythonhosted.org/packages/43/e2/c04f5c85793b0facac53f781541d71419aa8d10cc65b8b77ab4d0548db69/mir-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "0e6c0284bfe7ae56b6fba13623f0b99a", "sha256": "c37c67e7ac1633fd5e34a07d2355047be07513c46b037a2ee06b68c980ed9604" }, "downloads": -1, "filename": "mir-1.2.4.tar.gz", "has_sig": false, "md5_digest": "0e6c0284bfe7ae56b6fba13623f0b99a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 688032, "upload_time": "2018-09-28T13:47:49", "url": "https://files.pythonhosted.org/packages/38/80/c5852fc67237cf2aef59b310f0386f935546cb32c27a4b0ae7e9894237e3/mir-1.2.4.tar.gz" } ], "1.2.5": [ { "comment_text": "", "digests": { "md5": "59315bd8061ee587e1ea1be2ee6b2f20", "sha256": "3e7305757a939b41126f72a59aef28b5f321818784fef45a18752d720178298a" }, "downloads": -1, "filename": "mir-1.2.5.tar.gz", "has_sig": false, "md5_digest": "59315bd8061ee587e1ea1be2ee6b2f20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 688026, "upload_time": "2018-09-28T13:57:02", "url": "https://files.pythonhosted.org/packages/14/a0/ad314a9bddc58a2680c233c405fc991648b3a62f9dfa46fa3ef9e0757401/mir-1.2.5.tar.gz" } ], "1.2.7": [ { "comment_text": "", "digests": { "md5": "52e6620f4643c0785c0525294f4d97fa", "sha256": "eddf6533ed3e66713a3cfb6c59f0220246af03f237c961b7199fcfe6e0b95fcf" }, "downloads": -1, "filename": "mir-1.2.7.tar.gz", "has_sig": false, "md5_digest": "52e6620f4643c0785c0525294f4d97fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 686590, "upload_time": "2018-10-23T21:39:45", "url": "https://files.pythonhosted.org/packages/10/95/6d76f56d7b6e76dc5064ea617da174416f15fe9e3bd1efe6fa1937ea447d/mir-1.2.7.tar.gz" } ], "1.2.8": [ { "comment_text": "", "digests": { "md5": "0569e20288a8b057647c76a189ac72c0", "sha256": "681c4cee9b43cd3d260c487482606e2d10c302553a194150f68a31d7e3414d11" }, "downloads": -1, "filename": "mir-1.2.8.tar.gz", "has_sig": false, "md5_digest": "0569e20288a8b057647c76a189ac72c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 687260, "upload_time": "2018-10-27T16:19:22", "url": "https://files.pythonhosted.org/packages/bf/7c/b2ee13d0a12bf5ccd56bb24755cf2170809c542d6c4615fb6203420a0d82/mir-1.2.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0569e20288a8b057647c76a189ac72c0", "sha256": "681c4cee9b43cd3d260c487482606e2d10c302553a194150f68a31d7e3414d11" }, "downloads": -1, "filename": "mir-1.2.8.tar.gz", "has_sig": false, "md5_digest": "0569e20288a8b057647c76a189ac72c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 687260, "upload_time": "2018-10-27T16:19:22", "url": "https://files.pythonhosted.org/packages/bf/7c/b2ee13d0a12bf5ccd56bb24755cf2170809c542d6c4615fb6203420a0d82/mir-1.2.8.tar.gz" } ] }