{ "info": { "author": "Kurt Yoder", "author_email": "kyoder@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Plugins", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Multimedia :: Graphics :: 3D Rendering", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "[![pypi](https://img.shields.io/pypi/v/PyWavefront.svg)](https://pypi.org/project/PyWavefront/)\n[![CircleCI](https://circleci.com/gh/pywavefront/PyWavefront.svg?style=svg)](https://circleci.com/gh/pywavefront/PyWavefront)\n\n
\n\n[![preview](https://raw.githubusercontent.com/pywavefront/PyWavefront/master/extras/logo.png)](#readme)\n\n
\n\n# PyWavefront\n\nPyWavefront reads Wavefront 3D object files (`something.obj`, `something.obj.gz`\nand `something.mtl`) and generates interleaved vertex data for each material ready for rendering.\n\n* Python 3.4+ is supported in 1.x versions\n* Python 2.7 is supported in 0.x versions\n\nA simple (optional) visualization module is also provided for\nrendering the object(s). The interleaved data can also be used by\nmore modern renderers thought VBOs or VAOs.\n\nCurrently the most commonly used features in [the specification](https://en.wikipedia.org/wiki/Wavefront_.obj_file) has\nbeen implemented:\n\n* Positions\n* Texture Coordinates\n* Normals\n* Vertex Color\n* Material parsing\n* Texture and texture parameters\n\nWe currently don't support parameter space vertices, line elements or smoothing groups.\nCreate an issue or pull request on github if needed features are missing.\n\nThe package is on [pypi](https://pypi.org/project/PyWavefront/)\nor can be cloned on [github](https://github.com/pywavefront/PyWavefront).\n\n```bash\npip install pywavefront\n```\n\nAlso check out the [roadmap](https://github.com/pywavefront/PyWavefront/blob/master/ROADMAP.md) for future plans.\n\n## Usage\n\nBasic example loading an obj file:\n\n```python\nimport pywavefront\nscene = pywavefront.Wavefront('something.obj')\n```\n\nA more complex example\n\n* `strict` (Default: `False`) will raise an exception if unsupported features are found in the obj or mtl file\n* `encoding` (Default: `utf-8`) of the obj and mtl file(s)\n* `create_materials` (Default: `False`) will create materials if mtl file is missing or obj file references non-existing materials\n* `collect_faces` (Default: `False`) will collect triangle face data for every mesh. In case faces with more than three vertices are specified they will be triangulated. See the documentation of `ObjParser#consume_faces()` in [`obj.py`](https://github.com/pywavefront/PyWavefront/blob/master/pywavefront/obj.py).\n* `parse` (Default: `True`) decides if parsing should start immediately.\n* `cache` (Default: `False`) writes the parsed geometry to a binary file for faster loading in the future\n\n```python\nimport pywavefront\nscene = pywavefront.Wavefront('something.obj', strict=True, encoding=\"iso-8859-1\", parse=False)\nscene.parse() # Explicit call to parse() needed when parse=False\n\n# Iterate vertex data collected in each material\nfor name, material in scene.materials.items():\n # Contains the vertex format (string) such as \"T2F_N3F_V3F\"\n # T2F, C3F, N3F and V3F may appear in this string\n material.vertex_format\n # Contains the vertex list of floats in the format described above\n material.vertices\n # Material properties\n material.diffuse\n material.ambient\n material.texture\n # ..\n```\n\n## Binary Cache\n\nWhen ``cache=True`` the interleaved vertex data is written\nas floats to a ``.bin`` file after the file is loaded. A json\nfile is also generated describing the contents of the binary file.\nThe binary file will be loaded the next time we attempt to load\nthe obj file reducing the loading time significantly.\n\nTests have shown loading time reduction by 10 to 100 times\ndepending on the size and structure of the original obj file.\n\nLoading ``myfile.obj`` will generate the following files in the\nsame directory.\n\n```txt\nmyfile.obj.bin\nmyfile.obj.json\n```\n\nJson file example:\n\n```json\n{\n \"created_at\": \"2018-07-16T14:28:43.451336\",\n \"version\": \"0.1\",\n \"materials\": [\n \"lost_empire.mtl\"\n ],\n \"vertex_buffers\": [\n {\n \"material\": \"Stone\",\n \"vertex_format\": \"T2F_N3F_V3F\",\n \"byte_offset\": 0,\n \"byte_length\": 5637888\n },\n {\n \"material\": \"Grass\",\n \"vertex_format\": \"T2F_N3F_V3F\",\n \"byte_offset\": 5637888,\n \"byte_length\": 6494208\n }\n ]\n}\n```\n\nThese files will **not be recreated until you delete them**.\nThe bin file is also compressed with gzip to greatly reduce size.\n\n## Visualization\n\n[Pyglet](http://www.pyglet.org/) is required to use the visualization module.\n\n```bash\npip install pyglet\n```\n\nExample:\n\n```python\nimport pywavefront\nfrom pywavefront import visualization\n\n[create a window and set up your OpenGl context]\nobj = pywavefront.Wavefront('something.obj')\n\n[inside your drawing loop]\nvisualization.draw(obj)\n```\n\n## Logging\n\nThe default log level is `ERROR`. This is configurable including overriding the formatter.\n\n```python\nimport logging\nimport pywavefront\n\npywavefront.configure_logging(\n logging.DEBUG,\n formatter=logging.Formatter('%(name)s-%(levelname)s: %(message)s')\n)\n```\n\n### Examples\n\nThe [examples](https://github.com/pywavefront/PyWavefront/tree/master/examples)\ndirectory contains some basic examples using the `visualization` module and further\ninstructions on how to run them.\n\n### Generating a Wavefront file with Blender\n\nThe following presumes you are using [Blender](http://www.blender.org/) to generate your mesh:\n\n* Using Blender, create a mesh with a UV-mapped texture. The UV-mapping is important!\n If it is working properly, you will see the texture applied within Blender's 3d view.\n* Export the mesh from Blender using the Wavefront format, including normals.\n* Reference your `*.obj` file as in the pywavefront example above.\n\n## Tests\n\nAll tests can be found in the `tests` directory. To run the tests:\n\n```bash\n# Install pywavefront in develop mode\npython setup.py develop\n\n# Install required packages for running tests\npip install -r test-requirements.txt\n\n# Run all tests\npytest\n\n# Optionally specific tests modules can be runned separately\npytest tests/test_parser.py\n```\n\n## Community\n\nPyWavefront Discord server : https://discord.gg/h3Rh4QN\n\n## Owners & Maintainers\n\n* Einar Forselv ([@einarf](https://github.com/einarf)) - Main Contact\n* Kurt Yoder ([@greenmoss](https://github.com/greenmoss/)) - Backup\n\n## Contributors\n\nIn alphabetical order:\n\n* [ComFreek](https://github.com/ComFreek)\n* Daniel Coelho [1danielcoelho](https://github.com/1danielcoelho)\n* [@dav92lee](https://github.com/dav92lee)\n* Jerek Shoemaker ([intrepid94](https://github.com/intrepid94))\n* [Marxlp](https://github.com/Marxlp)\n* Mathieu Lamarre\n* [Oliv4945](https://github.com/Oliv4945)\n* Patrik Huber ([patrikhuber](https://github.com/patrikhuber))\n* S\u00c3\u00a9rgio Agostinho ([SergioRAgostinho](https://github.com/SergioRAgostinho))\n* Zohar Jackson\n* hkarrson ([hkarrson](https://github.com/hkarrson))\n\n## Project History\n\nPyWavefront was originally started by @greenmoss (Kurt Yoder) in 2013.\nHe was the sole maintainer of the project until February 2019 when\nthe PyWavefront Maintainers organization was created adding @einarf\n(Einar Forselv) as an additional owner and maintainer of the project.\n\nLicense\n-------\n\nPyWavefront is [BSD-licensed](https://github.com/pywavefront/PyWavefront/blob/master/LICENSE)\n\n\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/pywavefront/PyWavefront", "keywords": "", "license": "BSD", "maintainer": "Einar Forselv", "maintainer_email": "eforselv@gmail.com", "name": "PyWavefront", "package_url": "https://pypi.org/project/PyWavefront/", "platform": "", "project_url": "https://pypi.org/project/PyWavefront/", "project_urls": { "Homepage": "https://github.com/pywavefront/PyWavefront" }, "release_url": "https://pypi.org/project/PyWavefront/1.3.3/", "requires_dist": [ "pyglet ; extra == 'visualization'" ], "requires_python": ">=3.4", "summary": "Python library for importing Wavefront .obj files", "version": "1.3.3", "yanked": false, "yanked_reason": null }, "last_serial": 8865567, "releases": { "0.1": [], "0.1.1": [], "0.1.2": [ { "comment_text": "", "digests": { "md5": "bd99e8700f87671d4cfb06a4ec8be077", "sha256": "c443be6cb8e78b66a87653ecaa0f01d0644f25a10040e7ed983641be0655fc27" }, "downloads": -1, "filename": "PyWavefront-0.1.2.tar.gz", "has_sig": false, "md5_digest": "bd99e8700f87671d4cfb06a4ec8be077", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7502, "upload_time": "2016-09-03T16:36:02", "upload_time_iso_8601": "2016-09-03T16:36:02.839640Z", "url": "https://files.pythonhosted.org/packages/e2/4d/b970f52bb760899f16639827887d9c93f1b5590db7863f81e1ae2f1d985e/PyWavefront-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "f5ad54119b6ead5cb47ef11ba93f27ac", "sha256": "78b8c693b73b334f3fbbf521d2c8c9946705ed8877add8892d4e0e33a8609017" }, "downloads": -1, "filename": "PyWavefront-0.1.3.tar.gz", "has_sig": false, "md5_digest": "f5ad54119b6ead5cb47ef11ba93f27ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7503, "upload_time": "2017-01-28T17:28:03", "upload_time_iso_8601": "2017-01-28T17:28:03.248493Z", "url": "https://files.pythonhosted.org/packages/42/4f/c1561fa7bc343bee56f85c7891fa282f21915ee34e88026b8f157f9602b6/PyWavefront-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "377d95602f3d732b4084a94bc09f5ee7", "sha256": "4dbdb5de4593657fcda55df796ed0e907002acc71712246d566e9d15538389ef" }, "downloads": -1, "filename": "PyWavefront-0.1.4.tar.gz", "has_sig": false, "md5_digest": "377d95602f3d732b4084a94bc09f5ee7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8071, "upload_time": "2017-01-28T18:34:16", "upload_time_iso_8601": "2017-01-28T18:34:16.751479Z", "url": "https://files.pythonhosted.org/packages/59/44/28215f561e26ea54f2ddbccb2949bf2bc8205e213e9ded2dfd2cd866b094/PyWavefront-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "01d1c3e144367ba69d7946d38790299e", "sha256": "91c13679b4ae5b2dfa5f01c1516d787001d6a4d9e44082c0863ee7bbd0cd7611" }, "downloads": -1, "filename": "PyWavefront-0.1.5.tar.gz", "has_sig": false, "md5_digest": "01d1c3e144367ba69d7946d38790299e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8114, "upload_time": "2017-04-02T16:31:17", "upload_time_iso_8601": "2017-04-02T16:31:17.410001Z", "url": "https://files.pythonhosted.org/packages/9e/f0/fcbafaceb54f101e965fc23fed31d962b9060667e8a3ccc202563b2135a4/PyWavefront-0.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "cb489e900210176bd7b58c5ec29d4ab7", "sha256": "5d2c1b511614f53a761fde7ec1f92824526afe02503b98b84e595c26c6daf275" }, "downloads": -1, "filename": "PyWavefront-0.1.6.tar.gz", "has_sig": false, "md5_digest": "cb489e900210176bd7b58c5ec29d4ab7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9009, "upload_time": "2018-02-26T20:45:32", "upload_time_iso_8601": "2018-02-26T20:45:32.805285Z", "url": "https://files.pythonhosted.org/packages/b3/d1/95d37c7d7f094125e70b9d29549ada318e59859c1aec1d5558bbd571e547/PyWavefront-0.1.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "c8ae9c2a797692607e498eefc8b07c6e", "sha256": "470b5ff0e87162321a5acf88d9a9267a06728a481106e33b9102a48df78550ff" }, "downloads": -1, "filename": "PyWavefront-0.1.7.tar.gz", "has_sig": false, "md5_digest": "c8ae9c2a797692607e498eefc8b07c6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9249, "upload_time": "2018-04-21T19:32:50", "upload_time_iso_8601": "2018-04-21T19:32:50.858561Z", "url": "https://files.pythonhosted.org/packages/f1/fd/9653941ef6d6a88689d503b60539ce1d8d738a994d00903e6212068c964f/PyWavefront-0.1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "6448e1dd51848f47a68a8b8dfb5bf372", "sha256": "62385c553d46348fd39ff65ac4fce14e6b209699bf71556058b30b50aa83be91" }, "downloads": -1, "filename": "PyWavefront-0.2.0.tar.gz", "has_sig": false, "md5_digest": "6448e1dd51848f47a68a8b8dfb5bf372", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10098, "upload_time": "2018-05-23T22:54:26", "upload_time_iso_8601": "2018-05-23T22:54:26.530531Z", "url": "https://files.pythonhosted.org/packages/fc/d1/fdbf33c15601a1217eb84df20148d29e93765933fadd4daa9f1c93bc4dac/PyWavefront-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "c73c1ff95325c62bbf4de2081accc7c8", "sha256": "38400405f6086520c3e0585d4562521f1b8868f239d4ba89ae4e00a38d043a0a" }, "downloads": -1, "filename": "PyWavefront-0.3.0.tar.gz", "has_sig": false, "md5_digest": "c73c1ff95325c62bbf4de2081accc7c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12641, "upload_time": "2018-06-03T01:51:55", "upload_time_iso_8601": "2018-06-03T01:51:55.413586Z", "url": "https://files.pythonhosted.org/packages/63/ec/97b14c37e0cdb28b1b84b30be822577fc745f53ed74f197abce3e3b9b632/PyWavefront-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "dae72ef770d93f4c89ea76d68f1a61e2", "sha256": "77af455660e186fb9a6cb82c9292e701357f8b6ebaa97774c6a31452001b8df3" }, "downloads": -1, "filename": "PyWavefront-0.3.1.tar.gz", "has_sig": false, "md5_digest": "dae72ef770d93f4c89ea76d68f1a61e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15094, "upload_time": "2018-06-10T18:35:02", "upload_time_iso_8601": "2018-06-10T18:35:02.916068Z", "url": "https://files.pythonhosted.org/packages/f2/7e/8cbc34ed2b9030b15467f11e9f83cb6dd50b3379c8ff2130bf2fa36303fc/PyWavefront-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "0cb6fa58877fea7736b8785f5fb95a80", "sha256": "1eca5e0d85132b44bf95adb7fc68828185edb9744793d42987e4c59507d92326" }, "downloads": -1, "filename": "PyWavefront-0.3.2.tar.gz", "has_sig": false, "md5_digest": "0cb6fa58877fea7736b8785f5fb95a80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15700, "upload_time": "2018-06-17T21:20:32", "upload_time_iso_8601": "2018-06-17T21:20:32.096787Z", "url": "https://files.pythonhosted.org/packages/6f/32/2747da8293bf94818220f23ab0aed301d322ae5f9d75ba3e224c5cb6899d/PyWavefront-0.3.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "2aed9460427d82abbd640580a22a500c", "sha256": "d54458fd58a66601763700f4e85cd14b0fc94b34b123182aa3086c9b8286e22b" }, "downloads": -1, "filename": "PyWavefront-0.4.0-py2-none-any.whl", "has_sig": false, "md5_digest": "2aed9460427d82abbd640580a22a500c", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 23774, "upload_time": "2018-07-20T20:17:26", "upload_time_iso_8601": "2018-07-20T20:17:26.824500Z", "url": "https://files.pythonhosted.org/packages/e9/82/7542cdd3030c89535874acbcf2aeea0faf895c1f2c4afe8c62da25e75c06/PyWavefront-0.4.0-py2-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "7c02a38099bef7df71c30935020c0a4f", "sha256": "b683080fdb62ebf55f3f4d1cd1b573efec22e3c25bb90e65aed120a5ac1da6f5" }, "downloads": -1, "filename": "PyWavefront-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7c02a38099bef7df71c30935020c0a4f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23790, "upload_time": "2018-07-21T16:02:19", "upload_time_iso_8601": "2018-07-21T16:02:19.982122Z", "url": "https://files.pythonhosted.org/packages/46/22/e337c8e7cf3fb9df27f277d34e832eb9c91494a1f9d01fe88c6257d6f816/PyWavefront-0.4.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "227d47117893b3f3446fa4e2b351c894", "sha256": "4874b141b948eb6a6dbbcd8481f0ada824ebc4a849a63eb33da0a040dfe30f68" }, "downloads": -1, "filename": "PyWavefront-0.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "227d47117893b3f3446fa4e2b351c894", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24305, "upload_time": "2018-08-17T00:43:16", "upload_time_iso_8601": "2018-08-17T00:43:16.492224Z", "url": "https://files.pythonhosted.org/packages/f0/a3/6ca004f861af7775dd666ea1fc537a1ce90f2ae5afeac5525eb7e43a29d9/PyWavefront-0.4.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "b0a4981abc9752aedb92fa2c80000390", "sha256": "757fe8ee256498641a27f626b2a86ff08e432647bf21f890bf5e32b4ee067da8" }, "downloads": -1, "filename": "PyWavefront-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b0a4981abc9752aedb92fa2c80000390", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25412, "upload_time": "2018-08-17T15:04:09", "upload_time_iso_8601": "2018-08-17T15:04:09.743522Z", "url": "https://files.pythonhosted.org/packages/cc/d0/39dad65336b592ea70530ae79b03ed7e4dea622aa7771d3b41a92953d94b/PyWavefront-1.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "8a7e16e85bd9aba960f8eb1ba571e6e5", "sha256": "a463b6362431046ed8bce7225a12a2e5ee0ee6110a3222a80149ce46441c90b0" }, "downloads": -1, "filename": "PyWavefront-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8a7e16e85bd9aba960f8eb1ba571e6e5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25425, "upload_time": "2018-11-01T02:54:13", "upload_time_iso_8601": "2018-11-01T02:54:13.181076Z", "url": "https://files.pythonhosted.org/packages/83/49/2674c3c219898de77a1c7c4f7860d460c08f46afc65160ae191b9e62c11a/PyWavefront-1.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "6a2749f2c1ce878b08843a85b864e081", "sha256": "9ae382fac2469be811ef5a310560d6c90f217cd78d842865be14534aec4d7b7d" }, "downloads": -1, "filename": "PyWavefront-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "6a2749f2c1ce878b08843a85b864e081", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25434, "upload_time": "2019-01-17T02:24:57", "upload_time_iso_8601": "2019-01-17T02:24:57.195706Z", "url": "https://files.pythonhosted.org/packages/51/6a/833459aad7493c7e1fb4ed4aab776287cd7f94991e3193479c854e6575b9/PyWavefront-1.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "59a7240bbe79aa56c2ce7341416d7309", "sha256": "0210e4a6b5da3680053ca96d6e04f1dec36b71ab47d1ed8356c0d8beea1065b1" }, "downloads": -1, "filename": "PyWavefront-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "59a7240bbe79aa56c2ce7341416d7309", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 26628, "upload_time": "2019-06-10T18:36:05", "upload_time_iso_8601": "2019-06-10T18:36:05.821246Z", "url": "https://files.pythonhosted.org/packages/de/94/e32c2c2d22ad61c087e8b0e7b20c7398ecd1105b017095ee6996ce460a0f/PyWavefront-1.0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "7fa13782d9a46d8384a04175bb2928d4", "sha256": "a1deabbbb2ad45ba058e116c4e69edbb064a44ca30b326697efbdb31f3c916c4" }, "downloads": -1, "filename": "PyWavefront-1.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "7fa13782d9a46d8384a04175bb2928d4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 26664, "upload_time": "2019-07-04T18:19:03", "upload_time_iso_8601": "2019-07-04T18:19:03.569660Z", "url": "https://files.pythonhosted.org/packages/69/bd/59f72f43412a7873afb7e6d64e94b02bb6edf45e3a0c808d8f8bc53dda2c/PyWavefront-1.0.5-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "4b52b46159ae78fe40c3e6caf0764918", "sha256": "25048c7d18bb4b77a9a7d16b8aa0b4ce8e8aa80a656d0b52184796a5f646cc2d" }, "downloads": -1, "filename": "PyWavefront-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4b52b46159ae78fe40c3e6caf0764918", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 26623, "upload_time": "2019-07-18T19:45:36", "upload_time_iso_8601": "2019-07-18T19:45:36.979505Z", "url": "https://files.pythonhosted.org/packages/b6/d3/7b244e637eff93e7865f0b97e8761cb69271cea3de7ee7f77ea1c6901e50/PyWavefront-1.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "7162ffbf0e2a47cd30a33c5500fdff57", "sha256": "87f7f0bab3acc729a57867d5634e38e894efc7bc642af621dd631dff27135f71" }, "downloads": -1, "filename": "PyWavefront-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7162ffbf0e2a47cd30a33c5500fdff57", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 27529, "upload_time": "2019-08-27T21:00:48", "upload_time_iso_8601": "2019-08-27T21:00:48.166956Z", "url": "https://files.pythonhosted.org/packages/eb/28/9bb6c0b2e41a14eb106a5d33bdd7de2ddf7726ac7f93c85fd1182ed8ff6c/PyWavefront-1.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "0107243e17fd58d7a3ab9df861cfde8f", "sha256": "a8892347f7e3fee7c5daf37a6a2a1fc2b43cecaa57811daef169a77ab9e15296" }, "downloads": -1, "filename": "PyWavefront-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0107243e17fd58d7a3ab9df861cfde8f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 28636, "upload_time": "2019-10-21T21:42:48", "upload_time_iso_8601": "2019-10-21T21:42:48.679880Z", "url": "https://files.pythonhosted.org/packages/3f/99/6d6a7559360939f5726aa08725fcf39a513594d8288cdf4e59f64023f5f7/PyWavefront-1.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "5f98572835250052ca8d4d0e6480bbab", "sha256": "1fa194f7b379b78813cf1f81785d224bbfe58fa3ebc1a2f953cdafc42553a6b9" }, "downloads": -1, "filename": "PyWavefront-1.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5f98572835250052ca8d4d0e6480bbab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 28634, "upload_time": "2020-01-10T11:58:44", "upload_time_iso_8601": "2020-01-10T11:58:44.478634Z", "url": "https://files.pythonhosted.org/packages/76/dc/e49e36584fae801f69a89a6c3339835851f4a1463ad4b8a4623d81e9e44c/PyWavefront-1.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "488470612f19200e35b4287ec17e0065", "sha256": "8433131b7086aed5734c500febd1a0cb433bbad7cc61b43499a3ffea9ca8c52a" }, "downloads": -1, "filename": "PyWavefront-1.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "488470612f19200e35b4287ec17e0065", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 28829, "upload_time": "2020-03-05T19:56:09", "upload_time_iso_8601": "2020-03-05T19:56:09.437748Z", "url": "https://files.pythonhosted.org/packages/bf/92/77032443ec6e71b08c68370dabb23c328532bd8cde1ba0c18e61618a45b4/PyWavefront-1.3.2-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "fb87b53d8e143a7d0f057c1ca4575f4f", "sha256": "ec79cadd046b168434b01031e574f4105f821d06cb8cf754801e4dc18076bbeb" }, "downloads": -1, "filename": "PyWavefront-1.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "fb87b53d8e143a7d0f057c1ca4575f4f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 28842, "upload_time": "2020-12-10T04:21:56", "upload_time_iso_8601": "2020-12-10T04:21:56.711087Z", "url": "https://files.pythonhosted.org/packages/fe/f2/db25754f3d7f948e1cb7191a393284e29bc2497dae9d8456cbf25ddac671/PyWavefront-1.3.3-py3-none-any.whl", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fb87b53d8e143a7d0f057c1ca4575f4f", "sha256": "ec79cadd046b168434b01031e574f4105f821d06cb8cf754801e4dc18076bbeb" }, "downloads": -1, "filename": "PyWavefront-1.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "fb87b53d8e143a7d0f057c1ca4575f4f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 28842, "upload_time": "2020-12-10T04:21:56", "upload_time_iso_8601": "2020-12-10T04:21:56.711087Z", "url": "https://files.pythonhosted.org/packages/fe/f2/db25754f3d7f948e1cb7191a393284e29bc2497dae9d8456cbf25ddac671/PyWavefront-1.3.3-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }