{ "info": { "author": "Niklas Rosenstein", "author_email": "rosensteinniklas@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "

\n

\n \n \n

\n\n## Node.py\n\nNode.py is a Python runtime compatible with CPython 2.7 and 3.3 – 3.6.\nIt provides a separate but superior import mechanism for modules, bringing\ndependency management and ease of deployment for Python applications up to par\nwith other languages, **without virtualenvs**.\n\n> Node.py is inspired by [Node.js](https://nodejs.org).\n\n**nppm** is Node.py's package manager that allows you to install and manage\nstandard Python packages (using Pip under the hood) *as well* as Node.py\npackages without the hazzle of virtual environments. **nppm** is a powerful\ntool for deploying Node.py applications and command-line tools. You can find\nthe nppm repository [here](https://github.com/nodepy/nppm).\n\n## Usage Example\n\nNode.py allows you to write very modular Python applications with module\nimport semantics that are more easily trackable. It also does not have the\nconcept of a separate `__main__` module as standard Python does. Any valid\nPython script is a valid Node.py script.\n\n```\n$ ls\napp.py models.py nodepy.json\n$ head app.py\nimport flask\nimport * from './models' # Node.py special syntax\nrequire('werkzeug-reloader-patch').install() # Node.py require() function\napp = flask.Flask('myapp')\n# ...\n$ cat nodepy.json\n{\n \"name\": \"myapp\",\n \"pip_dependencies\": {\n \"Flask\": \">=1.0.2\",\n \"pony\": \">=0.7.3\"\n },\n \"dependencies\": {\n \"werkzeug-reloader-patch\": \"^0.0.7\"\n }\n}\n$ nppm install\n$ nodepy app\n... Starting Flask server at localhost:8000\n```\n\n## Installation\n\nNode.py is available from PyPI as `nodepy-runtime`. The Python version that\nyou install it into will also be the Python version that you will use in your\nNode.py code.\n\n> Tip: Add the `--user` flag if you don't want to install Node.py system-wide.\n\n $ pip install nodepy-runtime\n\nThere are multiple ways of installing **nppm**. The suggested method is to\nuse the remote install script. If you want to install a specific version,\npass the Git ref as an argument (eg. `develop` or `v2.0.2`). If you don't\nspecify a tag, the highest tagged version will be installed.\n\n $ nodepy https://nodepy.org/get-nppm.py\n\nAlternatively, you can clone the repository and use the local install script.\n\n $ git clone https://github.com/nodepy/nppm.git\n $ nodepy nppm/scripts/install.py\n\n> Important: The installer is **not** able to automatically detect whether\n> Node.py was installed system-wide or with the `--user` option. If you\n> installed Node.py with the `--user` option, pass the `--global` option to\n> the install-script (global meaning user-location). The default is to install\n> with `--root` (system-wide).\n\n## Changes\n\n### v2.1.5 (2018-08-18)\n\n* Add `Request.copy()` method\n\n### v2.1.4 (2018-08-13)\n\n* Handle relative package links (actually already in 2.1.3)\n\n### v2.1.3 (2018-08-13)\n\n* Fix `PythonLoader.suggest_files()`, no longer replaces an existing suffix\n when trying to add `.py` suffix\n\n### v2.1.2 (2018-06-15)\n\n* Fix `MANIFEST.in` which now includes `requirements.txt` (required by `setup.py`)\n\n### v2.1.1 (2018-06-14)\n\n* Release date fix for v2.1.0\n\n### v2.1.0 (2018-06-14)\n\n* Rename `nodepy-pm` to `nppm` in `README.md`\n* Add MIT license to the header of all source files\n\n### v2.0.3 (2018-06-03)\n\n* The `nodepy.base.Module()` constructor now accepts absolute filenames only\n* Update `setup.py` to include Markdown `long_description` and read install\n requirements from `requirements.txt`\n\n### v2.0.2 (2018-03-30)\n\n* The local `.nodepy/pip` directory is now always added to `sys.path` by using\n the `EntryModule.run_with_exec_handler()` method instead of loading\n and executing the module directly\n* `PythonLoader.load()` no longer adds to `sys.path` if the path already is\n in the list\n\n### v2.0.1 (2017-12-19)\n\n* `PythonLoader._load_code()` now uses utf8 encoding by default, however we\n should try to peek into the file to see if it contains a coding: comment\n* Always add local `modules_directory` to Context resolve path, this helps\n projects that use package links\n* Node.py repl can now also import from `.nodepy/pip` directory\n* Fix `resolve_root` outside of package root\n* Don't import `pathlib` from `nodepy.utils.path`, but instead import\n `pathlib2` directly. We decided on not using std `pathlib` if it is\n available, as there can be minor differences\n* Add missing `strict=False` to `UrlPath.resolve()` and `ZipPath.resolve()`\n* Add info to `nodepy.runtime.scripts` that it can also holds an `args` member\n* `resolve_root` now taken into account for default `Package.main` if it is\n not explicitly defined, add `resolve_root` when package entry point is required\n* `StdResolver.package_for_directory()` must resolve the path to eliminate\n pardir elements, otherwise we can end up with two Packages pointing to the\n same directory, but one contains `subdir/..` elements\n* Update `Module.name` property to be able to produce a requirable module name\n for modules outside a package's `resolve_root`\n* Fixed comparing RequestString with actual request str in `Request.try_()`\n to properly raise TryResolveError\n* Fix `FrameDebugger` parent calls for Python 2\n* Add `Config.sections()`, remove debug print in `Context.__init__()`\n* Remove `nodepy.default_context`, but add `nodepy.get_default_context()` instead\n* Add `nodepy.utils.config` module and add `Context.config` member which is\n initialized from the `NODEPY_CONFIG` file or `~/.nodepy/config`\n\n### v2.0.0 (2018-11-24)\n\n* Complete rewrite\n* Abstract module resolving interface\n* Using the `pathlib2` module to abstract the filesystem\n\n---\n\n

Copyright © 2018 Niklas Rosenstein

", "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/nodepy/nodepy", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "nodepy-runtime", "package_url": "https://pypi.org/project/nodepy-runtime/", "platform": "", "project_url": "https://pypi.org/project/nodepy-runtime/", "project_urls": { "Homepage": "https://github.com/nodepy/nodepy" }, "release_url": "https://pypi.org/project/nodepy-runtime/2.1.5/", "requires_dist": null, "requires_python": "", "summary": "Python with a Node.js-like module system.", "version": "2.1.5" }, "last_serial": 4182817, "releases": { "2.0.0": [ { "comment_text": "", "digests": { "md5": "c00a7c041b51bfb558d39450413e80cb", "sha256": "f8560e2e1d229762125ff96582eb2879c7824ca4953da4f9dbe3a2fbb67a0322" }, "downloads": -1, "filename": "nodepy-runtime-2.0.0.tar.gz", "has_sig": false, "md5_digest": "c00a7c041b51bfb558d39450413e80cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21318, "upload_time": "2017-11-24T03:25:23", "url": "https://files.pythonhosted.org/packages/ff/ea/61dfb3c5778edcaea42599bfe4b84e8cfd82cfa0ada0f4d041039ce88c62/nodepy-runtime-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "16065fe00a6f3159abe8cbd944e94b0b", "sha256": "0e8aa6ffc1023d86872e87b6f536dc5a69c4fea03d1c1e677c24978ff1cc8640" }, "downloads": -1, "filename": "nodepy-runtime-2.0.1.tar.gz", "has_sig": false, "md5_digest": "16065fe00a6f3159abe8cbd944e94b0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23529, "upload_time": "2017-12-19T12:37:30", "url": "https://files.pythonhosted.org/packages/fa/46/55c062c8e0bc0393817b116e1cb1db75fb62ff69425f055624633e517fd2/nodepy-runtime-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "f7677fa80ebbf8cde13e6503479a72ad", "sha256": "4737e627bb510835ea31e2dc9b7f522339c32fe693fe357ace62e520f6b06069" }, "downloads": -1, "filename": "nodepy-runtime-2.0.2.tar.gz", "has_sig": false, "md5_digest": "f7677fa80ebbf8cde13e6503479a72ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24524, "upload_time": "2018-04-12T18:31:18", "url": "https://files.pythonhosted.org/packages/90/45/30b754734b5e33b64e65ba94d88440f7507a92da9b1e4dab5d89e7fb879e/nodepy-runtime-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "c66ae75034f5fd53ea08cb4aa734af36", "sha256": "3bc03650b27d17782676c35cb70d1885aff5495409def30d59f93730c75f5761" }, "downloads": -1, "filename": "nodepy-runtime-2.0.3.tar.gz", "has_sig": false, "md5_digest": "c66ae75034f5fd53ea08cb4aa734af36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24248, "upload_time": "2018-06-03T15:40:33", "url": "https://files.pythonhosted.org/packages/01/ae/2c65c7bbce9a42c519755c11c2ff643a2b06983e2bf41bf5026c3f0249c3/nodepy-runtime-2.0.3.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "42fc4a8ead7427cd58137f50474329e6", "sha256": "4ef18be3d5b250fb278a12a52c1a075fd38892a290c57c25fa8e014ba5d4d462" }, "downloads": -1, "filename": "nodepy-runtime-2.1.0.tar.gz", "has_sig": false, "md5_digest": "42fc4a8ead7427cd58137f50474329e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26553, "upload_time": "2018-06-14T21:18:08", "url": "https://files.pythonhosted.org/packages/01/5c/c2ea96b3fa359e3cdc0404c9587e9d1673dd970e78a76e4136d220cbd788/nodepy-runtime-2.1.0.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "52160e7a37c66e64720417b5a65085f3", "sha256": "b5d5935f46662f06c0362a5d98f202f47701363deb002c4eddbe0bb67081a76e" }, "downloads": -1, "filename": "nodepy-runtime-2.1.1.tar.gz", "has_sig": false, "md5_digest": "52160e7a37c66e64720417b5a65085f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26591, "upload_time": "2018-06-14T21:20:20", "url": "https://files.pythonhosted.org/packages/2e/ad/71581c0d6d6cd42aa89633311cf0e71c8f65aa7dcf6eaa94ea2afdeaeb1c/nodepy-runtime-2.1.1.tar.gz" } ], "2.1.2": [ { "comment_text": "", "digests": { "md5": "e30986592d791158ed5d4246b8027c29", "sha256": "de92c66fba1ab00e958f529092b62c76a4adf35bd08d729051d519fb905f0ccb" }, "downloads": -1, "filename": "nodepy-runtime-2.1.2.tar.gz", "has_sig": false, "md5_digest": "e30986592d791158ed5d4246b8027c29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26658, "upload_time": "2018-06-15T10:16:40", "url": "https://files.pythonhosted.org/packages/d1/c8/a616603343f57f717c9931133937aed4b29e23bc72a3b21dbd1d617b1c8a/nodepy-runtime-2.1.2.tar.gz" } ], "2.1.3": [ { "comment_text": "", "digests": { "md5": "96b8b622a1924658b7dc5835598ac422", "sha256": "fbbba3f951b6558080dce62756937bbdaf2c1428d354c20e8702f0ecc98f5318" }, "downloads": -1, "filename": "nodepy-runtime-2.1.3.tar.gz", "has_sig": false, "md5_digest": "96b8b622a1924658b7dc5835598ac422", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26779, "upload_time": "2018-08-13T18:37:33", "url": "https://files.pythonhosted.org/packages/a7/c1/b88c17370a5388866f2a66325fbb2dafa274121ca8c1123c360e6b017374/nodepy-runtime-2.1.3.tar.gz" } ], "2.1.4": [ { "comment_text": "", "digests": { "md5": "58671d18bacc8e9d2edc630b4d9d3a14", "sha256": "60d7e076a0780c435bb17d845c43e73988d67c128a03f0850f75a7e2e729d615" }, "downloads": -1, "filename": "nodepy-runtime-2.1.4.tar.gz", "has_sig": false, "md5_digest": "58671d18bacc8e9d2edc630b4d9d3a14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26815, "upload_time": "2018-08-13T18:39:40", "url": "https://files.pythonhosted.org/packages/b7/0f/9ca2e4b16e327e4e66997936796625d7def2182848f54cb629b3b749a530/nodepy-runtime-2.1.4.tar.gz" } ], "2.1.5": [ { "comment_text": "", "digests": { "md5": "760701ea1842dc8fb5fd7840eabf8cbb", "sha256": "ead4ac0fbe84a4267191dba5bf505c519b485c658b1ba3ee208db927c493ca01" }, "downloads": -1, "filename": "nodepy-runtime-2.1.5.tar.gz", "has_sig": false, "md5_digest": "760701ea1842dc8fb5fd7840eabf8cbb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26957, "upload_time": "2018-08-18T10:21:56", "url": "https://files.pythonhosted.org/packages/1f/11/27a078946ce67e2f76c98c9465aaee77d24cae0ed1ae442b7269aa061b50/nodepy-runtime-2.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "760701ea1842dc8fb5fd7840eabf8cbb", "sha256": "ead4ac0fbe84a4267191dba5bf505c519b485c658b1ba3ee208db927c493ca01" }, "downloads": -1, "filename": "nodepy-runtime-2.1.5.tar.gz", "has_sig": false, "md5_digest": "760701ea1842dc8fb5fd7840eabf8cbb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26957, "upload_time": "2018-08-18T10:21:56", "url": "https://files.pythonhosted.org/packages/1f/11/27a078946ce67e2f76c98c9465aaee77d24cae0ed1ae442b7269aa061b50/nodepy-runtime-2.1.5.tar.gz" } ] }