{ "info": { "author": "Kelvin S. do Prado", "author_email": "kelvinpfw@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7" ], "description": "

\n \"Nomade\n

\n\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n

\n\n> Python Migration Manager for Humans :camel:\n\nNomade is a simple migration manager tool that aims to be easy to integrate with any ORM (e.g. [SQLAlchemy](https://www.sqlalchemy.org/), [Peewee](http://docs.peewee-orm.com/en/latest/), [Pony](https://ponyorm.org/)) and database (e.g. [SQLite](https://www.sqlite.org/index.html), [MySQL](https://www.mysql.com/), [PostgreSQL](https://www.postgresql.org/)). It is basically a command-line interface (CLI) tool that manages migrations (Python files) by applying changes to the database schema and storing the current migration ID.\n\nThis tool was inspired by [alembic](https://alembic.sqlalchemy.org/en/latest/) (if you are using SQLAlchemy as ORM you should consider using alembic).\n\n> **Note**: this project is still under development so you may find bugs. If you find any bug, feel free to contribute by creating an issue and/or submitting a PR to fix it.\n\n## Installation\n\nUse [pip](https://pip.pypa.io/en/stable/installing/) to install Nomade:\n\n```bash\n$ pip install nomade\n```\n\n## Quick Start\n\nInitialize a **Nomade** project:\n\n```bash\n$ nomade init\n```\n\nIt will create the following project structure:\n\n```\n.\n\u251c\u2500\u2500 nomade\n\u2502 \u251c\u2500\u2500 template.py.j2\n\u2502 \u2514\u2500\u2500 migrations\n\u2514\u2500\u2500 pyproject.toml\n```\n\nDefine **Nomade** settings in the `pyproject.toml` file, for example:\n\n```toml\n[tool.nomade]\nmigrations = \"nomade/migrations\"\ntemplate = \"nomade/template.py.j2\"\nconnection-string = \"sqlite:///nomade.db\"\ndate-format = \"%d/%m/%Y\"\nname-format = \"{date}_{time}_{id}_{slug}\"\n```\n\nThen, create your first migration:\n\n```bash\n$ nomade migrate \"Create first table\"\n```\n\nImplement the `upgrade` and `downgrade` functions in the migration file.\n\nThen apply the migration to the database:\n\n```bash\n$ nomade upgrade head\n```\n\nTo discover more **Nomade** features please read the documentation or call for help:\n\n```\n$ nomade --help\n\nUsage: nomade [OPTIONS] COMMAND [ARGS]...\n\nOptions:\n --help Show this message and exit.\n\nCommands:\n current Show the current migration.\n downgrade Downgrade migrations.\n history Show migrations history.\n init Init a Nomade project.\n migrate Create a new migration.\n stamp Stamp a specific migration to the database.\n upgrade Upgrade migrations.\n version Show Nomade version.\n```\n\n## How to Contribute\n\n- Check for open issues or open a fresh one to start a discussion around a feature idea or a bug.\n- Become more familiar with the project by reading the [Contributor's Guide](CONTRIBUTING.rst).\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/kelvins/nomade", "keywords": "", "license": "Apache-2.0", "maintainer": "Kelvin S. do Prado", "maintainer_email": "kelvinpfw@gmail.com", "name": "nomade", "package_url": "https://pypi.org/project/nomade/", "platform": "", "project_url": "https://pypi.org/project/nomade/", "project_urls": { "Homepage": "https://github.com/kelvins/nomade", "Repository": "https://github.com/kelvins/nomade" }, "release_url": "https://pypi.org/project/nomade/1.0.0/", "requires_dist": [ "click (>=7.0,<8.0)", "sqlalchemy (>=1.3,<2.0)", "Jinja2 (==2.10.1)", "toml (>=0.10.0,<0.11.0)" ], "requires_python": ">=3.7,<4.0", "summary": "Migration Manager for Humans", "version": "1.0.0" }, "last_serial": 5932282, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "aa43b9588833dcac15d54b7d33f5a8f7", "sha256": "3d8820538181e0f88335715c65f03dfa1a6695e1dab793c1951d7de0bc9ab8a9" }, "downloads": -1, "filename": "nomade-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "aa43b9588833dcac15d54b7d33f5a8f7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 13956, "upload_time": "2019-09-10T02:29:25", "url": "https://files.pythonhosted.org/packages/92/d3/44e0192fbca43a81d39925271ea3ce0938f450887cce549dc2953f428cdb/nomade-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae26d592dc8b3a9727736b072befa814", "sha256": "cb5d8e2f271b8cd98ce2e0d41b9a517523041c1566a43b442fde588f0121ac61" }, "downloads": -1, "filename": "nomade-0.0.1.tar.gz", "has_sig": false, "md5_digest": "ae26d592dc8b3a9727736b072befa814", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 12227, "upload_time": "2019-09-10T02:29:27", "url": "https://files.pythonhosted.org/packages/c0/6c/44779ff72378ef8bd1bb368ceb4d89de2d84c89b7c0012662bd35c293410/nomade-0.0.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "f163b3d39a9b241bd959a7cd7cee18e9", "sha256": "8d8809f7c81c706c5832529506731ff3bff5fb47694e64872a5d265223a3537a" }, "downloads": -1, "filename": "nomade-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f163b3d39a9b241bd959a7cd7cee18e9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 15197, "upload_time": "2019-10-05T15:20:28", "url": "https://files.pythonhosted.org/packages/0f/cf/16d79aedb7911dbb3db838861c5d5e0282a91a6d83bd3d812a95cc41b8d3/nomade-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1465bcd24af21fef237d8ab697182b4f", "sha256": "f7f204e282401dc807960ec1d94e0f5bcc2ae7a7f5aa5d735845ddd42ef7481f" }, "downloads": -1, "filename": "nomade-1.0.0.tar.gz", "has_sig": false, "md5_digest": "1465bcd24af21fef237d8ab697182b4f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 13958, "upload_time": "2019-10-05T15:20:30", "url": "https://files.pythonhosted.org/packages/c5/b6/b9e8752c806e50a7d873b949a2ccd244ea12365e5f695f1dc5d21e9fa7c4/nomade-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f163b3d39a9b241bd959a7cd7cee18e9", "sha256": "8d8809f7c81c706c5832529506731ff3bff5fb47694e64872a5d265223a3537a" }, "downloads": -1, "filename": "nomade-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f163b3d39a9b241bd959a7cd7cee18e9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 15197, "upload_time": "2019-10-05T15:20:28", "url": "https://files.pythonhosted.org/packages/0f/cf/16d79aedb7911dbb3db838861c5d5e0282a91a6d83bd3d812a95cc41b8d3/nomade-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1465bcd24af21fef237d8ab697182b4f", "sha256": "f7f204e282401dc807960ec1d94e0f5bcc2ae7a7f5aa5d735845ddd42ef7481f" }, "downloads": -1, "filename": "nomade-1.0.0.tar.gz", "has_sig": false, "md5_digest": "1465bcd24af21fef237d8ab697182b4f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 13958, "upload_time": "2019-10-05T15:20:30", "url": "https://files.pythonhosted.org/packages/c5/b6/b9e8752c806e50a7d873b949a2ccd244ea12365e5f695f1dc5d21e9fa7c4/nomade-1.0.0.tar.gz" } ] }