{ "info": { "author": "Adrian Kuhn", "author_email": "akuhnplus@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "A little language for schema-enforced models\n============================================\n\nFame is a framework for metamodelling in Python.\n\n- Entities are described by models\n- Models are described by metamodels\n- Models have fields, derived fields and constraints\n- Entities can have custom fields\n- Entities can be created even if data is invalid\n- There are functions to validate and get error messages\n- Validation checks presence and type of fields\n- Validation checks all constraints\n- Derived fields are memoized\n\nExample\n\n::\n\n class Experiment(Model):\n\n @schema\n def metamodel(self, m):\n m.field('name', str)\n m.field('subject', options(\n 'user',\n 'visitor',\n 'email',\n 'listing',\n 'market'\n ))\n m.field('treatments', array(str))\n m.field('percent_exposed', int, default=100)\n m.field('design', nullable(regexp('^https?')))\n\n @derived_field\n def is_miscellanous(self):\n return self.subject not in ['user', 'visitor']\n\n @constraint(\"expected percent_exposed to not exceed 100, got {}\")\n def constraint(self):\n if self.percent_exposed > 100:\n return self.percent_exposed\n\nConventions\n\n- Define metamodel function first\n- Then define derived field functions\n- Then define all the constraint functions\n- Constraint functions are all named \u201cconstraint\u201d, that is intentional\n\nInstallation\n------------\n\nTo install this package, run\n\n::\n\n pip install fame\n\nContributing\n------------\n\nBug reports and pull requests are welcome on github at,\nhttps://github.com/akuhn/py-fame", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/akuhn/py-fame", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "fame", "package_url": "https://pypi.org/project/fame/", "platform": "", "project_url": "https://pypi.org/project/fame/", "project_urls": { "Homepage": "https://github.com/akuhn/py-fame" }, "release_url": "https://pypi.org/project/fame/1.2.0/", "requires_dist": null, "requires_python": "", "summary": "A little language for schema-enforced models.", "version": "1.2.0" }, "last_serial": 4853041, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "800bf5b76b12e59e8a5340866f3f6118", "sha256": "d11e3384cde9cefa85afe8d95b4a8f8a2676bc70e6e7f5e345f0338287497ab4" }, "downloads": -1, "filename": "fame-1.0.0.tar.gz", "has_sig": false, "md5_digest": "800bf5b76b12e59e8a5340866f3f6118", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2778, "upload_time": "2018-08-18T23:39:50", "url": "https://files.pythonhosted.org/packages/a3/3d/07d2aa937a4577b854873b437d644849c376285bbe657391095020019811/fame-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "cec1de4232db4a7c58f72a1e960fe4b7", "sha256": "1ef208446a0b31c17b3682cd1aa8473f12821ad97061f631db101157e9e28e6d" }, "downloads": -1, "filename": "fame-1.1.0.tar.gz", "has_sig": false, "md5_digest": "cec1de4232db4a7c58f72a1e960fe4b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2895, "upload_time": "2018-08-19T00:09:00", "url": "https://files.pythonhosted.org/packages/36/01/568d10921da68470c170adfbb9ebfd1c4e3d1521b8ddb6aa5e815b19d258/fame-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "bc162b208b98537e74c4cda4e552e4c2", "sha256": "54a8f05afc7b0e9356eb8b91744e6f5c02e4e55e72438a2de6c8b42444eea26c" }, "downloads": -1, "filename": "fame-1.2.0.tar.gz", "has_sig": false, "md5_digest": "bc162b208b98537e74c4cda4e552e4c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3749, "upload_time": "2019-02-22T05:03:42", "url": "https://files.pythonhosted.org/packages/9f/74/e38c0d85a729266e87a903ddb4f759d60a1b97d14c2add32a756cf301068/fame-1.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bc162b208b98537e74c4cda4e552e4c2", "sha256": "54a8f05afc7b0e9356eb8b91744e6f5c02e4e55e72438a2de6c8b42444eea26c" }, "downloads": -1, "filename": "fame-1.2.0.tar.gz", "has_sig": false, "md5_digest": "bc162b208b98537e74c4cda4e552e4c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3749, "upload_time": "2019-02-22T05:03:42", "url": "https://files.pythonhosted.org/packages/9f/74/e38c0d85a729266e87a903ddb4f759d60a1b97d14c2add32a756cf301068/fame-1.2.0.tar.gz" } ] }