{ "info": { "author": "Byron Mallett", "author_email": "byronated@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows :: Windows 7", "Operating System :: OS Independent", "Programming Language :: C#", "Programming Language :: Java", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Object Brokering" ], "description": "Showtime-Python\n===============\n\nWhat is this?\n-------------\n\nShowtime was designed to let multiple programs running in multiple\nlanguages talk to each other whilst trying to cut down on the clutter\nrequired in setting up connections and discovering each other.\n\nThe project originated from wanting to bypass the hassles I was having\nwhen trying to hook Ableton Live up to Unity3D using OSC. I wrote the\nfirst version of this library using Python and C# to let Unity control\nAbleton Live through its underlying Python API, without needing to use\nany MIDI or OSC whatsoever, and that eventually evolved into the Java\nand Processing ports as well.\n\nRequirements\n~~~~~~~~~~~~\n\n- Tested with Python 2.7.6 and Python 3.3.5\n\nInstallation\n------------\n\n- Using pip:\n\n ::\n\n pip install Showtime-Python\n\n- From source:\n\n ::\n\n python setup.py install\n\nNotable scripts\n~~~~~~~~~~~~~~~\n\n- Showtime/zst\\_stage.py - Creates a stage on port 6000.\n- Showtime/tests/test\\_MethodEditor.py - Commandline prompt that\n controls remote node methods directly.\n- Showtime/tests/test\\_MethodSubscriber.py - Commandline prompt that\n listens to specific messages from a remote node.\n- Showtime/tests/test\\_SinewaveWriter.py - Writes a constant sinewave\n to a remote node method.\n\nUsage\n-----\n\nSetup\n~~~~~\n\n- Set up the Stage node. This is to provide a fixed point that all\n nodes need to register their addresses and methods to upon startup,\n so that they can be discovered by other nodes. A quick way to get a\n stage running is to run the included ``zst_stage.py`` script. This\n will create a stage on port 6000.\n- Import the libraries.\n\n ::\n\n from Showtime.zst_node import *\n\n- Create a new node with a unique name and the address/port of the\n stage.\n\n ::\n\n localNode = ZstNode(\"ExampleNode\", \"tcp://127.0.0.1:6000\")\n localNode.start()\n\nExploring the stage\n~~~~~~~~~~~~~~~~~~~\n\n- Get a list of all availble nodes and their methods from the stage.\n\n ::\n\n peerList = localNode.request_node_peerlinks()\n\nListening to other nodes\n~~~~~~~~~~~~~~~~~~~~~~~~\n\n- If we want to listen to messages being sent from another node,\n subscribe to the node and assign local callback functions that will\n run when messages of that type arrive.\n\n ::\n\n remoteNode = nodeList[\"remote_node_name\"]\n localNode.subscribe_to(remoteNode)\n localNode.subscribe_to_method(remoteNode.methods[\"remote_method_name\"], callbackMethod)\n\n- The callback function needs to accept a single ZstMethod argument,\n which is the method object sent by the remote node.\n\n ::\n\n def callbackMethod(methodData):\n print(meterData.name) // Name of method\n print(meterData.node) // Name of origin node this method belongs to\n print(meterData.accessMode) // Type of method: read, write or responder\n print(meterData.args) // Arguments remote method accepts. Dictionary of Strings/Objects.\n print(meterData.output) // Output of remote method. \n\nControlling remote nodes\n~~~~~~~~~~~~~~~~~~~~~~~~\n\n- If we want to control a remote node, we have to ask it to listen to\n messages that we send its way. We also need to wait a few ms for the\n remote node to connect else it loses the first bunch of messages.\n\n ::\n\n localNode.connect_to_peer(remoteNode)\n\n- When calling a remote method, we need to provide a dictionary of\n Strings/Objects containing the arguments that we're sending.\n\n ::\n\n localNode.update_remote_method(remoteNode.methods[\"some_remote_method], {\"arg1\": 0, \"arg2\": \"some_string\"})\n\n- When working with methods where the accessmode is a responder, the\n ``update_remote_method()`` call will return a ZstMethod containing\n the output of the method. Something to be aware of is that if the\n remote node doesn't send back a response, the program may wait\n indefinitely. This will be fixed in a future release.\n\n ::\n\n result = localNode.update_remote_method(remoteNode.methods[\"some_remote_method], {\"arg1\": 0, \"arg2\": \"some_string\"})\n print(result.output)\n\nRegistering local methods\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- To register a local method for other nodes to control, you need to\n provide the method name, the accessmode, the arguments required when\n calling the method, and the name of the callback method to run. The\n callback needs to accept a ZstMethod object in order to access\n incoming arguments.\n\n::\n\n localNode.request_register_method(\"local_method\", ZstMethod.WRITE, {\"arg1\":None, \"arg2\":None}, localCallback)\n\n def localCallback(methodData):\n print(methodData.args[\"arg1\"])\n\nUpdating local methods\n~~~~~~~~~~~~~~~~~~~~~~\n\n- When we've run a local method, we need to let any listening nodes\n know that the method was called.\n\n::\n\n localNode.request_register_method(\"foo\", ZstMethod.READ)\n\n def foo(String someMessage):\n localNode.update_local_method(node.methods[\"foo\"], someMessage)\n\n- We can update local methods by name as well.\n\n::\n\n localNode.update_local_method_by_name(\"foo\", someMessage)\n\nAccessmode types\n~~~~~~~~~~~~~~~~\n\n- ``ZstMethod.READ``: Can subscribe to messages from this remote\n method, but cannot call it.\n- ``ZstMethod.WRITE``: Can call this remote method but cannot listen to\n messages it sends.\n- ``ZstMethod.RESPONDER``: Can call this remote method and receive a\n response. This is the most similar to how you would usually call a\n local method.\n\nContributing\n------------\n\nIf you want to modify/compile the library then feel free! If you do\ndecide to use this library or Showtime in general then feel free to\nflick me a message, I'd appreciate any feedback!", "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/Mystfit/Showtime", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "Showtime-Python", "package_url": "https://pypi.org/project/Showtime-Python/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/Showtime-Python/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/Mystfit/Showtime" }, "release_url": "https://pypi.org/project/Showtime-Python/1.0.6/", "requires_dist": null, "requires_python": null, "summary": "Showtime-Python allows you to connect multiple programs for live performances using nodes.", "version": "1.0.6" }, "last_serial": 1802410, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "c7303452cc17c3badf70b910ab55b4a9", "sha256": "1924b0ba37f8790bd044d3865eede5262af91f32fa0b8b616861cfa940957abc" }, "downloads": -1, "filename": "Showtime-Python-1.0.win32.exe", "has_sig": false, "md5_digest": "c7303452cc17c3badf70b910ab55b4a9", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 205310, "upload_time": "2014-08-14T11:49:11", "url": "https://files.pythonhosted.org/packages/2b/d6/40a6e6b2133a3383c006219623ac154bdb712cef814a0188ad9fabf0e018/Showtime-Python-1.0.win32.exe" }, { "comment_text": "", "digests": { "md5": "6dd7c653147a6c6134fd2541175fc8d7", "sha256": "272116e91816e92bca8f13931c8758f088c5287e46a8b914373152d03239aa7b" }, "downloads": -1, "filename": "Showtime-Python-1.0.zip", "has_sig": false, "md5_digest": "6dd7c653147a6c6134fd2541175fc8d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9718, "upload_time": "2014-08-14T11:49:05", "url": "https://files.pythonhosted.org/packages/d4/af/8d4a536bfd37b0cef2deffab3561434342055b0700db80b3bd112ff016f6/Showtime-Python-1.0.zip" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "eac98911a59eac90b49de1f35b3e9855", "sha256": "bef5368f2a3d3cd2499b1e4f0294a4fa14619e210164d5da481d874ca728ce86" }, "downloads": -1, "filename": "Showtime-Python-1.0.2.zip", "has_sig": false, "md5_digest": "eac98911a59eac90b49de1f35b3e9855", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15286, "upload_time": "2014-08-18T07:02:09", "url": "https://files.pythonhosted.org/packages/a6/f9/9a75c4714eab91aea1d9aa55b4dc64a66b4fef673287bcb03c074059ff09/Showtime-Python-1.0.2.zip" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "079998cc871cb02368be99fa93daf281", "sha256": "6d2d3332e8edfe7affe1d5bde2adfb071389aafb603b123cd4890fdc9ef070cb" }, "downloads": -1, "filename": "Showtime-Python-1.0.3.tar.gz", "has_sig": false, "md5_digest": "079998cc871cb02368be99fa93daf281", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11168, "upload_time": "2014-08-20T22:30:32", "url": "https://files.pythonhosted.org/packages/40/2a/9844ceb2b8afb9d29fbd3098f1572589b21ae8fabde47617b11baf87ab30/Showtime-Python-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "64d8a12a3dd0c71490d7fd6553213e1c", "sha256": "7baeaa788e9a2ed6fdffe8cc5858bbf5aed18bbe80e6749704e5471d6e7a07b7" }, "downloads": -1, "filename": "Showtime-Python-1.0.4.zip", "has_sig": false, "md5_digest": "64d8a12a3dd0c71490d7fd6553213e1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17815, "upload_time": "2014-08-21T09:30:58", "url": "https://files.pythonhosted.org/packages/73/88/6fba8ec767a239e9fea52a98acbd761ff8439afe02dd04ec109fef4be1ac/Showtime-Python-1.0.4.zip" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "0da7935f602625851490b2f4c3db1650", "sha256": "d1c81d1001e7dbda7f5eb49c46d472fede9072c1b90cc85bc84f2c4599e26881" }, "downloads": -1, "filename": "Showtime-Python-1.0.5.zip", "has_sig": false, "md5_digest": "0da7935f602625851490b2f4c3db1650", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21342, "upload_time": "2014-08-21T10:10:36", "url": "https://files.pythonhosted.org/packages/93/29/b46a449ab78318ae5ba9e20927a9554eaa563f36fe601e5ff5a070a89158/Showtime-Python-1.0.5.zip" } ], "1.0.5.1": [ { "comment_text": "", "digests": { "md5": "7faac517742031baef7d4ba56d17972d", "sha256": "41e8005d9ab067f8d97814547059d4f7005cac4c285b9d15474b65e38b6588a0" }, "downloads": -1, "filename": "Showtime-Python-1.0.5.1.tar.gz", "has_sig": false, "md5_digest": "7faac517742031baef7d4ba56d17972d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13080, "upload_time": "2014-08-22T05:24:36", "url": "https://files.pythonhosted.org/packages/40/1a/cd7a164b81c4ba0bc9045638e3e205c1068bc05400f59161458c9b341d1f/Showtime-Python-1.0.5.1.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "6bbc8fc391f773bb0443979d442f2c1f", "sha256": "1a8fdf0864d13924536f74c1dd61f8c11a1a8d2c64c651ce1c4c3c199cedaddc" }, "downloads": -1, "filename": "Showtime-Python-1.0.6.macosx-10.10-x86_64.exe", "has_sig": false, "md5_digest": "6bbc8fc391f773bb0443979d442f2c1f", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 83206, "upload_time": "2015-11-05T11:17:17", "url": "https://files.pythonhosted.org/packages/c3/c7/272b4563fa360b5c41e31fdd8242c9e1b3ffe9c3b60246de727fedb9de0c/Showtime-Python-1.0.6.macosx-10.10-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "972b960882fb142f0a8c8cf50d304479", "sha256": "ccc5aa1bd3c724753c35a10da60f322fae89d2a4b54b681ca44bed338cfe2be7" }, "downloads": -1, "filename": "Showtime-Python-1.0.6.tar.gz", "has_sig": false, "md5_digest": "972b960882fb142f0a8c8cf50d304479", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13356, "upload_time": "2015-11-05T11:17:11", "url": "https://files.pythonhosted.org/packages/d8/6f/7ce6b6a3b7b5b47e82dd0db7b08842e95f1ed9edb57fd6ac2599728054c2/Showtime-Python-1.0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6bbc8fc391f773bb0443979d442f2c1f", "sha256": "1a8fdf0864d13924536f74c1dd61f8c11a1a8d2c64c651ce1c4c3c199cedaddc" }, "downloads": -1, "filename": "Showtime-Python-1.0.6.macosx-10.10-x86_64.exe", "has_sig": false, "md5_digest": "6bbc8fc391f773bb0443979d442f2c1f", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 83206, "upload_time": "2015-11-05T11:17:17", "url": "https://files.pythonhosted.org/packages/c3/c7/272b4563fa360b5c41e31fdd8242c9e1b3ffe9c3b60246de727fedb9de0c/Showtime-Python-1.0.6.macosx-10.10-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "972b960882fb142f0a8c8cf50d304479", "sha256": "ccc5aa1bd3c724753c35a10da60f322fae89d2a4b54b681ca44bed338cfe2be7" }, "downloads": -1, "filename": "Showtime-Python-1.0.6.tar.gz", "has_sig": false, "md5_digest": "972b960882fb142f0a8c8cf50d304479", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13356, "upload_time": "2015-11-05T11:17:11", "url": "https://files.pythonhosted.org/packages/d8/6f/7ce6b6a3b7b5b47e82dd0db7b08842e95f1ed9edb57fd6ac2599728054c2/Showtime-Python-1.0.6.tar.gz" } ] }