{ "info": { "author": "Ryan Garber", "author_email": "ryanmichaelgarber@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Internet :: WWW/HTTP :: HTTP Servers" ], "description": "#######\nMiniPyP\n#######\nA more traditional web server in Python\n\n.. image:: https://badge.fury.io/py/minipyp.svg\n :target: https://badge.fury.io/py/minipyp\n :alt: Release Status\n.. image:: https://readthedocs.org/projects/minipyp/badge/?version=latest\n :target: http://minipyp.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n.. image:: https://travis-ci.org/RyanGarber/minipyp.svg?branch=master\n :target: https://travis-ci.org/RyanGarber/minipyp\n :alt: Build Status\n\nAbout the project\n=================\nMiniPyP (pronounced ``mini\u00c2\u00b7pipe``) is an event-driven web server written in pure Python. **However, MiniPyP is not an application framework**. It's a full web server, with virtual hosts, reverse proxies, and everything else you need. MiniPyP is intended to replace Apache and nginx, so you can use Python without the performance hit of CGI.\n\nMiniPyP has some more advanced features right out of the box, too. For example, when a user goes to ``/some/url`` on your server, and the directory's ``static`` option is set to False (default), the server will look for the file ``/some/url``. If it doesn't exist, but the file ``/some`` does, that file will be served. Extensions do not need to be specified with the ``static`` option set to False. In addition, if a file does not exist but a file named ``catchall`` exists, it will be served instead of a 404. This makes creating a single-page application that much more elegant.\n\nSetup\n=====\nFirst, install MiniPyP via pip.\n\n.. code-block:: bash\n\n pip install minipyp\n\nTo start a server within a Python program, specify a config like so (you may alternatively give a file location as the ``config``):\n\n.. code-block:: python\n\n from minipyp import MiniPyP\n\n config = {\n 'host': '0.0.0.0',\n 'port': 80,\n 'root': '/var/www/html',\n 'timeout': 15,\n 'error_pages': {\n 404: {\n 'html': '

The file {uri} could not be found.

'\n }\n }\n }\n\n MiniPyP(config=config).start()\n\n\nYou may also start a server via the command line. Unless specified, the config will be created and loaded from ``/etc/minipyp/minipyp.conf`` on Mac/Linux and ``%APPDATA%\\MiniPyP\\minipyp.conf`` on Windows.\n\n.. code-block:: bash\n\n minipyp start [-c CONFIG]\n\n\nCreating a page\n===============\n\nTo create a page (e.g. 'https://mysite.com/test'), create a file called ``test.py`` in mysite.com's root with the following:\n\n.. code-block:: python\n\n def render(server, request):\n return '

You requested the page ' + request.uri + '.

'\n\n\nLearn more\n==========\nSee the full documentation at https://minipyp.readthedocs.io\n\n.. :changelog:\n\nHistory\n=======\n\n0.2.0\n-----\n* Daemon mode\n* Logging (+ log files)\n* Global config file (minipyp.conf)\n* Directory-specific config files (.minipyp)\n\n0.1.0b1\n-------\n* Now tracking changes", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/RyanGarber/minipyp/archive/0.2.0a1.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://minipyp.readthedocs.io/en/latest/", "keywords": "http https web cgi fast-cgi fpm ssl tls socket proxy reverse", "license": "", "maintainer": "", "maintainer_email": "", "name": "minipyp", "package_url": "https://pypi.org/project/minipyp/", "platform": "", "project_url": "https://pypi.org/project/minipyp/", "project_urls": { "Download": "https://github.com/RyanGarber/minipyp/archive/0.2.0a1.tar.gz", "Homepage": "https://minipyp.readthedocs.io/en/latest/" }, "release_url": "https://pypi.org/project/minipyp/0.2.0a1/", "requires_dist": null, "requires_python": "", "summary": "A more traditional web server", "version": "0.2.0a1" }, "last_serial": 3549867, "releases": { "0.1.0a1": [ { "comment_text": "", "digests": { "md5": "68da8cff28596ffb2e128f5713b9b47a", "sha256": "dd53add5a2104d2198cb9e254c2ac09e3a1e760f2bc408787aee60df746e0929" }, "downloads": -1, "filename": "minipyp-0.1.0a1.tar.gz", "has_sig": false, "md5_digest": "68da8cff28596ffb2e128f5713b9b47a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7207, "upload_time": "2018-01-18T09:55:50", "url": "https://files.pythonhosted.org/packages/61/53/1d4a88755d86221534789d391287cb04c345398cb4fc8761db56d6a08183/minipyp-0.1.0a1.tar.gz" } ], "0.1.0a2": [ { "comment_text": "", "digests": { "md5": "fcdd9652dc657ef7875c3435cb0718af", "sha256": "2d8fa6cbcdb2d4e408271246d49c08e71ab65995dc916834fe1aa52a6b1b8c4a" }, "downloads": -1, "filename": "minipyp-0.1.0a2.tar.gz", "has_sig": false, "md5_digest": "fcdd9652dc657ef7875c3435cb0718af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7737, "upload_time": "2018-01-19T23:29:14", "url": "https://files.pythonhosted.org/packages/31/11/e2daffc46ade31112efec90dafcc6e1b3aa25baa8128361fd9d64fdc921a/minipyp-0.1.0a2.tar.gz" } ], "0.1.0b1": [ { "comment_text": "", "digests": { "md5": "8c18e4960cb33c7dd0d93de644377161", "sha256": "1bcb10bf040230567725d8f9230501d956d7a77bf68abc17e3a4c595dd436f53" }, "downloads": -1, "filename": "minipyp-0.1.0b1.tar.gz", "has_sig": false, "md5_digest": "8c18e4960cb33c7dd0d93de644377161", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8104, "upload_time": "2018-01-25T05:48:47", "url": "https://files.pythonhosted.org/packages/98/a6/a3092461d9b702700b118ed498f55914938236015ae5896dd2ca37e8fecb/minipyp-0.1.0b1.tar.gz" } ], "0.2.0a1": [ { "comment_text": "", "digests": { "md5": "1c2a818c2c3d99556cf9daaa5a235a33", "sha256": "174bf40889157d740a8c33fcba6c7c1c47cc45e9d952ba3d7530ad7ca32cd20f" }, "downloads": -1, "filename": "minipyp-0.2.0a1.tar.gz", "has_sig": false, "md5_digest": "1c2a818c2c3d99556cf9daaa5a235a33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20495, "upload_time": "2018-02-04T07:34:44", "url": "https://files.pythonhosted.org/packages/18/1c/2d4b8d45b9871aa196f23bc6617fd489e9c8002806c042715829f424d1f0/minipyp-0.2.0a1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1c2a818c2c3d99556cf9daaa5a235a33", "sha256": "174bf40889157d740a8c33fcba6c7c1c47cc45e9d952ba3d7530ad7ca32cd20f" }, "downloads": -1, "filename": "minipyp-0.2.0a1.tar.gz", "has_sig": false, "md5_digest": "1c2a818c2c3d99556cf9daaa5a235a33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20495, "upload_time": "2018-02-04T07:34:44", "url": "https://files.pythonhosted.org/packages/18/1c/2d4b8d45b9871aa196f23bc6617fd489e9c8002806c042715829f424d1f0/minipyp-0.2.0a1.tar.gz" } ] }