{ "info": { "author": "CodeLV", "author_email": "frmdstryr@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# enaml-native\nBuild native mobile apps in python using enaml and native widgets! [![Build Status](https://travis-ci.org/codelv/enaml-native.svg?branch=master)](https://travis-ci.org/codelv/enaml-native) [![codecov](https://codecov.io/gh/codelv/enaml-native/branch/master/graph/badge.svg)](https://codecov.io/gh/codelv/enaml-native) [![Help chat](https://img.shields.io/gitter/room/nwjs/nw.js.svg)](https://gitter.im/enaml-native/Lobby) [![Documentation Status](https://readthedocs.org/projects/enaml-native/badge/?version=latest)](http://enaml-native.readthedocs.io/en/latest/?badge=latest)\n\nThe goal of this project is to be the python version of [react-native](https://facebook.github.io/react-native/). It targets apps that need to have a \"native\" look and feel and achieves this by reusing existing native Android and iOS widgets from python. It allows you to declaratively define a UI using python based language called [enaml](http://enaml.readthedocs.io/en/latest/get_started/introduction.html). The rest is \"normal\" python.\n\nKivy is still recommended for games and applications that need custom widgets that native Android and iOS libraries do not provide.\n\nThis is still a very young project but the results and feedback have been positive and promising. Thanks for dropping by!\n\n### Docs and Examples ###\n\nSee the [project site](https://www.codelv.com/projects/enaml-native/) or the [api docs](http://enaml-native.readthedocs.io/) \n\nThere's also some short tutorials and examples on [youtube](https://www.youtube.com/playlist?list=PLXUaMWWFaOjT2WdIrJdTYjEMJmrjuvVz0).\n\nNeed help? Try the gitter group https://gitter.im/enaml-native/Lobby\n\n##### Screenshots\n\n[![Drawer Demo](https://user-images.githubusercontent.com/380158/38657098-60a43b9c-3dec-11e8-844b-4ac689417b7c.gif)](https://github.com/codelv/enaml-native/blob/master/examples/nav_drawer.enaml)\n\n\n### Add-on Packages ###\n\nEnaml-native was redesigned so separate \"packages\" can be created and installed to add new \nnative widgets and other apis. Similar to the [kivy-garden](https://github.com/kivy-garden/) but\nit borrows the concepts of the [react-native package manager](https://github.com/rnpm/rnpm).\n\nPackages can be created using the `enaml-native init-package ` command. Once\nmade they can be installed with `pip` or the `enaml-native install` command (recommended).\n\n#### Packages ####\n\n- GoogleMap support via [enaml-native-maps](https://github.com/codelv/enaml-native-maps)\n- MPAndroidChart graphing via [enaml-native-charts](https://github.com/codelv/enaml-native-charts)\n- ZXing barcode scanning via [enaml-native-barcode](https://github.com/codelv/enaml-native-barcode)\n- Iconfiy icons via [enaml-native-icons](https://github.com/codelv/enaml-native-icons)\n\nCreated a package? Send a PR and add it here!\n\n### Features ###\n1. Enaml's features: declarative syntax, conditional and looper rendering, automatic data binding\n2. Layouts with flexbox\n3. Live app code reloading (like react-native's live reload)\n4. Versioned package management and native library linking\n5. Remote debugging with your favorite IDE (like react-native's remote debugger)\n\n### Apps ###\n\nApps using enaml-native can be found [here](https://www.codelv.com/projects/enaml-native/apps/).\n\n### Demos ###\n1. Try out the beta demo app here [on google play](https://play.google.com/store/apps/details?id=com.frmdstryr.enamlnative.demo)\n2. Try out code without installing the android SDK or NDK via the [Python Playground](https://play.google.com/store/apps/details?id=com.frmdstryr.pythonplayground)!\n\n### Status ###\n\n##### Android\n\nCurrently enaml-native's Android support is good enough to make real usable app. A lot of components are supported and several apps have already been released using enaml-native.\n\n##### iOS\n\nCurrently enaml-native's iOS support is not yet good enough to make a real app. Only a few components are implemented at the moment and a lot of work is needed to get it to the point where it's really usable, but my \"proof of concept\" demo shows that it does work. \n\n### Thanks to ###\n\nThis project is built on top of several existing projects:\n\n1. [enaml](https://github.com/nucleic/enaml)\n2. [python-for-android](https://github.com/kivy/python-for-android/)\n3. [pybridge](https://github.com/joaoventura/pybridge)\n4. [react-native](https://github.com/facebook/react-native) (inspiration)\n5. [pyjnius](https://github.com/kivy/pyjnius/)\n6. [kivy-ios](https://github.com/kivy/kivy-ios/)\n\nPlease give them a star, thanks, and/or donation as without these this project would not exist!\n\n### Contributions\n\nContributions of any kind are welcome. Please use the [numpydoc](https://numpydoc.readthedocs.io/en/latest/format.html) format\nfor docstrings and the [pep-8](https://www.python.org/dev/peps/pep-0008/) code style to be consistent with enaml.\n\n### Donate\n\nThis is a project I develop in my free time. If you use enaml-native or simply like the project and want to help continue the development of it please consider [donating](https://www.codelv.com/projects/enaml-native/support/). \n\n\n\n\n", "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/codelv/enaml-native/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "enaml-native", "package_url": "https://pypi.org/project/enaml-native/", "platform": "", "project_url": "https://pypi.org/project/enaml-native/", "project_urls": { "Homepage": "https://github.com/codelv/enaml-native/" }, "release_url": "https://pypi.org/project/enaml-native/4.5.4/", "requires_dist": null, "requires_python": "", "summary": "Build native mobile apps in python", "version": "4.5.4" }, "last_serial": 3936829, "releases": { "2.10.30": [ { "comment_text": "", "digests": { "md5": "d1e6f3758003d21da1dcd7a98a6404f1", "sha256": "ea56ca8ff9d464ae440b7500de64b0bbf3c818778be7d70d2d63237a0a69ac12" }, "downloads": -1, "filename": "enaml_native-2.10.30-py2-none-any.whl", "has_sig": false, "md5_digest": "d1e6f3758003d21da1dcd7a98a6404f1", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 584644, "upload_time": "2017-10-31T20:05:16", "url": "https://files.pythonhosted.org/packages/88/f1/9fdd8e4a0076e9962871b720d6263887f28f805b2dfee329a1a200c5dd24/enaml_native-2.10.30-py2-none-any.whl" } ], "2.11.12": [ { "comment_text": "", "digests": { "md5": "e7369f5178ef91debcc38b7ceaf94bdd", "sha256": "97318305fe627ef099b8014eda0603525aa3f95cd91b4adbaa38fc78b315600b" }, "downloads": -1, "filename": "enaml_native-2.11.12-py2-none-any.whl", "has_sig": false, "md5_digest": "e7369f5178ef91debcc38b7ceaf94bdd", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 597891, "upload_time": "2017-11-22T14:36:44", "url": "https://files.pythonhosted.org/packages/59/6b/6c49a6b73591decc817dfc4716be46163e3448d9a8f2ac17973d6af7e9bb/enaml_native-2.11.12-py2-none-any.whl" } ], "2.11.13": [ { "comment_text": "", "digests": { "md5": "ae911f010594552580b4e2a11adb82ed", "sha256": "7355daeaaef71099d68d2076561300dcfbd75a1e8877dbb09ae7a1b8558a9bfd" }, "downloads": -1, "filename": "enaml_native-2.11.13-py2-none-any.whl", "has_sig": false, "md5_digest": "ae911f010594552580b4e2a11adb82ed", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 597990, "upload_time": "2017-11-25T13:45:39", "url": "https://files.pythonhosted.org/packages/cc/7c/4eca1333434e2f35218fc3b72cf341e475ec13deee94bb63b7814fc333fe/enaml_native-2.11.13-py2-none-any.whl" } ], "2.11.14": [ { "comment_text": "", "digests": { "md5": "b26e8c72be0dcc706c57dd9370d5132c", "sha256": "7983b6462f6912df4a6f5ba27f693a6a30ac23fd302cff3b1bc0e690aa1178ac" }, "downloads": -1, "filename": "enaml_native-2.11.14-py2-none-any.whl", "has_sig": false, "md5_digest": "b26e8c72be0dcc706c57dd9370d5132c", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 600080, "upload_time": "2017-12-01T13:37:31", "url": "https://files.pythonhosted.org/packages/89/d4/88d337e8a64e7135e70a712fbaead181bf6f63195d8742f75e110df3d388/enaml_native-2.11.14-py2-none-any.whl" } ], "2.11.6": [ { "comment_text": "", "digests": { "md5": "0d5c41556283f12dc5fe3b550891ae3f", "sha256": "3560ba737b91e6bbd41f948a8d7be0963ab7a0ade403bde773e362f1b7d43bbb" }, "downloads": -1, "filename": "enaml_native-2.11.6-py2-none-any.whl", "has_sig": false, "md5_digest": "0d5c41556283f12dc5fe3b550891ae3f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 587557, "upload_time": "2017-11-06T19:33:51", "url": "https://files.pythonhosted.org/packages/a4/da/692b11150ea634641f174429372704a1b530d43e81fbcd92c22ba79139eb/enaml_native-2.11.6-py2-none-any.whl" } ], "2.11.7": [ { "comment_text": "", "digests": { "md5": "f98889beb0f6eae8ab1bc7976d97fffd", "sha256": "7b590cd45ffc9c3b6af5edab1e6101a91d6a6648c0e6e5c8703caa085af4060c" }, "downloads": -1, "filename": "enaml_native-2.11.7-py2-none-any.whl", "has_sig": false, "md5_digest": "f98889beb0f6eae8ab1bc7976d97fffd", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 587824, "upload_time": "2017-11-07T00:06:39", "url": "https://files.pythonhosted.org/packages/6e/d4/8f3ce85691f1f8e2c0910d022ec3af1318d76bcc35cf9441f0c8faabf677/enaml_native-2.11.7-py2-none-any.whl" } ], "2.11.9": [ { "comment_text": "", "digests": { "md5": "ea04a6cb8f573ea66f6b1c52c68e4074", "sha256": "9b1141c2731f3bdd4ee1809e429f056a5d22ef9288feabb20186f46f7dd1da58" }, "downloads": -1, "filename": "enaml_native-2.11.9-py2-none-any.whl", "has_sig": false, "md5_digest": "ea04a6cb8f573ea66f6b1c52c68e4074", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 591367, "upload_time": "2017-11-17T18:31:52", "url": "https://files.pythonhosted.org/packages/3d/6c/ce8fe898997070bc34ea7b1b8e76c665d8860c33c27e88ea816276a305af/enaml_native-2.11.9-py2-none-any.whl" } ], "2.13.2": [ { "comment_text": "", "digests": { "md5": "7530228e0ee76c844fc26b4df1b3efaf", "sha256": "eb77588e4371b731cc54f8b048453bb5e462b9bb27d1d4498f4062e6bce71ed9" }, "downloads": -1, "filename": "enaml_native-2.13.2-py2-none-any.whl", "has_sig": false, "md5_digest": "7530228e0ee76c844fc26b4df1b3efaf", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 597741, "upload_time": "2017-12-26T23:04:46", "url": "https://files.pythonhosted.org/packages/53/33/ac34412e00a05ffedf52a7bf7286877afd742e165f2d5092037364c5024c/enaml_native-2.13.2-py2-none-any.whl" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "2b21d4fddfc3f0614404ad747f192c33", "sha256": "115afea4d4ebb195d6c5f9178161fce4b2d0faf9149f03635b6be744c76b6570" }, "downloads": -1, "filename": "enaml_native-3.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "2b21d4fddfc3f0614404ad747f192c33", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 618811, "upload_time": "2018-02-11T16:49:12", "url": "https://files.pythonhosted.org/packages/90/95/c89d8fc9e6610932190933563e2dae5188aaff7e0aad700db9dd65c8ffbc/enaml_native-3.0.0-py2-none-any.whl" } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "31114f421de752e1d3abd61ee03511aa", "sha256": "623f243785f004a809f394215cb76d2fdb59a43c18fc52ff1faae0166e14d3e9" }, "downloads": -1, "filename": "enaml_native-3.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "31114f421de752e1d3abd61ee03511aa", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 622782, "upload_time": "2018-02-15T14:33:26", "url": "https://files.pythonhosted.org/packages/5a/9a/a6e5885839721a040c731ca39296533721f0d2f47df8a1b35ed1d08491c5/enaml_native-3.1.0-py2-none-any.whl" } ], "4.5.4": [ { "comment_text": "", "digests": { "md5": "ca4d5f21b23d0116dd150ce9b54eff65", "sha256": "8ec43c20c81dd72d2e364de9fb35710bb36f7f5d43c00ffc75fe9e61d53edc42" }, "downloads": -1, "filename": "enaml_native-4.5.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ca4d5f21b23d0116dd150ce9b54eff65", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 280792, "upload_time": "2018-06-06T17:17:32", "url": "https://files.pythonhosted.org/packages/5f/0d/5b09d49fdc6a86ae77515d2d22a4afa1bbcaa5877f5535274dd5cb67a55b/enaml_native-4.5.4-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ca4d5f21b23d0116dd150ce9b54eff65", "sha256": "8ec43c20c81dd72d2e364de9fb35710bb36f7f5d43c00ffc75fe9e61d53edc42" }, "downloads": -1, "filename": "enaml_native-4.5.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ca4d5f21b23d0116dd150ce9b54eff65", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 280792, "upload_time": "2018-06-06T17:17:32", "url": "https://files.pythonhosted.org/packages/5f/0d/5b09d49fdc6a86ae77515d2d22a4afa1bbcaa5877f5535274dd5cb67a55b/enaml_native-4.5.4-py2.py3-none-any.whl" } ] }