{ "info": { "author": "Dmitry Orlov", "author_email": "me@mosquito.su", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: MacOS", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development", "Topic :: Software Development :: Libraries" ], "description": ".. image:: https://api.travis-ci.org/mosquito/sonya.svg?branch=master\n :target: https://travis-ci.org/mosquito/sonya\n :height: 95 px\n :width: 215 px\n :alt: Sophia Library\n\n.. image:: https://img.shields.io/pypi/v/sonya.svg\n :target: https://pypi.python.org/pypi/sonya/\n :alt: Latest Version\n\n.. image:: https://img.shields.io/pypi/wheel/sonya.svg\n :target: https://pypi.python.org/pypi/sonya/\n\n.. image:: https://img.shields.io/pypi/pyversions/sonya.svg\n :target: https://pypi.python.org/pypi/sonya/\n\n.. image:: https://img.shields.io/pypi/l/sonya.svg\n :target: https://pypi.python.org/pypi/sonya/\n\n.. _Sophia embedded database: http://sophia.systems/\n\nSonya\n=====\n\n`sonya`, fast Python bindings for `Sophia embedded database`_, v2.2.\n\n\nAbout sonya:\n++++++++++++\n\n* Written in Cython for speed and low-overhead\n* Clean, memorable APIs\n* Extensive support for Sophia's features\n* Python 2 **and** Python 3 support\n* No 3rd-party dependencies besides Cython (for python>3)\n\n\nAbout Sophia:\n+++++++++++++\n\n.. image:: http://sophia.systems/logo.png\n :target: http://sophia.systems/\n :alt: Sophia Library\n\n\n* Document store\n* ACID transactions\n* MVCC, optimistic, non-blocking concurrency with multiple readers and writers.\n* Multiple databases per environment\n* Multiple- and single-statement transactions across databases\n* Prefix searches\n* Automatic garbage collection\n* Hot backup\n* Compression\n* Multi-threaded compaction\n* `mmap` support, direct I/O support\n* APIs for variety of statistics on storage engine internals\n* BSD licensed\n\n\nSome ideas of where Sophia might be a good fit:\n\n* Running on application servers, low-latency / high-throughput\n* Time-series\n* Analytics / Events / Logging\n* Full-text search\n* Secondary-index for external data-store\n\nLimitations:\n++++++++++++\n\n.. _open an issue: https://github.com/mosquito/sonya/issues/new\n\n* Not tested on Windows.\n\nIf you encounter any bugs in the library, please `open an issue`_,\nincluding a description of the bug and any related traceback.\n\nInstallation\n------------\n\n.. _sophia: http://sophia.systems\n.. _Cython: http://cython.org\n.. _GitHub: https://github.com/mosquito/sonya\n.. _PyPi: https://pypi.python.org/pypi/sonya/\n\nThe sophia_ sources are bundled with the `sonya` source\ncode, so the only thing you need to install is Cython_.\nYou can install from GitHub_ or from PyPi_.\n\nPip instructions:\n\n.. code-block:: bash\n\n $ pip install Cython # Optional\n $ pip install sonya\n\n\nOr to install the latest code from master:\n\n.. code-block:: bash\n\n $ pip install Cython # Required\n $ pip install git+https://github.com/mosquito/sonya#egg=sonya\n\n\nGit instructions:\n\n.. code-block:: bash\n\n $ pip install Cython\n $ git clone https://github.com/mosquito/sonya\n $ cd sonya\n $ python setup.py build\n $ python setup.py install\n\n\nTo run the tests:\n\n.. code-block:: python\n\n $ pip install pytest\n $ pytest tests\n\n\nOverview\n--------\n\n.. _Sophia storage engine documentation: http://sophia.systems/v2.2/\n\nSonya\naddition to normal dictionary operations, you can read slices of data that are\nreturned efficiently using cursors. Similarly, bulk writes using `update()` use\nan efficient, atomic batch operation.\n\nDespite the simple APIs, Sophia has quite a few advanced features. There is too\nmuch to cover everything in this document, so be sure to check out the official\n`Sophia storage engine documentation`_.\n\nThe next section will show how to perform common actions with `sonya`.\n\nUsing Sonya\n-----------\n\nLet's begin by import `sonya` and creating an environment. The environment\ncan host multiple databases, each of which may have a different schema. In this\nexample our database will store python objects as the key and value.\nFinally we'll open the environment so we can start storing and retrieving data.\n\n.. code-block:: python\n\n from sonya import Environment, fields, Schema\n\n\n class DictSchema(Schema):\n key = fields.PickleField(index=0)\n value = fields.PickleField()\n\n\n env = Environment('/tmp/test-env')\n db = env.database('test-database', DictSchema(), compression='zstd')\n env.open()\n\n document = db.document(key='foo', value=[1, 2, 3, 'bar'])\n\n # Insert a document\n db.set(document)\n\n print(db.get(key='foo'))\n # {'value': [1, 2, 3, 'bar'], 'key': 'foo'}\n\n\nCRUD operations\n+++++++++++++++\n\nSonya\n\n.. code-block:: python\n\n from sonya import Environment, fields, Schema\n\n\n class DictSchema(Schema):\n key = fields.PickleField(index=0)\n value = fields.PickleField()\n\n\n env = Environment('/tmp/test-env')\n db = env.database('test-database', DictSchema(), compression='zstd')\n env.open()\n\n document = db.document(key='foo', value=[1, 2, 3, 'bar'])\n\n # Create a document\n db.set(document)\n\n # Read document\n document = db.get(key='foo')\n\n # Update the document\n document = db.document(key='foo', value=None)\n db.set(document)\n\n # Delete the document\n document = db.document(key='foo', value=None)\n db.delete(key='foo')\n\n # Iterate through the database\n for document in db.cursor():\n print(document)\n\n # Delete multiple documents\n # fastest method for remove multiple documents from database\n db.delete_many(order='>=')\n\n\nFetching ranges (Cursors)\n+++++++++++++++++++++++++\n\n\nBecause Sophia is an ordered data-store, performing ordered range scans is\nefficient. To retrieve a range of key-value pairs with Sonya\ndictionary lookup with a `slice` instead.\n\nFor finer-grained control over iteration, or to do prefix-matching, Sonya\nprovides a cursor interface.\n\nThe `cursor()` method accepts special keyword parameter `order` and all\nkey fields:\n\n* `order` (default=`>=`) -- semantics for matching the start key and ordering\n results.\n\n\n.. code-block:: python\n\n from sonya import Environment, fields, Schema\n\n\n class IntSchema(Schema):\n key = fields.UInt32Field(index=0)\n value = fields.PickleField()\n\n\n env = Environment('/tmp/test-env')\n db = env.database('test-integer-db', IntSchema(), compression='zstd')\n env.open()\n\n\n with db.transaction() as tx:\n for i in range(10000):\n tx.set(db.document(key=i, value=None))\n\n # Iterate through the database\n for document in db.cursor(order='>=', key=9995):\n print(document)\n\n # {'key': 9995, 'value': None}\n # {'key': 9996, 'value': None}\n # {'key': 9997, 'value': None}\n # {'key': 9998, 'value': None}\n # {'key': 9999, 'value': None}\n\n\nFor prefix search use a part of the key and order:\n\n.. code-block:: python\n\n from sonya import Environment, fields, Schema\n\n\n class StringSchema(Schema):\n key = fields.StringField(index=0)\n value = fields.PickleField()\n\n\n env = Environment('/tmp/test-env')\n db = env.database('test-string-db', IntSchema(), compression='zstd')\n env.open()\n\n\n with db.transaction() as tx:\n for i in range(10000):\n tx.set(db.document(key=str(i), value=None))\n\n # Iterate through the database\n for document in db.cursor(order='>=', key='999'):\n print(document)\n\n # {'value': None, 'key': '999'}\n # {'value': None, 'key': '9990'}\n # {'value': None, 'key': '9991'}\n # {'value': None, 'key': '9992'}\n # {'value': None, 'key': '9993'}\n # {'value': None, 'key': '9994'}\n # {'value': None, 'key': '9995'}\n # {'value': None, 'key': '9996'}\n # {'value': None, 'key': '9997'}\n # {'value': None, 'key': '9998'}\n # {'value': None, 'key': '9999'}\n\n\nDeleting multiple documents\n+++++++++++++++++++++++++++\n\nSonya provides delete_many method. This method is fastest option when\nyou want to remove multiple documents from the database. The method\nhas cursor-like interface. The whole operation will be processed\nin the one transaction.\n\nThe method returns number of affected rows.\n\n.. code-block:: python\n\n from sonya import Environment, fields, Schema\n\n\n class IntSchema(Schema):\n key = fields.UInt32Field(index=0)\n value = fields.PickleField()\n\n\n env = Environment('/tmp/test-env')\n db = env.database('test-integer-db', IntSchema(), compression='zstd')\n env.open()\n\n\n with db.transaction() as tx:\n for i in range(10000):\n tx.set(db.document(key=i, value=None))\n\n # returns the number of affected rows\n db.delete_many(order='>=', key=9995):\n\n\nDocument count\n++++++++++++++\n\nThe Database objects has a `__len__` method. Please avoid to use it\nfor any big database, it iterates and count the documents each time\n(faster then using `len(list(db.cursor()))` but still has O(n) complexity).\n\n\n.. code-block:: python\n\n from sonya import Environment, fields, Schema\n\n\n class IntSchema(Schema):\n key = fields.UInt32Field(index=0)\n value = fields.PickleField()\n\n\n env = Environment('/tmp/test-env')\n db = env.database('test-integer-db', IntSchema(), compression='zstd')\n env.open()\n\n\n with db.transaction() as tx:\n for i in range(10000):\n tx.set(db.document(key=i, value=None))\n\n print(len(db))\n # 10000\n\n\nTransactions\n++++++++++++\n\nSophia supports ACID transactions. Even better, a single transaction can cover\noperations to multiple databases in a given environment.\n\nExample usage:\n\n.. code-block:: python\n\n class Users(Schema):\n name = fields.StringField(index=0)\n surname = fields.StringField(index=1)\n age = fields.UInt8Field()\n\n\n with users.transaction() as tx:\n tx.set(users.document(name='Jane', surname='Doe', age=19))\n tx.set(users.document(name='John', surname='Doe', age=18))\n\n # Raises LookupError\n db.get(name='John', surname='Doe')\n\n\nMultiple transactions are allowed to be open at the same time, but if there are\nconflicting changes, an exception will be thrown when attempting to commit the\noffending transaction.\n\n\nConfiguring and Administering Sophia\n------------------------------------\n\n.. _configuration document: http://sophia.systems/v2.2/conf/sophia.html\n\nSophia can be configured using special properties on the `Sophia` and\n`Database` objects. Refer to the `configuration document`_ for the details\non the available options, including whether they are read-only, and the\nexpected data-type.\n\nFor example, to query Sophia's status, you can use the `status` property, which\nis a readonly setting returning a string:\n\n.. code-block:: python\n\n >>> print(env['sophia.status'])\n \"online\"\n\n\nOther properties can be changed by assigning a new value to the property. For\nexample, to read and then increase the number of threads used by the scheduler:\n\n.. code-block:: python\n\n >>> env['scheduler.threads'] = env['scheduler.threads'] + 2\n >>> env.open()\n >>> print(env['scheduler.threads'])\n 8\n >>> print(dict(env))\n {'db.test-string-db.stat.cursor_latency': '0 0 0.0', ...}\n\n\n.. _documentation: http://sophia.systems/v2.2/conf/sophia.html\n\nRefer to the documentation_ for complete lists of settings.\nDotted-paths are translated into underscore-separated attributes.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "sonya", "package_url": "https://pypi.org/project/sonya/", "platform": "", "project_url": "https://pypi.org/project/sonya/", "project_urls": null, "release_url": "https://pypi.org/project/sonya/0.6.6/", "requires_dist": [ "six", "py2-ipaddress; python_version < \"3\"", "enum34; python_version < \"3\"", "Cython; extra == 'develop'", "pytest; extra == 'develop'", "backports.tempfile; extra == 'develop'", "msgpack-python; extra == 'develop'", "msgpack-python; extra == 'msgpack'" ], "requires_python": ">=2.7.*, <4", "summary": "Python bindings for the sophia database.", "version": "0.6.6" }, "last_serial": 3997358, "releases": { "0.6.6": [ { "comment_text": "", "digests": { "md5": "18b79f6145af4a3d32079c907b25b7a7", "sha256": "f2d7ef913b4346ec48e307119582490397eabc48c3907971a396303aa199c914" }, "downloads": -1, "filename": "sonya-0.6.6-cp27-cp27m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "18b79f6145af4a3d32079c907b25b7a7", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": ">=2.7.*, <4", "size": 1227729, "upload_time": "2018-05-03T22:08:32", "url": "https://files.pythonhosted.org/packages/46/aa/b462b54c7c5bfe7213dda607abf18185f1e2ad946d15e859e672aa220eca/sonya-0.6.6-cp27-cp27m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "8d7f1b70236ad518d65d6abd15249fa8", "sha256": "01340ebe15b3576aaeaf2ae046f840cb96e40d8249819fecd97aabb31425c318" }, "downloads": -1, "filename": "sonya-0.6.6-cp34-cp34m-macosx_10_6_intel.whl", "has_sig": false, "md5_digest": "8d7f1b70236ad518d65d6abd15249fa8", "packagetype": "bdist_wheel", "python_version": "cp34", "requires_python": ">=2.7.*, <4", "size": 1520468, "upload_time": "2018-05-03T22:08:37", "url": "https://files.pythonhosted.org/packages/7c/8d/2b04a9b05c79d19b5054d1e71f2dcd002a7f4fd90e45c7a798529898a72b/sonya-0.6.6-cp34-cp34m-macosx_10_6_intel.whl" }, { "comment_text": "", "digests": { "md5": "fa82ed9bea9c2daa2a0c3978c6f81547", "sha256": "a4d157cc69097198dec911b05cd8086d2684fed641411df82497d5024cb093ff" }, "downloads": -1, "filename": "sonya-0.6.6-cp34-cp34m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "fa82ed9bea9c2daa2a0c3978c6f81547", "packagetype": "bdist_wheel", "python_version": "cp34", "requires_python": ">=2.7.*, <4", "size": 1281231, "upload_time": "2018-05-03T22:08:43", "url": "https://files.pythonhosted.org/packages/d9/81/331e3768a91029390dadcc1aa6ee80987390ace2e94e1930bfcd646103ec/sonya-0.6.6-cp34-cp34m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "ca1e5c4e41dd2b83f600e34c13bbe16e", "sha256": "7a325a7d85b5bd31fe485cea06812fe33a664ba5568d2968f37412bbd9e65907" }, "downloads": -1, "filename": "sonya-0.6.6-cp35-cp35m-macosx_10_6_intel.whl", "has_sig": false, "md5_digest": "ca1e5c4e41dd2b83f600e34c13bbe16e", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": ">=2.7.*, <4", "size": 1499548, "upload_time": "2018-05-03T22:08:49", "url": "https://files.pythonhosted.org/packages/cf/3f/2152751b2517b4eda551614a313ca33e9590fb8c1d684b2b2297c9b69ab3/sonya-0.6.6-cp35-cp35m-macosx_10_6_intel.whl" }, { "comment_text": "", "digests": { "md5": "2bead2aeadf1a6587fb1fd49b6e61a48", "sha256": "6f4de40f6cdd593a75fcb9c69b1c8c3c6f434b0662b4fbe224694277f515fe13" }, "downloads": -1, "filename": "sonya-0.6.6-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "2bead2aeadf1a6587fb1fd49b6e61a48", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": ">=2.7.*, <4", "size": 1268750, "upload_time": "2018-05-03T22:08:55", "url": "https://files.pythonhosted.org/packages/76/14/f123289c9df27c6e81c2a6bf4069c0d726fe399be93169e8349dfcbc907f/sonya-0.6.6-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "52c52ba9150c034cbd89a2eb64da7c6f", "sha256": "7db6875991d2aae073b6597cc13ce1febbb3ef72d84110f02f6c4cad17ab6c01" }, "downloads": -1, "filename": "sonya-0.6.6-cp36-cp36m-linux_armv7l.whl", "has_sig": false, "md5_digest": "52c52ba9150c034cbd89a2eb64da7c6f", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=2.7.*, <4", "size": 1220430, "upload_time": "2018-06-24T18:41:14", "url": "https://files.pythonhosted.org/packages/ef/cc/3eb1365092a7a2641b96cd2ac3e59b835e741fedc77a7fd1ade6627cbd1d/sonya-0.6.6-cp36-cp36m-linux_armv7l.whl" }, { "comment_text": "", "digests": { "md5": "8785b5c12973667ac48339edc54f40b2", "sha256": "e4e7e49a6620f5dbe9763506dc5fb17b5a9784111af47d29f5b2748a629fca97" }, "downloads": -1, "filename": "sonya-0.6.6-cp36-cp36m-macosx_10_6_intel.whl", "has_sig": false, "md5_digest": "8785b5c12973667ac48339edc54f40b2", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=2.7.*, <4", "size": 862030, "upload_time": "2018-05-03T22:08:59", "url": "https://files.pythonhosted.org/packages/f5/33/494f9c2356ddf66a9fac68cfc6f7c230aefd092c9f268ccc3595cffe55c6/sonya-0.6.6-cp36-cp36m-macosx_10_6_intel.whl" }, { "comment_text": "", "digests": { "md5": "0a542165ae871bcd33751ca70085b9c6", "sha256": "c308c60ec59c68d89dc9755ae018d52c308cabde7fb44a2d67210c483b54c6c2" }, "downloads": -1, "filename": "sonya-0.6.6-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "0a542165ae871bcd33751ca70085b9c6", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=2.7.*, <4", "size": 1288099, "upload_time": "2018-05-03T22:09:05", "url": "https://files.pythonhosted.org/packages/ad/4d/5ccfa4c07269681d2876b329a4ad16f3e02b8b62a2b6557e8bc07220dd96/sonya-0.6.6-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "6b4c3243bc1f61b3973c168f087a56cf", "sha256": "5d2ec6c92a3d65de3826d5f6a53fc78060f70136c4ce857c823277a25fc06802" }, "downloads": -1, "filename": "sonya-0.6.6.tar.gz", "has_sig": false, "md5_digest": "6b4c3243bc1f61b3973c168f087a56cf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7.*, <4", "size": 290192, "upload_time": "2018-05-03T22:09:08", "url": "https://files.pythonhosted.org/packages/ec/d7/252af8f0d26dbb5808c06bbced9b2a427939a2633e0764757cc8d599ea65/sonya-0.6.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "18b79f6145af4a3d32079c907b25b7a7", "sha256": "f2d7ef913b4346ec48e307119582490397eabc48c3907971a396303aa199c914" }, "downloads": -1, "filename": "sonya-0.6.6-cp27-cp27m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "18b79f6145af4a3d32079c907b25b7a7", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": ">=2.7.*, <4", "size": 1227729, "upload_time": "2018-05-03T22:08:32", "url": "https://files.pythonhosted.org/packages/46/aa/b462b54c7c5bfe7213dda607abf18185f1e2ad946d15e859e672aa220eca/sonya-0.6.6-cp27-cp27m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "8d7f1b70236ad518d65d6abd15249fa8", "sha256": "01340ebe15b3576aaeaf2ae046f840cb96e40d8249819fecd97aabb31425c318" }, "downloads": -1, "filename": "sonya-0.6.6-cp34-cp34m-macosx_10_6_intel.whl", "has_sig": false, "md5_digest": "8d7f1b70236ad518d65d6abd15249fa8", "packagetype": "bdist_wheel", "python_version": "cp34", "requires_python": ">=2.7.*, <4", "size": 1520468, "upload_time": "2018-05-03T22:08:37", "url": "https://files.pythonhosted.org/packages/7c/8d/2b04a9b05c79d19b5054d1e71f2dcd002a7f4fd90e45c7a798529898a72b/sonya-0.6.6-cp34-cp34m-macosx_10_6_intel.whl" }, { "comment_text": "", "digests": { "md5": "fa82ed9bea9c2daa2a0c3978c6f81547", "sha256": "a4d157cc69097198dec911b05cd8086d2684fed641411df82497d5024cb093ff" }, "downloads": -1, "filename": "sonya-0.6.6-cp34-cp34m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "fa82ed9bea9c2daa2a0c3978c6f81547", "packagetype": "bdist_wheel", "python_version": "cp34", "requires_python": ">=2.7.*, <4", "size": 1281231, "upload_time": "2018-05-03T22:08:43", "url": "https://files.pythonhosted.org/packages/d9/81/331e3768a91029390dadcc1aa6ee80987390ace2e94e1930bfcd646103ec/sonya-0.6.6-cp34-cp34m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "ca1e5c4e41dd2b83f600e34c13bbe16e", "sha256": "7a325a7d85b5bd31fe485cea06812fe33a664ba5568d2968f37412bbd9e65907" }, "downloads": -1, "filename": "sonya-0.6.6-cp35-cp35m-macosx_10_6_intel.whl", "has_sig": false, "md5_digest": "ca1e5c4e41dd2b83f600e34c13bbe16e", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": ">=2.7.*, <4", "size": 1499548, "upload_time": "2018-05-03T22:08:49", "url": "https://files.pythonhosted.org/packages/cf/3f/2152751b2517b4eda551614a313ca33e9590fb8c1d684b2b2297c9b69ab3/sonya-0.6.6-cp35-cp35m-macosx_10_6_intel.whl" }, { "comment_text": "", "digests": { "md5": "2bead2aeadf1a6587fb1fd49b6e61a48", "sha256": "6f4de40f6cdd593a75fcb9c69b1c8c3c6f434b0662b4fbe224694277f515fe13" }, "downloads": -1, "filename": "sonya-0.6.6-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "2bead2aeadf1a6587fb1fd49b6e61a48", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": ">=2.7.*, <4", "size": 1268750, "upload_time": "2018-05-03T22:08:55", "url": "https://files.pythonhosted.org/packages/76/14/f123289c9df27c6e81c2a6bf4069c0d726fe399be93169e8349dfcbc907f/sonya-0.6.6-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "52c52ba9150c034cbd89a2eb64da7c6f", "sha256": "7db6875991d2aae073b6597cc13ce1febbb3ef72d84110f02f6c4cad17ab6c01" }, "downloads": -1, "filename": "sonya-0.6.6-cp36-cp36m-linux_armv7l.whl", "has_sig": false, "md5_digest": "52c52ba9150c034cbd89a2eb64da7c6f", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=2.7.*, <4", "size": 1220430, "upload_time": "2018-06-24T18:41:14", "url": "https://files.pythonhosted.org/packages/ef/cc/3eb1365092a7a2641b96cd2ac3e59b835e741fedc77a7fd1ade6627cbd1d/sonya-0.6.6-cp36-cp36m-linux_armv7l.whl" }, { "comment_text": "", "digests": { "md5": "8785b5c12973667ac48339edc54f40b2", "sha256": "e4e7e49a6620f5dbe9763506dc5fb17b5a9784111af47d29f5b2748a629fca97" }, "downloads": -1, "filename": "sonya-0.6.6-cp36-cp36m-macosx_10_6_intel.whl", "has_sig": false, "md5_digest": "8785b5c12973667ac48339edc54f40b2", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=2.7.*, <4", "size": 862030, "upload_time": "2018-05-03T22:08:59", "url": "https://files.pythonhosted.org/packages/f5/33/494f9c2356ddf66a9fac68cfc6f7c230aefd092c9f268ccc3595cffe55c6/sonya-0.6.6-cp36-cp36m-macosx_10_6_intel.whl" }, { "comment_text": "", "digests": { "md5": "0a542165ae871bcd33751ca70085b9c6", "sha256": "c308c60ec59c68d89dc9755ae018d52c308cabde7fb44a2d67210c483b54c6c2" }, "downloads": -1, "filename": "sonya-0.6.6-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "0a542165ae871bcd33751ca70085b9c6", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=2.7.*, <4", "size": 1288099, "upload_time": "2018-05-03T22:09:05", "url": "https://files.pythonhosted.org/packages/ad/4d/5ccfa4c07269681d2876b329a4ad16f3e02b8b62a2b6557e8bc07220dd96/sonya-0.6.6-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "6b4c3243bc1f61b3973c168f087a56cf", "sha256": "5d2ec6c92a3d65de3826d5f6a53fc78060f70136c4ce857c823277a25fc06802" }, "downloads": -1, "filename": "sonya-0.6.6.tar.gz", "has_sig": false, "md5_digest": "6b4c3243bc1f61b3973c168f087a56cf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7.*, <4", "size": 290192, "upload_time": "2018-05-03T22:09:08", "url": "https://files.pythonhosted.org/packages/ec/d7/252af8f0d26dbb5808c06bbced9b2a427939a2633e0764757cc8d599ea65/sonya-0.6.6.tar.gz" } ] }