{ "info": { "author": "Alexander Solovyov", "author_email": "alexander@solovyov.net", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Database", "Topic :: Software Development", "Topic :: Software Development :: Version Control" ], "description": ".. -*- mode: rst -*-\n\n=======\n Nomad\n=======\n\nNomad is a simple migration application, which specifically takes into account\nproperties of development with DVCS and is completely agnostic from ORM or\nwhatever you are using to access your database. It uses simple SQL scripts to\nmigrate and can run pre- and post-processing routines written in any language\n(Python, Ruby or whatever do you use for your application).\n\nTests status: |travis|, `changelog `_\n\n.. |travis| image:: https://travis-ci.org/piranha/nomad.png\n :target: https://travis-ci.org/piranha/nomad\n\n.. begin-writeup\n\nLayout\n-------\n\nNomad's migration store is a directory with ``nomad.ini`` and directories with\nmigrations inside. Each such directory must contain ``migration.ini`` to be\nrecognized as a migration and this directory name is an unique identifier of a\nmigration.\n\nYour directory tree thus will look like this::\n\n migrations/\n nomad.ini\n 2011-11-11-first-migration/\n migration.ini\n up.sql\n 2011-11-12-second-migration/\n migration.ini\n 1-pre.py\n 2-up.sql\n 3-post.py\n 2011-11-13-third-migration/\n migration.ini\n 1-pre.py\n 2-up.sql\n 3-post.sql.j2\n\nNomad uses table called ``nomad`` to track what was applied already. It's just a\nlist of applied migrations and dates when they were applied.\n\nInterface\n---------\n\nTo start working, create ``nomad.ini``, and initialize your database (I assume\nit already exists)::\n\n $ nomad init\n\nThen you can start creating your first migration::\n\n $ nomad create 0-initial\n\nPut your ALTERs and CREATEs in ``0-initial/up.sql`` and apply a migration::\n\n $ nomad apply -a # or nomad apply 0-initial\n\nNomad should report which migrations it applied successfully, but you can check\nstatus of that with ``nomad ls -a`` (or ``nomad ls`` to see only unapplied\nmigrations).\n\nI guess it's time to create new migration::\n\n $ nomad create 1-next -d 0-initial\n\n``-d 0-initial`` means you want your ``1-next`` to depend on ``0-initial``. This\nmeans Nomad will never apply ``1-next`` without applying ``0-initial``\nfirst. You usually want to depend on migrations which created tables you're\ngoing to alter, or just to make it easier - on the latest available migration.\n\nUsage\n-----\n\nThere are three types of migration files that ``nomad`` supports:\n\n1. Plain SQL files with the extension ``.sql``. Just put SQL commands you need\n to execute in the migration folder and they will be executed.\n2. Executable files. All file extensions are supported as long as the file\n is executable. These files must contain everything necessary to migrate\n your data, including setting up a database connection. ``nomad`` will pass\n all of the `Configuration`_ variables as environmental variables, prefixed\n with their section.\n3. Template files with the extension ``.j2``. These templates will be\n passed through the Jinja2 templating library. You must install the\n ``jinja2`` library for this functionality. The entire `Configuration`_ is\n available to the template files as a single dictionary. These could be\n useful if you are distributing an application where the end user needs to\n control some aspects of the migrations (ie. additional database users and\n passwords, additonal database names, etc.).\n\n ::\n\n # nomad.ini\n [db]\n another_user = reader\n another_pass = pass\n\n ::\n\n # migrations/0001-initial/up.sql.j2\n CREATE ROLE {{ db.another_user }};\n ALTER ROLE {{ db.another_user }} WITH NOSUPERUSER LOGIN PASSWORD '{{ db.another_pass }}' VALID UNTIL 'infinity';\n\n\nFiles inside of each migration folder are executed in lexographical order.\n\n\nConfiguration\n-------------\n\nNomad reads database connection information from the ``[nomad]`` section of the\n``nomad.ini`` file.\n\n::\n\n [nomad]\n engine = sqla\n url = pgsql://user:password@host:port/db\n\nPossible configuration options:\n\n- ``engine`` (required) - SQL engine to use, possible options:\n\n - ``sqla`` - use SQLAlchemy as an adapter, supports everything SQLAlchemy supports\n - ``dbapi`` - use regular DB API, supports ``sqlite``, ``mysql`` and ``pgsql``\n\n- ``url`` (required) - URL to database, takes multiple options, see format below\n- ``path`` - path to migrations (default: directory with ``nomad.ini``)\n\nEach migration has its own ``migration.ini`` file, which, by default, has a\nsingle configuration option, ``nomad.dependencies``, defining which migration\n(or migrations) this one depends.\n\nYou may add your own configuration variables to either the ``nomad.ini`` or\n``migration.ini`` files and they will be available in your jinja2 templates\nas a single dictionary and your executable files as environmental\nvariables.\n\nNote that ini-files are parsed with extended interpolation (use it like\n``${var}`` or ``${section.var}``).\n\nA few predefined variables are provided to every migration:\n\n- ``confpath`` - path to ``nomad.ini``\n- ``confdir`` - path to directory, containing ``nomad.ini``\n- ``dir`` - path to directory of migration\n\n\nExample configuration:\n\n+------------------+---------------------------+------------------------------+\n| configration | executable | template |\n+==================+===========================+==============================+\n| :: | :: | :: |\n| | | |\n| [nomad] | NOMAD_ENGINE = sqla | nomad.engine = sqla |\n| engine = sqla | NOMAD_URL = someurl | nomad.url = someurl |\n| url = someurl | | |\n| | FOO_BAR = zeta | foo.bar = zeta |\n| [foo] | | |\n| bar = zeta | NOMAD_CONFPATH = path | nomad.confpath = path |\n| | NOMAD_CONFDIR = dir1 | nomad.confdir = dir1 |\n| | NOMAD_DIR = dir2 | nomad.dir = dir2 |\n+------------------+---------------------------+------------------------------+\n\n\nURL format\n~~~~~~~~~~\n\nNomad can read connection url to database in a few various ways. ``nomad.url``\nconfiguration option is a space separated list of descriptions of how Nomad can\nobtain database connection url.\n\nThe easiest one is simply an url (like in config example). The others are:\n\n- ``file:`` - a path to file containing connection url\n- ``env:`` - an environment variable (do not prefix with `$`)\n- ``py::`` - a Python path to a module,\n containing a variable with connection url\n- ``cmd:`` - command to execute to get connection url\n- ``json::key.0.key`` - path to file with JSON and then path\n to a connection url within JSON object\n- ``yaml::key.0.key`` - path to file with YAML and then path\n to a connection url within YAML object\n- ``ini::`` - path to INI file (parsed by\n configparser with extended interpolation) and then path to a connection url\n within this file\n\nAn example::\n\n [nomad]\n url =\n ini:${confdir}/../settings.ini:db.url\n json:${confdir}/../settings.json:db.url\n sqlite:///${confdir}/../local.db\n\nNotice that in all cases in the end you have to return URL to a database in\nnormal format, i.e. ``dbtype://user:pass@host:port/dbname?options``.\n\n``options`` are supported only by pgsql right now, whatever you put there, nomad\nwill do ``set ...`` before every migration. Note that if you do not supply\nanything there, nomad sets ``statement_timeout`` to 1000 ms and ``lock_timeout``\nto 500 ms by default.\n\nMain ideas\n----------\n\n- There are no downgrades - nobody ever tests them, and they are rarely\n necessary. Just write an upgrade if you need to cancel something.\n- You can write migration in whatever language you want, Nomad only helps you\n track applied migrations and dependencies.\n- ``.sql`` is treated differently and executed against database, configured in\n ``nomad.ini``.\n- Only ``.sql``, ``.j2``, and executable files (sorry, Windows! - though I am eager to\n hear ideas how to support it) are executed. You can put READMEs, pieces of\n documentation, whatever you want alongside your migrations.\n- Name matters - everything is executed in order. Order is determined by using\n human sort (so that ``x-1.sql`` is earlier than ``x-10.sql``, you can always\n check sorting with ``ls --sort=version``).\n\n.. end-writeup\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/piranha/nomad/", "keywords": "", "license": "ISC", "maintainer": "", "maintainer_email": "", "name": "nomad", "package_url": "https://pypi.org/project/nomad/", "platform": "any", "project_url": "https://pypi.org/project/nomad/", "project_urls": { "Homepage": "http://github.com/piranha/nomad/" }, "release_url": "https://pypi.org/project/nomad/1.20/", "requires_dist": null, "requires_python": "", "summary": "simple sql migration tool to save you from becoming mad", "version": "1.20" }, "last_serial": 3629868, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "8892449a661ed10dab3e9bbde722075e", "sha256": "f55c2c524b116f5a226f00264a7d3cba6d3c5de7a1c37de037d7fb3016afe936" }, "downloads": -1, "filename": "nomad-0.1.tar.gz", "has_sig": false, "md5_digest": "8892449a661ed10dab3e9bbde722075e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6857, "upload_time": "2011-09-03T17:06:51", "url": "https://files.pythonhosted.org/packages/16/2d/07369240af0977f1486b8038321fbea1def90d3d682c467c3af421aa9a49/nomad-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "25910df9ef2a0d00e93cb5026414fa79", "sha256": "cc44cbf7c84ca10da2f029e261c228629d4ba80ed701ac349e0c9f69e3309421" }, "downloads": -1, "filename": "nomad-0.1.1.tar.gz", "has_sig": false, "md5_digest": "25910df9ef2a0d00e93cb5026414fa79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6736, "upload_time": "2011-09-29T22:38:06", "url": "https://files.pythonhosted.org/packages/72/0b/a7e7f5068ac3820f9d82eb88fad8f44e7688420743fc2d9d04eb538be91c/nomad-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "e9cba171fabc252174abc2899ac0da61", "sha256": "ecb6da6e94f8cad4d1c78efc16bd9244362a76393a9e17049da0448e81086522" }, "downloads": -1, "filename": "nomad-0.1.2.tar.gz", "has_sig": false, "md5_digest": "e9cba171fabc252174abc2899ac0da61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7155, "upload_time": "2012-02-15T17:09:41", "url": "https://files.pythonhosted.org/packages/89/5f/03a22ae7ddd3f86c74991d094c14b50210258d6cff57288adf2876760fdc/nomad-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "2bc3bf5c55574be315bc78351fb7cec6", "sha256": "ae46aaa97934194f1f019d74e23d03c6d578a0dec8a369297cb2471ac691a352" }, "downloads": -1, "filename": "nomad-0.1.3.tar.gz", "has_sig": false, "md5_digest": "2bc3bf5c55574be315bc78351fb7cec6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7088, "upload_time": "2012-09-21T09:57:29", "url": "https://files.pythonhosted.org/packages/6b/6b/2aae9ddc6bf23bf95d7963f593d38ee58831c6ddff2b8a4432cdce083508/nomad-0.1.3.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "85f655232ab2d2f34dd176aa96592404", "sha256": "f504eb37693d611ff5787f745824fce0398823fa9ff725ba4ee57de23dcef76f" }, "downloads": -1, "filename": "nomad-0.2.tar.gz", "has_sig": false, "md5_digest": "85f655232ab2d2f34dd176aa96592404", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7567, "upload_time": "2013-06-08T07:55:18", "url": "https://files.pythonhosted.org/packages/47/ee/634bf9250b72439dd0c666da0c224edbacb733bcbc70ff75ce985b2e781a/nomad-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "e984b30aa9db2b11046be8d1781d29c0", "sha256": "242eaa4789f6f0f7dbdfa678cd1ae95ec0b237b29bacfea9d20c65fe56cad343" }, "downloads": -1, "filename": "nomad-0.3.tar.gz", "has_sig": false, "md5_digest": "e984b30aa9db2b11046be8d1781d29c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7760, "upload_time": "2013-08-19T20:26:35", "url": "https://files.pythonhosted.org/packages/a7/77/bef6fd06764e146f06a956e9625308441675662af9e47f8e13a87cc80d7f/nomad-0.3.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "7c16217030353d239160e99f2582340d", "sha256": "03212a55e5c9707033302e1557448d296a7e7862e46d02a61e5da3662fd6cfb7" }, "downloads": -1, "filename": "nomad-0.5.tar.gz", "has_sig": false, "md5_digest": "7c16217030353d239160e99f2582340d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8326, "upload_time": "2013-08-20T08:36:34", "url": "https://files.pythonhosted.org/packages/43/68/654a618b4866c890955d6ff8d0e4b1647f8e879e319d33e54a90adab8337/nomad-0.5.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "d3ac39d9216648d2c42ab3c3997fbf9e", "sha256": "6b549ad71946416595f23679e589ee73e40497699536f9b2d6358f386cb03e62" }, "downloads": -1, "filename": "nomad-1.0.tar.gz", "has_sig": false, "md5_digest": "d3ac39d9216648d2c42ab3c3997fbf9e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9353, "upload_time": "2013-09-03T13:39:30", "url": "https://files.pythonhosted.org/packages/11/38/dd065cae968a383553ff3ddfde9acfc708a3de855666c507b9e0cc6d4c4e/nomad-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "09a239ec3e87ccfbe07c76794ba8d5df", "sha256": "7c724a4753254d4cf9aea367050d55b4d1253dcd86ec8f59267b9f2286cf8e47" }, "downloads": -1, "filename": "nomad-1.1.tar.gz", "has_sig": false, "md5_digest": "09a239ec3e87ccfbe07c76794ba8d5df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9475, "upload_time": "2013-09-09T09:51:13", "url": "https://files.pythonhosted.org/packages/d8/74/2c995183613c61f44af0023df64a870d579a380a8f2beafb7f80c4107d8b/nomad-1.1.tar.gz" } ], "1.10": [ { "comment_text": "", "digests": { "md5": "b793a5f8bbeb5e73bd98578a625e53cb", "sha256": "3b06290c938af42e869560736d3a57a5f29c1f32e36d6441efc967597001aae1" }, "downloads": -1, "filename": "nomad-1.10.tar.gz", "has_sig": false, "md5_digest": "b793a5f8bbeb5e73bd98578a625e53cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10265, "upload_time": "2015-03-19T10:52:57", "url": "https://files.pythonhosted.org/packages/21/1d/da9eb60df5ec414d37f879d050f65413e86ee6452619e9964e0a4ba16b4e/nomad-1.10.tar.gz" } ], "1.11": [ { "comment_text": "", "digests": { "md5": "1d68d3593d867bfb04fcd2fdc09d0b72", "sha256": "7ccc12868a3f7d986fbdd435530acfd873bf0e1d53921068559822fd2d07daee" }, "downloads": -1, "filename": "nomad-1.11.tar.gz", "has_sig": false, "md5_digest": "1d68d3593d867bfb04fcd2fdc09d0b72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10299, "upload_time": "2015-03-26T09:22:49", "url": "https://files.pythonhosted.org/packages/f5/a3/1815b542d8ce1b4141576a6098f7dd52f0845f50d61934d515c39dde17bf/nomad-1.11.tar.gz" } ], "1.12": [ { "comment_text": "", "digests": { "md5": "512be277037a092300d93185db342c0f", "sha256": "6ce3d788b0887fbd0b98e12c132a2b81cbaa1407b20613215e03a794f4dad050" }, "downloads": -1, "filename": "nomad-1.12.tar.gz", "has_sig": false, "md5_digest": "512be277037a092300d93185db342c0f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10755, "upload_time": "2015-04-07T16:43:38", "url": "https://files.pythonhosted.org/packages/33/26/c9f565fcdc9dc6a155efa97678051d358ee33f6e51725d5328ef44e444f5/nomad-1.12.tar.gz" } ], "1.13": [ { "comment_text": "", "digests": { "md5": "594d7e562e4f5b9676240b79b22a61ff", "sha256": "f3f1e18f86f2bd70832ce4433758bd40f572d4e9f4adda13a4d10efe798ba169" }, "downloads": -1, "filename": "nomad-1.13.tar.gz", "has_sig": false, "md5_digest": "594d7e562e4f5b9676240b79b22a61ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10754, "upload_time": "2015-05-04T18:28:33", "url": "https://files.pythonhosted.org/packages/bd/5b/329e94fa7fa0cea8e1addaa1d7adeedb957ecba35759278e53623cc4ae1d/nomad-1.13.tar.gz" } ], "1.14": [ { "comment_text": "", "digests": { "md5": "c27fa4a79c1afaaaabbac58a6f7b142e", "sha256": "30548ee8eb5353bdc6e91b27a9c02d1af5f2cb24e98114421eaeeac5594e848f" }, "downloads": -1, "filename": "nomad-1.14.tar.gz", "has_sig": false, "md5_digest": "c27fa4a79c1afaaaabbac58a6f7b142e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10784, "upload_time": "2015-05-07T16:43:26", "url": "https://files.pythonhosted.org/packages/eb/45/fbfc165367c56c4d8b6087a8e00e9e13ee2d741c038402aa0ef03bb516f7/nomad-1.14.tar.gz" } ], "1.15": [ { "comment_text": "", "digests": { "md5": "99c32daf4e801e44e016ec852e49487a", "sha256": "935b8f67653f8cf8ae3a2253a11ba14deeaba2beaf7cdd2f1dfb37a3dc7cd679" }, "downloads": -1, "filename": "nomad-1.15.tar.gz", "has_sig": false, "md5_digest": "99c32daf4e801e44e016ec852e49487a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10812, "upload_time": "2015-05-08T09:27:06", "url": "https://files.pythonhosted.org/packages/96/cd/0c6a99a176322c9d8186430e0cdae0ef8cad5cb4ce380c4ed1db8e8f2a9d/nomad-1.15.tar.gz" } ], "1.16": [ { "comment_text": "", "digests": { "md5": "621e866a309367b7658f05d926180433", "sha256": "ec8e077ef7f32ecae62db785fe388ca5d23cd67360e21dad87466a5dfd1dba3f" }, "downloads": -1, "filename": "nomad-1.16.tar.gz", "has_sig": false, "md5_digest": "621e866a309367b7658f05d926180433", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10795, "upload_time": "2015-05-08T11:35:26", "url": "https://files.pythonhosted.org/packages/d4/a5/d9fbae9e831e200c34f22123e3a905de6c738f40eab0839652f0b195265f/nomad-1.16.tar.gz" } ], "1.17": [ { "comment_text": "", "digests": { "md5": "1d5f43cd22590366b3293ec32f3e4dfd", "sha256": "ad373ed3da45b75a9722f0827094b5fc574644d551ec31e09abbd7e84002c322" }, "downloads": -1, "filename": "nomad-1.17.tar.gz", "has_sig": false, "md5_digest": "1d5f43cd22590366b3293ec32f3e4dfd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10806, "upload_time": "2015-05-13T08:31:45", "url": "https://files.pythonhosted.org/packages/fe/8c/c4dd691ae9ef728d6a521d92c4be42a350fa0c6de464aee53ff27f56e777/nomad-1.17.tar.gz" } ], "1.18": [ { "comment_text": "", "digests": { "md5": "47d66aac72d9445f91b43f2c039b2194", "sha256": "e328b4ad566cd059b261ab56512f680c7fa96883c7dc25c54aa62c7984014816" }, "downloads": -1, "filename": "nomad-1.18.tar.gz", "has_sig": false, "md5_digest": "47d66aac72d9445f91b43f2c039b2194", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11041, "upload_time": "2015-12-15T20:45:53", "url": "https://files.pythonhosted.org/packages/cd/9b/dd30b1236261cb1561a449c3f7f5b1ce76f39a7158eabb2bce51f761bf6f/nomad-1.18.tar.gz" } ], "1.19": [ { "comment_text": "", "digests": { "md5": "d0cee707adbb1f26194ecfc3d520eb06", "sha256": "d4b1dcd5c941c96a6160d1b07ec37088dbbc31646ee4e6814be09e6dfbb71217" }, "downloads": -1, "filename": "nomad-1.19.tar.gz", "has_sig": false, "md5_digest": "d0cee707adbb1f26194ecfc3d520eb06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11949, "upload_time": "2016-05-20T09:38:55", "url": "https://files.pythonhosted.org/packages/4a/7b/84018db6a21d835e69be9235b624ecc924685f043fb8979fa303541859ae/nomad-1.19.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "ac3fa1115c3d2559605d01c9d88822e2", "sha256": "da552867d2e0d51866d80e84b9c9c52c4e8fcb7f5f93ef6690145939a03866dd" }, "downloads": -1, "filename": "nomad-1.2.tar.gz", "has_sig": false, "md5_digest": "ac3fa1115c3d2559605d01c9d88822e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9542, "upload_time": "2013-09-10T12:54:09", "url": "https://files.pythonhosted.org/packages/a7/5e/156e30aafe859e6d6effaebe950aa428df4b7abcec925d4eed7c9da13d9e/nomad-1.2.tar.gz" } ], "1.20": [ { "comment_text": "", "digests": { "md5": "19139d97410c9e7c3dc37633435f5c57", "sha256": "fefffdf46fdf272d5861b84eaab4daf4b98e1cd2d449582eca8afa3b4ce1efe0" }, "downloads": -1, "filename": "nomad-1.20.tar.gz", "has_sig": false, "md5_digest": "19139d97410c9e7c3dc37633435f5c57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12284, "upload_time": "2018-03-01T21:03:33", "url": "https://files.pythonhosted.org/packages/2a/d8/a2c0a02c163212e72a9c648041ab60d940a398dbdfe0aa5f69f8abc42138/nomad-1.20.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "d7d1ab81796cb2e3e0b5f392db778ed0", "sha256": "aafd513025fe1ab37596921cf3cfc4622dbfed21177cec54f3685a8f8f3165eb" }, "downloads": -1, "filename": "nomad-1.3.tar.gz", "has_sig": false, "md5_digest": "d7d1ab81796cb2e3e0b5f392db778ed0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9545, "upload_time": "2013-10-22T08:24:26", "url": "https://files.pythonhosted.org/packages/b8/b3/fbb56b8af9be94ee687b3d434222016242b3b39d433c0aca458b8464319b/nomad-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "961c10a550c9b1559e25aeb9a256f663", "sha256": "db5bc9e466448ff1d47963fa989f14d454ef34a1e80700a6168855422c3f92f8" }, "downloads": -1, "filename": "nomad-1.4.tar.gz", "has_sig": false, "md5_digest": "961c10a550c9b1559e25aeb9a256f663", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9544, "upload_time": "2013-10-22T08:40:09", "url": "https://files.pythonhosted.org/packages/ec/d8/2a3a9c9bf1b27be891fc132cdfa48d68f7540194800d32a449cbb7fb8846/nomad-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "db3d810672da7f6d7e66ce5b98a4df80", "sha256": "2a4765e0b3f278ec1f62f8ab77cf2b3b409cdcd4dd68f6b7fb4de885e500925e" }, "downloads": -1, "filename": "nomad-1.5.tar.gz", "has_sig": false, "md5_digest": "db3d810672da7f6d7e66ce5b98a4df80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9638, "upload_time": "2013-12-09T13:18:19", "url": "https://files.pythonhosted.org/packages/db/71/8a05714d4888ff80f70340faa913aad4d32d35565e953312a23a771fe6c3/nomad-1.5.tar.gz" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "deae2aeb1ac27efeb3c621a8f1b9cdee", "sha256": "967fd7db736101206125ecfe6405c622e87149a921ba01060cb38a75919c5911" }, "downloads": -1, "filename": "nomad-1.6.tar.gz", "has_sig": false, "md5_digest": "deae2aeb1ac27efeb3c621a8f1b9cdee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9711, "upload_time": "2014-04-01T16:53:41", "url": "https://files.pythonhosted.org/packages/bc/91/855216b4c9b8e161c628d5fdef24f44c15f053ff22e5d015fc0aaca069e2/nomad-1.6.tar.gz" } ], "1.7": [ { "comment_text": "", "digests": { "md5": "b60be81e56c915f95435c134ae7f8a05", "sha256": "429d096d19c4736a666844ec9793586f192aa440a4287e249132bb12333b2bba" }, "downloads": -1, "filename": "nomad-1.7.tar.gz", "has_sig": false, "md5_digest": "b60be81e56c915f95435c134ae7f8a05", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9890, "upload_time": "2014-05-15T12:18:07", "url": "https://files.pythonhosted.org/packages/43/e8/aea1c99faf4b3744c1d76dd289bd8e75d922ccb49b1461badcbf3b52b3b4/nomad-1.7.tar.gz" } ], "1.8": [ { "comment_text": "", "digests": { "md5": "cedf274afbddba82cc95e3b567395e53", "sha256": "411576ad42ccaeaf046ac930088193b098320a7778824a0d91d3de7ea8d046e7" }, "downloads": -1, "filename": "nomad-1.8.tar.gz", "has_sig": false, "md5_digest": "cedf274afbddba82cc95e3b567395e53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10046, "upload_time": "2014-09-08T10:04:39", "url": "https://files.pythonhosted.org/packages/74/55/e6a87585c4807e70d3e14f19eb2af40d542e05dfc0f38a8c4c8e8137e95a/nomad-1.8.tar.gz" } ], "1.9": [ { "comment_text": "", "digests": { "md5": "9a8910b385f2a1d071c74f0a3470dcd0", "sha256": "0e51b5d8a25492c04d0f6a04797ff19876bd64d1d133f349518fd123af085436" }, "downloads": -1, "filename": "nomad-1.9.tar.gz", "has_sig": false, "md5_digest": "9a8910b385f2a1d071c74f0a3470dcd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10080, "upload_time": "2014-09-16T08:37:06", "url": "https://files.pythonhosted.org/packages/88/61/fefe61b72203733e784a7687e34fdf070d7b56d9237d5deb0403771cb16a/nomad-1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "19139d97410c9e7c3dc37633435f5c57", "sha256": "fefffdf46fdf272d5861b84eaab4daf4b98e1cd2d449582eca8afa3b4ce1efe0" }, "downloads": -1, "filename": "nomad-1.20.tar.gz", "has_sig": false, "md5_digest": "19139d97410c9e7c3dc37633435f5c57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12284, "upload_time": "2018-03-01T21:03:33", "url": "https://files.pythonhosted.org/packages/2a/d8/a2c0a02c163212e72a9c648041ab60d940a398dbdfe0aa5f69f8abc42138/nomad-1.20.tar.gz" } ] }