{ "info": { "author": "Dmitry 'Divius' Tantsur", "author_email": "divius.inside@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: BSD License", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Object Brokering", "Topic :: System :: Distributed Computing", "Topic :: System :: Networking" ], "description": "Introduction\n=============\n\nPyCOM is simple and easy-to-use distributed component model written in Python.\nPyCOM makes different parts of your network application isolated and\nindependent, while allowing easy and straightforward interaction between them.\nPyCOM may be seen as an easy and lightweight web services replacement.\n\nIdeology highlights:\n\n- Non-intrusive design without black magic and lots of auto-generated code\n- Easily adapts to a rapidly changing environment\n- ... and matches pythonic\n `EAFP `_ approach\n- Effective, easy-to-implement and portable protocol\n- Support for binary attachments\n- Support for stateful services via HTTP-alike sessions\n- Low level enough to build your own frameworks\n- ... and still simple enough to be used as is\n- Free software (new BSD license)\n\nTechnical highlights:\n\n- Separate (potentially replaceable) *ZeroJSON* protocol implementation\n- Easily extensible core library\n- Does not required special \"container\" software\n- Introspection support for services\n- Load balancing over several services with the same interface\n- Comprehensive test suite and documentation\n- Python 2 and Python 3 support out-of-box\n\nThere is ongoing effort to create a C++ client library for PyCOM:\nhttps://bitbucket.org/divius/libpycom\n\nMain concepts\n--------------\n\nWith PyCOM you build your application as a number of *services*,\neach running in it's own process (or even on it's own computer).\nYou maintain a PyCOM *nameserver* for finding services by their names\n(by the way, nameserver itself is a service).\n\nServices provide *interfaces*, i.e. a named way of interacting with service.\nThey are somewhat similar to interfaces in e.g. Java, but note that\nPyCOM does not perform any checks on interfaces. Interface usually has\nsome amount of *methods*.\n\nServices are identified by path with parts separated by slashes,\ne.g. ``/com/foo/group/service``.\n\nInterfaces are identified by name with parts separated by dots,\ne.g. ``com.foo.my-interface``.\n\nExamples\n---------\n\nService example (module ``package1.module1``)::\n\n import pycom\n\n @pycom.interface(\"com.foo.example\")\n class MyService(pycom.Service):\n\n @pycom.method\n def bar(self, request, name, value=None):\n return {name : value}\n\nExample command line for running this service (provided nameserver is running\non ``192.168.10.1:2012``)::\n\n python -m pycom -a tcp://192.168.10.2:2013 -n tcp://192.168.10.1:2012 package1.module1\n\nExample client code for this service::\n\n import pycom\n\n context = pycom.ProxyContext(nameserver=\"tcp://192.168.10.1:2012\")\n with context.locate(\"com.foo.example\") as component:\n print component.bar(name=\"field1\", value=42)\n # Prints {\"field1\" : 42}\n print component.bar(\"field1\", value=42)\n # Prints {\"field1\" : 42}\n print component.bar(\"field1\")\n # Prints {\"field1\" : None}\n print component.introspect()\n # Prints a lot of introspection information\n\nQuick start\n------------\n\nOur requirements are:\n\n- POSIX-compatible OS (other may work)\n- `Python `_ 2.6, 2.7 or >= 3.1\n- `0MQ Python bindings `_ >= 2.1.11\n- `six `_ for Python 3 compatibility\n (maybe we'll drop it later)\n\nTo run test suite you'll also need:\n\n- `coverage.py `_\n- `unittest2 `_ (Python 2.6 only)\n- `unittest2py3k `_ (Python 3.1 only)\n\nTo test (logs will be saved in `test.log`)::\n\n $ python test.py\n\nTo build HTML documentation (requires `Sphinx `_)::\n\n $ python setup.py build_sphinx\n $ build/sphinx/html/index.html\n\nTo install from sources::\n\n $ python setup.py install\n\nor via `pip`::\n\n $ pip install pycom\n\nTo start nameserver use script::\n\n $ /usr/local/bin/pycom-nameserver\n\nYou may need to adjust nameserver configuration.\n\nDo not forget to read about known issues in the current version:\nhttp://packages.python.org/pycom/status.html#known-issues\n\nSupport\n--------\n\nPyCOM repository and issue tracker are hosted on BitBucket.\n\n Download releases: http://pypi.python.org/pypi/pycom#downloads\n\n Latest source code: https://bitbucket.org/divius/pycom/overview\n\n Report bugs: https://bitbucket.org/divius/pycom/issues\n\n Read documentation: http://www.pycom.org\n\nEnjoy =)", "description_content_type": null, "docs_url": "https://pythonhosted.org/pycom/", "download_url": "http://pypi.python.org/pypi/pycom", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.pycom.org", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "pycom", "package_url": "https://pypi.org/project/pycom/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pycom/", "project_urls": { "Download": "http://pypi.python.org/pypi/pycom", "Homepage": "http://www.pycom.org" }, "release_url": "https://pypi.org/project/pycom/0.6.0/", "requires_dist": null, "requires_python": null, "summary": "Distributed component model for Python.", "version": "0.6.0" }, "last_serial": 797063, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "27a8e9215906975d723ebd43bf15649b", "sha256": "ae75a9af9cfac069dcb1e28f993b223c9a0dfb35c7cc5efe9fe727cdfae47f32" }, "downloads": -1, "filename": "pycom-0.1.tar.gz", "has_sig": false, "md5_digest": "27a8e9215906975d723ebd43bf15649b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21936, "upload_time": "2012-01-17T22:34:17", "url": "https://files.pythonhosted.org/packages/11/6c/fd8847cf1374228be296b31f1c07fb637cb960b3a979d86c4e9f8d5d1641/pycom-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "0aa68d2076988cd5f8842686dd7b5752", "sha256": "47a759e43ea7bf8119f393c56b9dfca94cd539d4a6451c969bb81235e42facbb" }, "downloads": -1, "filename": "pycom-0.1.1.tar.gz", "has_sig": false, "md5_digest": "0aa68d2076988cd5f8842686dd7b5752", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22696, "upload_time": "2012-01-19T22:17:41", "url": "https://files.pythonhosted.org/packages/6f/d4/df299ae4b147f35d1baa89c018dd5a5c0c23896d67741c303d650c79c434/pycom-0.1.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "3dbf0c25d4caf59cd1b9f1549ccd1fa6", "sha256": "5070a8cea44b03389e80f9b85a235f84636b04921f4a474b1cd5020481a38850" }, "downloads": -1, "filename": "pycom-0.2.tar.gz", "has_sig": false, "md5_digest": "3dbf0c25d4caf59cd1b9f1549ccd1fa6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24295, "upload_time": "2012-01-27T22:37:01", "url": "https://files.pythonhosted.org/packages/80/65/976f1f20412f9a3fd0337b3a60e0c368622bf3529edfac9e41f2af3680a9/pycom-0.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "8f49a17bc653c497f207844ef2e9703d", "sha256": "b27e43038ea07c16077744f6fd832eb0a167d18b8d78448e2e31e03b32f09588" }, "downloads": -1, "filename": "pycom-0.3.0.tar.gz", "has_sig": false, "md5_digest": "8f49a17bc653c497f207844ef2e9703d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26745, "upload_time": "2012-02-02T17:01:42", "url": "https://files.pythonhosted.org/packages/4e/50/49394e9e9cd3708a71413fc07214f43ddcb49d8eb48cc1543eb9ae7abb72/pycom-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "72cb44c5c83ae6c7ec57b5bf78d2daf5", "sha256": "857b486782747f298c5874cdd3152902b06539c49d48650781998d5f876e0565" }, "downloads": -1, "filename": "pycom-0.3.1.tar.gz", "has_sig": false, "md5_digest": "72cb44c5c83ae6c7ec57b5bf78d2daf5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26827, "upload_time": "2012-02-05T16:49:34", "url": "https://files.pythonhosted.org/packages/74/11/d9309d5758434f41a33784d9139ac23676f16ff8bbd296ef8b5fdded8925/pycom-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "cf0aa158ac1fc7347fe70fcbcc13bad8", "sha256": "bec4ecd8fa3ebba216fc5c2729d60367e6ff8579bbc14f324fe71e08719dfe8b" }, "downloads": -1, "filename": "pycom-0.3.2.tar.gz", "has_sig": false, "md5_digest": "cf0aa158ac1fc7347fe70fcbcc13bad8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28229, "upload_time": "2012-02-07T19:09:06", "url": "https://files.pythonhosted.org/packages/53/c4/fcf9d328f1d184645b768721059ee0887c326a67d3346f01fb068e7c1ebf/pycom-0.3.2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "029288d61f0523b14dd5c1db8d1af74b", "sha256": "868238e12df7b0eeba153e7394e2e7706cb7d8edf184974b245ba70a4e14906f" }, "downloads": -1, "filename": "pycom-0.4.0.tar.gz", "has_sig": false, "md5_digest": "029288d61f0523b14dd5c1db8d1af74b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32154, "upload_time": "2012-02-20T19:05:44", "url": "https://files.pythonhosted.org/packages/82/59/98ffe42ee54ea37b6b30cac4a957298cdf22260b7792170d78786bcef2a4/pycom-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "8066e29cb22fbeb177906068375183c5", "sha256": "55d5f6380b00a5e8415885794a042e7253dc8059065218bc3ed52b5c4006c648" }, "downloads": -1, "filename": "pycom-0.4.1.tar.gz", "has_sig": false, "md5_digest": "8066e29cb22fbeb177906068375183c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36799, "upload_time": "2012-03-02T18:12:55", "url": "https://files.pythonhosted.org/packages/cf/e2/d9b8ae2679dd750518459f180b387e39c5ccdd1d94a6c161da234c24aad4/pycom-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "ce7429f32a4771adb69d0db72b43ee5e", "sha256": "c657bb68e3291e08f34be87d97756a5042fc274ba6070cbbd052756d6af4948c" }, "downloads": -1, "filename": "pycom-0.4.2.tar.gz", "has_sig": false, "md5_digest": "ce7429f32a4771adb69d0db72b43ee5e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44620, "upload_time": "2012-03-11T18:25:08", "url": "https://files.pythonhosted.org/packages/47/ad/fd96fae142008400bdf6f49abf50e23682dd7be1ecac96b5931b1f18c480/pycom-0.4.2.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "293279c8e7baff0a3a60f435b726ee6a", "sha256": "132826cfed6d9d6f4ee0bfeca132888c6e07fce58cb18c6b8570ea2f2ce18071" }, "downloads": -1, "filename": "pycom-0.5.0.tar.gz", "has_sig": false, "md5_digest": "293279c8e7baff0a3a60f435b726ee6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51289, "upload_time": "2012-03-29T16:15:58", "url": "https://files.pythonhosted.org/packages/53/c0/074503c01b16071896cdab55aa393938737b01ef2342097ee9e006c6f9a2/pycom-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "13b2d0e98c014a5b446e05b00da8f223", "sha256": "07068e38b31deb0b9c440f393eaff1038badf666c898d9ca823997f83ace9cb4" }, "downloads": -1, "filename": "pycom-0.5.1.tar.gz", "has_sig": false, "md5_digest": "13b2d0e98c014a5b446e05b00da8f223", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50803, "upload_time": "2012-04-12T11:29:15", "url": "https://files.pythonhosted.org/packages/5c/b3/382d0a5197491a8173a199c70f18d2c68eab9b5e8e11dce07dff26225ed7/pycom-0.5.1.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "872ebf547c170b318c7b13e51bebd774", "sha256": "be7f3a05ae8a90ad72c20e70ff56e90952a444147f7504543c28f594037d1d60" }, "downloads": -1, "filename": "pycom-0.6.0.tar.gz", "has_sig": false, "md5_digest": "872ebf547c170b318c7b13e51bebd774", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57821, "upload_time": "2012-04-28T22:21:31", "url": "https://files.pythonhosted.org/packages/1f/7d/61c969f32b24fb4b9153bcb70d589928a19e5512dae7ade83f93a3d2c1f3/pycom-0.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "872ebf547c170b318c7b13e51bebd774", "sha256": "be7f3a05ae8a90ad72c20e70ff56e90952a444147f7504543c28f594037d1d60" }, "downloads": -1, "filename": "pycom-0.6.0.tar.gz", "has_sig": false, "md5_digest": "872ebf547c170b318c7b13e51bebd774", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57821, "upload_time": "2012-04-28T22:21:31", "url": "https://files.pythonhosted.org/packages/1f/7d/61c969f32b24fb4b9153bcb70d589928a19e5512dae7ade83f93a3d2c1f3/pycom-0.6.0.tar.gz" } ] }