{"id":21056209,"url":"https://github.com/christophercrouzet/revl","last_synced_at":"2025-05-15T23:33:07.270Z","repository":{"id":57461735,"uuid":"77588123","full_name":"christophercrouzet/revl","owner":"christophercrouzet","description":"Helps to benchmark code for Autodesk Maya.","archived":false,"fork":false,"pushed_at":"2017-05-09T04:20:40.000Z","size":70,"stargazers_count":14,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-14T12:04:16.655Z","etag":null,"topics":["autodesk","benchmark","maya","python","test"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/christophercrouzet.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-12-29T06:17:46.000Z","updated_at":"2020-10-24T00:26:44.000Z","dependencies_parsed_at":"2022-08-28T00:12:32.494Z","dependency_job_id":null,"html_url":"https://github.com/christophercrouzet/revl","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christophercrouzet%2Frevl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christophercrouzet%2Frevl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christophercrouzet%2Frevl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christophercrouzet%2Frevl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/christophercrouzet","download_url":"https://codeload.github.com/christophercrouzet/revl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254442427,"owners_count":22071864,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autodesk","benchmark","maya","python","test"],"created_at":"2024-11-19T16:49:24.719Z","updated_at":"2025-05-15T23:33:02.239Z","avatar_url":"https://github.com/christophercrouzet.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Revl\n====\n\n.. image:: https://img.shields.io/pypi/v/revl.svg\n   :target: https://pypi.python.org/pypi/revl\n   :alt: PyPI latest version\n\n.. image:: https://readthedocs.org/projects/revl/badge/?version=latest\n   :target: https://revl.readthedocs.io\n   :alt: Documentation status\n\n.. image:: https://img.shields.io/pypi/l/revl.svg\n   :target: https://pypi.python.org/pypi/revl\n   :alt: License\n\n\nRevl is a Python library that helps to benchmark code for `Autodesk Maya`_.\n\nUpon writing a piece of code for Maya, it might be interesting to know how it\nperforms **under different conditions**, such as within scenes that are large\nor small, that define a deep DAG hiearchy or a flat one, that use many node\ntypes or only a few, and so on.\n\nFollowing sets of user-provided commands, Revl can **pseudo-randomly generate\nMaya scenes** with different properties against which the behaviour of a piece\nof code can be observed.\n\nThe random nature of the process can also help revealing potential bugs by\nexposing edge cases that were not thought of, thus making it also a good tool\nfor **unit testing**. See `Wikipedia's Fuzzing page`_.\n\nNote that Revl does *not* provide any sort of profiling tool to measure\nperformances. The built-in |timeit|_ module as well as other open-source\npackages can be used for this purpose.\n\n\nFeatures\n--------\n\n* generates scenes by running commands a given total number of times.\n* fine control over the probability distribution for each command.\n* scene generations are reproducible using a fixed seed.\n* extensible with custom commands.\n* allows for fuzz testing.\n* fast (using Maya's API, not the command layer).\n\n\nUsage\n-----\n\n.. code-block:: python\n\n   \u003e\u003e\u003e import revl\n   \u003e\u003e\u003e commands = [\n   ...     (4.0, revl.createTransform,),\n   ...     (1.0, revl.createPrimitive, (), {'parent': True}),\n   ... ]\n   \u003e\u003e\u003e count = 100\n   \u003e\u003e\u003e revl.run(commands, count, seed=1.23)\n\n\nIn this example, Revl invokes a total of 100 evaluations inequally shared\nbetween the two distinct commands provided, leading to create approximatively\n80% of transforms, and 20% of primitives (plus their associated transforms).\nAlso, the primitive type is picked randomly, and each primitive's transform is\nrandomly parented under another transform from the scene, possibly creating a\nscene with a deep DAG hierarchy.\n\nSee the `Tutorial`_ section from the documentation for more detailed examples\nand explanations on how to use Revl.\n\n\nDocumentation\n-------------\n\nRead the documentation online at `revl.readthedocs.io`_ or check its source in\nthe ``doc`` directory.\n\n\nOut There\n---------\n\nProjects using Revl include:\n\n* `bana \u003chttps://github.com/christophercrouzet/bana\u003e`_\n\n\nAuthor\n------\n\nChristopher Crouzet\n\u003c`christophercrouzet.com \u003chttps://christophercrouzet.com\u003e`_\u003e\n\n\n.. |timeit| replace:: ``timeit``\n\n.. _Autodesk Maya: http://www.autodesk.com/products/maya\n.. _revl.readthedocs.io: https://revl.readthedocs.io\n.. _timeit: https://docs.python.org/library/timeit.html\n.. _Tutorial: https://revl.readthedocs.io/en/latest/tutorial.html\n.. _Wikipedia's Fuzzing page: https://en.wikipedia.org/wiki/Fuzzing\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchristophercrouzet%2Frevl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchristophercrouzet%2Frevl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchristophercrouzet%2Frevl/lists"}