{ "info": { "author": "Open Knowledge Foundation", "author_email": "openspending-dev at lists okfn org", "bugtrack_url": null, "classifiers": [], "description": "OpenSpending Model / Data Validator\n===================================\n\nThis command-line tool will help to check the validity of an OpenSpending\ndataset model before loading the data into the system. For this purpose, \nboth model files and data files can be checked to see if they would pass\nthe input validation of an OpenSpending import.\n\nExamples\n--------\n\nTo validate a JSON model file, use the 'model' subcommand::\n\n osvalidate model mymodel.json\n\nOr, to check that a CSV sheet satisfies the requirements of an existing\nmodel, use the 'data' subcommand::\n\n osvalidate data --model mymodel.json BigData.csv\n\nBoth commands will emit error messages whenever they find an inconsistency\nbut otherwise try to continue the validation. Note, however, that a valid\nmodel file is required to run the data validator.\n\n\nUpgrading the Format\n--------------------\n\nThe model schema changes from time to time, so a migration option is \nprovided so that existing files can be upgraded::\n\n osvalidate migrate old.json >new.json \n\nThis will attempt to execute pending migrations and set an appropriate \nmodel version.\n\nSchema / Format\n---------------\n\nThe JSON model format is described in further detail in the documentation_.\n\n.. _documentation: http://readthedocs.org/docs/openspending/en/latest/model/design.html#modeling-mapping-schema\n\nYou can generate a bare mapping from a JSON model file using::\n\n osvalidate mapping mymodel.json\n\nIf you don't have a JSON model file, you can generate one from a CSV file\nas follows::\n\n osvalidate mapgen data.csv\n\nYou will need to edit the result of this to add information (like textual\nexplanations of the fields) can't be programmatically inferred from the\ncontents of the CSV file.\n\n\nInstallation\n------------\n\nInstallation is as a conventional Python tool::\n\n virtualenv pyenv\n\n . pyenv/bin/activate\n\n python setup.py install\n\nDeveloper notes\n---------------\n\nEach new version of ``osvalidate`` needs to be published in a few steps:\n\n* Update the version in ``setup.py`` to a new release of the form\n ``YYYY-MM-DD.SS`` with the last two digits signifying a serial number for the\n day.\n* Commit and push the new release to the GitHub repository.\n* Upload a source distribution to pypi (``python setup.py sdist upload``).\n* Update the required version of ``osvalidate`` in the main ``openspending``\n app.\n\nHow to write a migration - Migrations of model formats are simple functions, \nusually named ``mYYYY_MM_DD_purpose`` and stored in the ``migrations`` module.\nThey must both accept and return a model file and be registered in\n``openspending.validation.model.migration:MIGRATIONS`` with an increasing\nversion stamp (i.e. the current date). The version stamp of the latest executed \nmigration will automatically be saved to the model and used as a minimum for \nthe next run. \n\nIn general, migrations should make as few assumptions about the input they \nreceive as possible and execute idempotently. Migrations cannot change the \n``dataset`` section of the model.\n\nContact\n-------\n\n* E-Mail: info@openspending.org\n* Issues: https://github.com/openspending/openspending/issues\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/okfn/osvalidate", "keywords": null, "license": "GPLv3", "maintainer": null, "maintainer_email": null, "name": "osvalidate", "package_url": "https://pypi.org/project/osvalidate/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/osvalidate/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/okfn/osvalidate" }, "release_url": "https://pypi.org/project/osvalidate/2014-12-21.01/", "requires_dist": null, "requires_python": null, "summary": "OpenSpending Model/Data Validation", "version": "2014-12-21.01" }, "last_serial": 1359734, "releases": { "2011-11-21.01dev": [ { "comment_text": "", "digests": { "md5": "cbe27f9821cb7ab5669dd0fc6d41dab0", "sha256": "fce44a9d9a704b785088775bed8a8799c62bf49682b15683c18ced1ac3d263c8" }, "downloads": -1, "filename": "osvalidate-2011-11-21.01dev.tar.gz", "has_sig": false, "md5_digest": "cbe27f9821cb7ab5669dd0fc6d41dab0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13576, "upload_time": "2011-11-25T15:44:23", "url": "https://files.pythonhosted.org/packages/1b/78/38064ad38bdb937e9d560a3f97ed0a8e0154a886c678c631e34355ce4a8f/osvalidate-2011-11-21.01dev.tar.gz" } ], "2011-11-25.01": [ { "comment_text": "", "digests": { "md5": "f433b1f386df8ff6558a7fb1f38d5300", "sha256": "6913bbacaa40a4d8544795b0806a8fa4af5cfabadc89e3107b03d9a312650883" }, "downloads": -1, "filename": "osvalidate-2011-11-25.01.tar.gz", "has_sig": false, "md5_digest": "f433b1f386df8ff6558a7fb1f38d5300", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13411, "upload_time": "2011-11-25T16:01:25", "url": "https://files.pythonhosted.org/packages/27/3e/2c4ce83396b0a13a156aabcbf95a498a2931e0a134eccc9839b8683eaacf/osvalidate-2011-11-25.01.tar.gz" } ], "2011-11-25.02": [ { "comment_text": "", "digests": { "md5": "8441ce908236665ac398ee6205cad437", "sha256": "efbf967c383c73ee0a37a0bf2a9fe551f351d2952f7e5836f46cc4ee88ddd67a" }, "downloads": -1, "filename": "osvalidate-2011-11-25.02.tar.gz", "has_sig": false, "md5_digest": "8441ce908236665ac398ee6205cad437", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14575, "upload_time": "2011-11-25T21:57:17", "url": "https://files.pythonhosted.org/packages/01/2a/becc1e42714483722fe39270f25c0d5cdbea6193d16a4c574af44712d70e/osvalidate-2011-11-25.02.tar.gz" } ], "2011-11-28.02": [ { "comment_text": "", "digests": { "md5": "9806eb49ae727e3d4ba649a9ba0628fd", "sha256": "6a52b538a034d08e503b60d4f8ddb86c5390853badd8924aa8ebf66610cda447" }, "downloads": -1, "filename": "osvalidate-2011-11-28.02.tar.gz", "has_sig": false, "md5_digest": "9806eb49ae727e3d4ba649a9ba0628fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14562, "upload_time": "2011-11-28T16:43:04", "url": "https://files.pythonhosted.org/packages/c6/f9/c6218d833c449c8742e330e35cf1c64ab8017518de0abc26c5f55ecc9fe2/osvalidate-2011-11-28.02.tar.gz" } ], "2011-11-28.03": [ { "comment_text": "", "digests": { "md5": "5a4d7d3c81cdcbca2b5c3d423d055a96", "sha256": "d4329d2da756148e9aaec01cdb20c9b51f5f44a371f9a5da235d6cd03581978a" }, "downloads": -1, "filename": "osvalidate-2011-11-28.03.tar.gz", "has_sig": false, "md5_digest": "5a4d7d3c81cdcbca2b5c3d423d055a96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14552, "upload_time": "2011-11-28T21:15:38", "url": "https://files.pythonhosted.org/packages/d2/f3/0c0494669293a14ed7f826af608d929ac5a86c5e16ff9276139e40c9621f/osvalidate-2011-11-28.03.tar.gz" } ], "2011-12-01.01": [ { "comment_text": "", "digests": { "md5": "d728124f766b88ee9bac3a60b0d02882", "sha256": "9ae55ad74d9248fea89ef732ecc27e648ec23e95781eb596f329e3a00ecefbe4" }, "downloads": -1, "filename": "osvalidate-2011-12-01.01.tar.gz", "has_sig": false, "md5_digest": "d728124f766b88ee9bac3a60b0d02882", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14421, "upload_time": "2011-12-01T11:36:12", "url": "https://files.pythonhosted.org/packages/77/22/1a6196903dc6880807294c414d123e869435876bce266f222896d3bcc5a6/osvalidate-2011-12-01.01.tar.gz" } ], "2011-12-02.01": [ { "comment_text": "", "digests": { "md5": "0b8ec217663a946dd9ecefcc76eeb604", "sha256": "188de556d40aa97f7182b0bb4c522e2079588edd6208b5612b2727d666fb2167" }, "downloads": -1, "filename": "osvalidate-2011-12-02.01.tar.gz", "has_sig": false, "md5_digest": "0b8ec217663a946dd9ecefcc76eeb604", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14522, "upload_time": "2011-12-02T12:49:57", "url": "https://files.pythonhosted.org/packages/0d/1e/17f45ff8ef86448f9a681364021cde8c49292eb8cedb8aa2e822c4707df3/osvalidate-2011-12-02.01.tar.gz" } ], "2011-12-08.02": [ { "comment_text": "", "digests": { "md5": "4bc0097fef23642c89be11c5a58e2ba7", "sha256": "d71edb202cff4fc5b27698918bfefbf92b203d51177a6c432ed1b5fdbf83720d" }, "downloads": -1, "filename": "osvalidate-2011-12-08.02.tar.gz", "has_sig": false, "md5_digest": "4bc0097fef23642c89be11c5a58e2ba7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13754, "upload_time": "2011-12-09T10:36:24", "url": "https://files.pythonhosted.org/packages/1a/0a/660150c2d2db7cc3072fc38b2bff49b3ca97eaf8b0a7f5874c37e8ce56aa/osvalidate-2011-12-08.02.tar.gz" } ], "2011-12-12.01": [ { "comment_text": "", "digests": { "md5": "442b1975b240d01e6eb2b117f25f2fd7", "sha256": "1a009259b4e92778911f90a376644e87e8bee57e6661996220c40fd723381885" }, "downloads": -1, "filename": "osvalidate-2011-12-12.01.tar.gz", "has_sig": false, "md5_digest": "442b1975b240d01e6eb2b117f25f2fd7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28511, "upload_time": "2011-12-12T12:58:20", "url": "https://files.pythonhosted.org/packages/f7/04/401f91199f7b6b8848901c7b859b4175b90a9d9d0ec8ac15906cbbd840aa/osvalidate-2011-12-12.01.tar.gz" } ], "2012-01-17.01": [ { "comment_text": "", "digests": { "md5": "5bf526efd7ca2b7d56749eb41280af45", "sha256": "afdb1ffe061f3a3059e8cab2a8b85404bf3a6c47edae58b9264e9566cd7be7b4" }, "downloads": -1, "filename": "osvalidate-2012-01-17.01.tar.gz", "has_sig": false, "md5_digest": "5bf526efd7ca2b7d56749eb41280af45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27222, "upload_time": "2012-01-17T17:13:14", "url": "https://files.pythonhosted.org/packages/f1/37/588b337875e689f029824fe1629d17c832ca052eab3d98e0ff3ea844c93a/osvalidate-2012-01-17.01.tar.gz" } ], "2012-02-20.01": [ { "comment_text": "", "digests": { "md5": "4d62dbf041ed6d845aae318c62bceb1a", "sha256": "0a963f9167d4c9381d028f5942010a915fd0379f6a67b5f0ef384f0c021412f9" }, "downloads": -1, "filename": "osvalidate-2012-02-20.01.tar.gz", "has_sig": false, "md5_digest": "4d62dbf041ed6d845aae318c62bceb1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21562, "upload_time": "2012-03-04T00:41:51", "url": "https://files.pythonhosted.org/packages/3a/13/93959c47ca7b74db1046f04c723de75bf334289f3ca878009ea3c67f050d/osvalidate-2012-02-20.01.tar.gz" } ], "2012-03-05.01": [ { "comment_text": "", "digests": { "md5": "da72efb0dd645c95462dd75d2649c742", "sha256": "d4082002633814b07249ffaaa12d72f5495907c971a69012bc0f857c1c813acf" }, "downloads": -1, "filename": "osvalidate-2012-03-05.01.tar.gz", "has_sig": false, "md5_digest": "da72efb0dd645c95462dd75d2649c742", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22113, "upload_time": "2012-03-05T13:57:21", "url": "https://files.pythonhosted.org/packages/0f/92/cabfb4d1287ed5a8038cea3b6d1f8fc67151180d927edf917b7feac50872/osvalidate-2012-03-05.01.tar.gz" } ], "2012-05-17.01": [ { "comment_text": "", "digests": { "md5": "35efca01ac576902747bacb3c781abb2", "sha256": "91953c0dcfbbae87581c1323d77211a9ddef6d7bf1be6fb20d8b6e92d15135ae" }, "downloads": -1, "filename": "osvalidate-2012-05-17.01.tar.gz", "has_sig": false, "md5_digest": "35efca01ac576902747bacb3c781abb2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21426, "upload_time": "2012-05-17T13:34:26", "url": "https://files.pythonhosted.org/packages/80/69/efb4cd73e09a0f0948d06ccd28545434ea3f830c26aa5fd6ab9d3af5044c/osvalidate-2012-05-17.01.tar.gz" } ], "2012-05-29.01": [ { "comment_text": "", "digests": { "md5": "f4c0e21537c35a22f5464fcb10d01ffc", "sha256": "ec7bfa66970e7af7c5d7544a73a6db75167fad2fc396b6641583e6abb51dab24" }, "downloads": -1, "filename": "osvalidate-2012-05-29.01.tar.gz", "has_sig": false, "md5_digest": "f4c0e21537c35a22f5464fcb10d01ffc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21717, "upload_time": "2012-05-28T23:26:22", "url": "https://files.pythonhosted.org/packages/c7/c3/6e4e57097a57f8c2659ae1dc532c1bacc4cd5d802e8aa655c958ed0c32cf/osvalidate-2012-05-29.01.tar.gz" } ], "2013-05-23.01": [ { "comment_text": "", "digests": { "md5": "8dad68f6528cda856d1d98940fef5737", "sha256": "2a9545dfc0b0b23793307e17fa1122e51232244f7defa61f7565632a984789a0" }, "downloads": -1, "filename": "osvalidate-2013-05-23.01.tar.gz", "has_sig": false, "md5_digest": "8dad68f6528cda856d1d98940fef5737", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23007, "upload_time": "2013-05-23T15:36:36", "url": "https://files.pythonhosted.org/packages/e6/23/5fdbdc44cb6a55ff179d9ea66c47ffe1a78f0f2c02d0a84d7efbdcd28098/osvalidate-2013-05-23.01.tar.gz" } ], "2014-12-21.01": [ { "comment_text": "", "digests": { "md5": "97cef10462d26bc7f946dc3f9e6ac4fb", "sha256": "e96fee37439533e75afb3583e6ccfa88572bad5a4806f3f9081596d859d87b67" }, "downloads": -1, "filename": "osvalidate-2014-12-21.01.tar.gz", "has_sig": false, "md5_digest": "97cef10462d26bc7f946dc3f9e6ac4fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23128, "upload_time": "2014-12-24T09:53:51", "url": "https://files.pythonhosted.org/packages/4f/fe/2bba3fdb2e5eeed49dfb9be78f4ea973a699c41e05ff208f6d024717df57/osvalidate-2014-12-21.01.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "97cef10462d26bc7f946dc3f9e6ac4fb", "sha256": "e96fee37439533e75afb3583e6ccfa88572bad5a4806f3f9081596d859d87b67" }, "downloads": -1, "filename": "osvalidate-2014-12-21.01.tar.gz", "has_sig": false, "md5_digest": "97cef10462d26bc7f946dc3f9e6ac4fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23128, "upload_time": "2014-12-24T09:53:51", "url": "https://files.pythonhosted.org/packages/4f/fe/2bba3fdb2e5eeed49dfb9be78f4ea973a699c41e05ff208f6d024717df57/osvalidate-2014-12-21.01.tar.gz" } ] }