{ "info": { "author": "Marc Brinkmann", "author_email": "git@marcbrinkmann.de", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 2", "Programming Language :: Python :: 3" ], "description": "ecstatic\n========\n\nSlightly NIH Flask-based app to serve static content. It tries to capture 80%\nof the use-cases that are normally handled by the likes of nginx and Apache,\nonly much slower =).\n\nOther packages that do similar, but not quite the same things:\n\n* https://pypi.python.org/pypi/Flask-Ecstatic (sorry about the name!)\n\n\nConfiguration\n-------------\n\nEcstatic has a single configuration file whose location is given via an\nenvironment variable \"ECSTATIC_EXPORTS\". The file is parsed using Python3's\n``configparser`` module, with each section being processed from top to bottom.\n\nWhenever a request comes in, a section is checked for whether or not it\nmatches. If a match is found, no further sections are examined and the\nconfiguration in said section is used to serve the request.\n\nA section matches a request if it\n\n1. Has a ``match`` key with a regular expression that matches the request's\n path or\n2. Has a ``root`` section with no match present.\n\nAny other section is ignored.\n\n\nmatch-Sections\n~~~~~~~~~~~~~~\n\nAny section that contains a ``match``-key must also contain an ``fspath``-key.\nIf the URL path matches the expression given, ``fspath`` is interpolated as a\nformat string, with positional arguments from the expression (missing groups\nare empty strings instead of ``None``).\n\nThe section must still contain a ``root``-entry, also a format string, which is\nused to jail paths.\n\n\nroot-Sections\n~~~~~~~~~~~~~\n\nAny section containing just a ``root``-entry will simply serve content from the\ngiven root path, mapping 1:1 onto URLs.\n\n\nExamples\n--------\n\nA simple configuration that serves content from users\n``public_html``-directories (which are assumed to all be inside ``/home``) and\n``/var/www`` otherwise:\n\n.. code-block:: ini\n\n [homes]\n # exposes /home/bob/public_html/ on http://example.org/~bob/\n match = ^~([a-zA-Z0-9]+)(/.*)?$\n fspath = /home/{0}/public_html{1}\n root = /home/{0}\n dirindex = on\n\n [www]\n root = /var/www", "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/mbr/ecstatic", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "ecstatic", "package_url": "https://pypi.org/project/ecstatic/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/ecstatic/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/mbr/ecstatic" }, "release_url": "https://pypi.org/project/ecstatic/0.4/", "requires_dist": null, "requires_python": null, "summary": "A small flask application to serve files.", "version": "0.4" }, "last_serial": 1815755, "releases": { "0.2.dev1": [], "0.3": [ { "comment_text": "", "digests": { "md5": "059fd985da601c96209a5463a85e4e09", "sha256": "7b878f32f27d3e458d9821b9c9606ca638cf6d6c210eb4d6d805e87faf748ce2" }, "downloads": -1, "filename": "ecstatic-0.3.tar.gz", "has_sig": false, "md5_digest": "059fd985da601c96209a5463a85e4e09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1867, "upload_time": "2015-11-13T11:11:15", "url": "https://files.pythonhosted.org/packages/30/cc/9a8b91c2cc394cb8f586ae2ef69a21666f0289746e94af62a2572cf86194/ecstatic-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "8973ba30fe2c95da0a3d89313c09776d", "sha256": "018a841a963d002a443b2e782c47f92121d588ff8f5d91af98d0b0ff874cbab6" }, "downloads": -1, "filename": "ecstatic-0.4.tar.gz", "has_sig": false, "md5_digest": "8973ba30fe2c95da0a3d89313c09776d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3528, "upload_time": "2015-11-14T00:49:28", "url": "https://files.pythonhosted.org/packages/73/73/e3e272ee7fae9213c7ce507c52137330d6493ae5bd860489064d0781ea3d/ecstatic-0.4.tar.gz" } ], "0.4.dev1": [ { "comment_text": "", "digests": { "md5": "ae7b521016b3fd08f3d70e8e89d264df", "sha256": "b2f8ef5b485c1df463d969fa67d6855047d1d5f1d53282c01e7dd641439679f2" }, "downloads": -1, "filename": "ecstatic-0.4.dev1.tar.gz", "has_sig": false, "md5_digest": "ae7b521016b3fd08f3d70e8e89d264df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1880, "upload_time": "2015-11-13T11:07:22", "url": "https://files.pythonhosted.org/packages/e2/63/10482697c31ee19138c16d5de79c701b2c8f0cc7e489828a03b997d8d337/ecstatic-0.4.dev1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8973ba30fe2c95da0a3d89313c09776d", "sha256": "018a841a963d002a443b2e782c47f92121d588ff8f5d91af98d0b0ff874cbab6" }, "downloads": -1, "filename": "ecstatic-0.4.tar.gz", "has_sig": false, "md5_digest": "8973ba30fe2c95da0a3d89313c09776d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3528, "upload_time": "2015-11-14T00:49:28", "url": "https://files.pythonhosted.org/packages/73/73/e3e272ee7fae9213c7ce507c52137330d6493ae5bd860489064d0781ea3d/ecstatic-0.4.tar.gz" } ] }