{ "info": { "author": "Paul Harter", "author_email": "username: paul, domain: opendesk.cc", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Manufacturing", "License :: Public Domain", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7" ], "description": "# winnow\n\nWinnow is a json interchange format for publishing families of configurable products. It has several distinct parts:\n\n+ A set of json schemata for documents describing products and associated information.\n+ A schema for defining sets of configuration options in products.\n+ A defined set of basic logical operations for manipulating documents with options.\n+ A python library that implements these operations\n\nIn order to write and publish winnow documents you use the first two of these as they define how winnow documents are constructed. To apply logical operations to, and manipulate, winnow documents you will need to understand winnow's operations and it's library that implements them.\n\n\n## resources and documents\n\nSome winnow documents describe named resources others do not. \n\nResource documents have certain features: they are discoverable at a permanent url defined in the document itself; they are versioned and use Semantic Version numbers; these versions are themselves discoverable and resources may inherit from another resource of the same type.\n\nEight resource types are currently defined in winnow. Follow links to see their full descriptions.\n\n+ [*range*](docs/range.md) - A collection of related designs with common authorship\n+ [*design*](docs/design.md) - A design\n+ [*product*](docs/product.md) - A family of versions of a design defined by a common set of options\n+ [*fileset*](docs/fileset.md) - A set of files that are useful for making all or a subset of a product family\n+ *finish* - A finish for a product defined by a set of materials and processes\n+ *material* - A material\n+ *process* - A process that is applied to a material\n+ *context* - An collection of options used to filter or extend a product's options\n\nWinnow also defines two document types that are not named resources, but are created as intermediate files during processing:\n\n+ *choice*\n+ *quantified_configuration*\n\n## validation\n\nIn winnow.schemata there are json schemata that can be used to validate winnow documents. This can be done using tools available from [json-schema.org](http://json-schema.org/implementations.html), or using winnow's python library like this:\n\n```python\n with open(filepath, \"r\") as f:\n doc = json.loads(f.read())\n winnow.validate(doc)\n```\n\n## options\n\nSome winnow documents have a top level ```options``` attribute. This object describes a related family of products by defining a set of possible configurations for a product, for example available colours or sizes. \n\n ```json\n {\n \"options\":{\n \"colour\": [\"red\", \"blue\", \"green\"],\n \"size\": [\"big\", \"small],\n \"wheels\": [4, 6]\n }\n ...\n }\n ```\n\nThis describes the product family for a toy that comes in three colours, two sizes and can have either four or six wheels. Winnow provides both a json language for defining these options and a set of operations for manipulating them.\n\nYou can read more about winnow's values here [options](docs/options.md)\n\n## operations\n\nWinnow defines a set of simple, but powerful, operations to help manipulate winnow documents.\n\n+ *add_doc* \n+ *allows*\n+ *merge*\n+ *scope*\n+ *default_choices*\n+ *quantify*\n+ *filter_allows*\n+ *filter_allowed_by*\n+ *is_allowed_by*\n+ *expand*\n+ *asset_props*\n+ *validate*\n\n## library\n\n\n\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": "https://github.com/opendesk/winnow", "keywords": null, "license": "UNLICENSE", "maintainer": null, "maintainer_email": null, "name": "winnow", "package_url": "https://pypi.org/project/winnow/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/winnow/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/opendesk/winnow" }, "release_url": "https://pypi.org/project/winnow/0.1.4/", "requires_dist": null, "requires_python": null, "summary": "Winnow is a JSON-schema based library for publishing and manipulating families of products.", "version": "0.1.4" }, "last_serial": 1696301, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "6f5c0fbd05fa3a8d5fdc24d3afbb1621", "sha256": "a1e50ba1bed37e9c586f13287b5c8bc732b76e1815a509a862e6babdb922b398" }, "downloads": -1, "filename": "winnow-0.1.tar.gz", "has_sig": false, "md5_digest": "6f5c0fbd05fa3a8d5fdc24d3afbb1621", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28205, "upload_time": "2015-08-25T14:38:11", "url": "https://files.pythonhosted.org/packages/b4/27/2a65ca30eeb2bd6bebb49392d1c3012bd32e09c5c8c89e6b4098cba5d25a/winnow-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "79d05a552d2e753ee21a1843db7a7c1b", "sha256": "1a112534632da3f2bce35e744ac2795dd3916309f17200a76ef2975ea71c9e21" }, "downloads": -1, "filename": "winnow-0.1.1.tar.gz", "has_sig": false, "md5_digest": "79d05a552d2e753ee21a1843db7a7c1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28355, "upload_time": "2015-08-25T14:44:37", "url": "https://files.pythonhosted.org/packages/66/1d/a8afdd2dca9ebd116637e768a4e9bd86452b58fe2b3c85fa0aaf4576f73a/winnow-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "94215bde22a74f899429c97fb0b6adb8", "sha256": "7f25aedb9c89eb5079ff86db3af3b80e0471f0d0d0a6d3b5f1e2f0149b4c0ffa" }, "downloads": -1, "filename": "winnow-0.1.2.tar.gz", "has_sig": false, "md5_digest": "94215bde22a74f899429c97fb0b6adb8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27513, "upload_time": "2015-08-25T15:36:22", "url": "https://files.pythonhosted.org/packages/61/af/0f7fe4fce532e08dab7f798658509db9802c3c883ee7a599556cc721a414/winnow-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "5e0c6aebe29e89f3d36ee6e1ddda1876", "sha256": "66b24884d2a1e1761aeb0e2cd97b702b18dc76af2563b1cfc86137fd7c7517b0" }, "downloads": -1, "filename": "winnow-0.1.3.tar.gz", "has_sig": false, "md5_digest": "5e0c6aebe29e89f3d36ee6e1ddda1876", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40183, "upload_time": "2015-08-27T11:02:12", "url": "https://files.pythonhosted.org/packages/2c/df/573ae522855f4373cf06dab82b15565475fec7a953df08a5251021855979/winnow-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "d45891585b20c1fe54964d06c5c82cb7", "sha256": "1c6147aaeec22599d1357b56d958e3f4f578c2296aa2cdde9abcd408ee3d9919" }, "downloads": -1, "filename": "winnow-0.1.4.tar.gz", "has_sig": false, "md5_digest": "d45891585b20c1fe54964d06c5c82cb7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40176, "upload_time": "2015-08-27T13:30:17", "url": "https://files.pythonhosted.org/packages/03/d8/df7039ef09d5171d72b65cc318180eb9de91035de79f5fa572b3efd7e0da/winnow-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d45891585b20c1fe54964d06c5c82cb7", "sha256": "1c6147aaeec22599d1357b56d958e3f4f578c2296aa2cdde9abcd408ee3d9919" }, "downloads": -1, "filename": "winnow-0.1.4.tar.gz", "has_sig": false, "md5_digest": "d45891585b20c1fe54964d06c5c82cb7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40176, "upload_time": "2015-08-27T13:30:17", "url": "https://files.pythonhosted.org/packages/03/d8/df7039ef09d5171d72b65cc318180eb9de91035de79f5fa572b3efd7e0da/winnow-0.1.4.tar.gz" } ] }