{ "info": { "author": "Pierre-Arthur MATHIEU", "author_email": "pi3rra@root.gg", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Topic :: Database" ], "description": "**TinyDictDb**\n==============\n\nWhat is it ?\n------------\n\nTinyDictDb is a very small flat file (JSON or YAML) database meant to store dictionaries.\n\n**Exemple of the datas stored:**\n\n.. code:: json\n\n [\n {\"id\":4242,\"name\":\"foo\",\"tags\":[\"aa\",\"bb\"]},\n {\"id\":4243,\"name\":\"bar\",\"tags\":[\"bb\",\"cc\"]},\n {\"id\":4244,\"name\":\"fobar\",\"tags\":[\"dd\"]}\n ]\n\n.. code:: yaml\n\n - id: 4242\n name: foo\n tags: [aa, bb]\n - id: 4243\n name: bar\n tags: [bb, cc]\n - id: 4244\n name: fobar\n tags: [dd]]\n\n\nIt also comes with a fully configurable `PrettyPrinter`_. in order to display this kind of data:\n\n.. code::\n\n +------+-------+--------------+\n | id | name | tags |\n +------+-------+--------------+\n | 4242 | foo | ['aa', 'bb'] |\n | 4243 | bar | ['bb', 'cc'] |\n | 4244 | fobar | ['dd'] |\n +------+-------+--------------+\n\n\nTable of Content\n----------------\n\n- `TinyDictDb`_\n\n - `Installation`_\n - Usage\n - Methods\n\n - `Create or open a database (a JSON/YAML file):`_\n - `Add entry/entries:`_\n - `Retrieve/find entry / entries:`_\n - `Delete entry / entries:`_\n - `Count the number of occurences of an entry in the db:`_\n - `Edit entries:`_\n - `Sort database:`_\n - `Get informations about the db:`_\n\n - `Itialization parameters:`_\n\n - rMode\n - wMode\n - encoding\n - path\n - dCopy\n\n- `PrettyPrinter`_\n\n\nInstallation\n------------\n\n pip install tinydictdb\n\nNote: If you want to use yaml (not recommended due to poor performances), you have to install PyYaml by yourself.\n\nUsage\n-----\n\n.. code :: python\n\n from tinydictdb import TinyDictDb\n\n\nCreate or open a database (a JSON/YAML file):\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n.. code :: python\n\n db = TinyDictDb(path=\"/tmp/db.json\") # Json Backed\n db = TinyDictDb(path=\"/tmp/db.yaml\", encoding='yaml') # Yaml backed\n db = TinyDictDb() # In memory\n\nFor more initialization parameters see: `Itialization parameters:`_.\n\n\nAdd entry/entries:\n~~~~~~~~~~~~~~~~~~\n.. code :: python\n\n addEntries(entries, index=None)\n\n.. code :: python\n\n a = {\"id\":4242,\"name\":\"foo\"}\n b = [{\"id\":4242,\"name\":\"foo\"},{\"id\":4243,\"name\":\"bar\"}]\n db.addEntries(a)\n db.addEntries(b)\n\nIt is possible to add an entry at a specific index of the list using:\n\n.. code :: python\n\n db.addEntries(a, 5) # Will add the entry a as the 6th entry of the db\n\n\nRetrieve/find entry / entries:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n.. code :: python\n\n findEntries(**kwargs)\n\nRetrieve the full db:\n\n.. code :: python\n\n db.findEntries()\n\nRetrieve only entries where key == value:\n\n.. code :: python\n\n db.findEntries(name=\"foo\") # Will return all entries with entry[\"name\"] == \"foo\".\n db.findEntries(tags=[\"aa\", \"bb\"]) # Will return all entries with entry['tag'] == [\"aa\", \"bb\"].\n\nLess strict (for string or list):\n\n.. code :: python\n\n db.findEntries(name=(\"foo\", False)) # Will return all entries with foo in entry[\"name\"].\n db.findEntries(tags=([\"aa\"], False)) # Will return all entries with {\"aa\"}.issubset(entry['tag']).\n\nUsing a function:\n\n.. code :: python\n\n db.findEntries(key=function) # Will return all entries for which function(entry[\"key\"]) return true.\n db.findEntries(id=(lambda x: True if x < 4243 else False)) # Will return all entry with id < 4243\n\nYou can cumulate as much as you want:\n\n.. code :: python\n\n db.findEntries(id=1, name=\"plop\", tag=([\"aa\", False]))\n\n\nDelete entry / entries:\n~~~~~~~~~~~~~~~~~~~~~~~\n.. code :: python\n\n deleteEntries(entries, index=None)\n\n.. code :: python\n\n a = {\"id\":4242,\"name\":\"foo\"}\n b = [{\"id\":4242,\"name\":\"foo\"},{\"id\":4243,\"name\":\"bar\"}]\n db.deleteEntries(a)\n db.deleteEntries(b)\n db.deleteEntries(db.findEntries(name=\"foo\"))\n db.deleteEntries([], 0) # Will delete the first entry of the db\n\nIt will return the number of deleted entries\n\n\nCount the number of occurences of an entry in the db:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code :: python\n\n count(entry)\n\n**count** will return the number of occurence of an entry in the db\n\n.. code :: python\n\n a = {\"id\":4242,\"name\":\"foo\"}\n db.count(a) # Will return the number of occurence of a in the db.\n\n\nEdit entries:\n~~~~~~~~~~~~~\n.. code :: python\n\n findEntries(fct, entries=None)\n\n**editEntries** will apply a function to each entry in the db.\n\n.. code :: python\n\n def fct(in):\n in[\"id\"] += 1\n return in\n\n db.editEntries(fct) # will increment the id\u2019s of all the db.\n\nAs an optional parameter, you can pass a subset of entry it should use instead of the whole db.\n\n.. code :: python\n\n db.editEntries(fct, db.findEntries(name=\"foo\")) # will increment the id\u2019s of entries having foo as name.\n\n\nSort database:\n~~~~~~~~~~~~~~\n.. code :: python\n\n sort(field, reverse=False, strict=True)\n\n**sort** will the database in function of the value associated with a key\n\n.. code :: python\n\n db.sort(\"id\")\n\nYou can also/aditionally reverse the db\n\n.. code :: python\n\n db.sort(\"id\", True) # Will reverse sort in function of the id field of each entry\n db.sort(None, True) # Will reverse the db\n\nBy default, you will get an error if one or more dictionnaries doesn't contain\nthe key you specifief or if the type of the value correponding to it is not\nconsistent throughout the db.\n\nYou can turn of this strict behavior with the third parameter (and everything\nwill be analized as strings)\n\n.. code :: python\n\n db.sort(\"id\", False, False)\n\nWarning: With this last method the order will be like : [1, 11, 12, 2, 21, 3]\n\n\nGet informations about the db:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code :: python\n\n print(db)\n\nWill output:\n containing 4 entries.\n\n\nItialization parameters:\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nAvailable initialization patameters are:\n\n**rMode**: How datas are read\n\nPossible value:\n\n- file: The backing file will be re-read before each action [default]\n- mem: The content of the database is only read from the memory, this will always initialize as an empty database [default if no path specified]\n- hybrid: The backing file is read once at the initialization and after that datas are read from memory\n\nYou should select 'file' if more than one process is going to acces the file (not a really good idea anyway because no locking ATM).\n\n\n**wMode**: How datas are written\n\nPossible value:\n\n- file: Every time you modify the content of the database, the whole file is re-written. [default]\n- append: Same thing as file, but on the specific case of adding entry, append to the file rather than re-writing the whole thing.\n- mem: Nothing is written on disk everything on memory [default if no path specified]\n\nEvery combination of rMode and wMode are possible, some just make no sense.\n\n\n**encoding**: Format of the file to read from / write to (if applicable)\n\nPossible value:\n\n- json\n- yaml: **good to know: yaml performances are REALLY REALLY AWFUL**\n\n\n**path**: Path of the file to read from / write to (if applicable)\n\n\n**dCopy**: Default to True\n\nBecause of how python pass list and dictionnaries (ie: by reference), and to avoid damaging the internal database, if rMode is set to mem or hybrid, the datas are deepCopy-ed (This is a time consuming operation). If you know what you are doing or you are not going to modify the return data (for example just print them), you can turn that of and win a few extra milisec's.\n\n\nMost sensitive choices:\n\n.. code :: python\n\n db = TinyDictDb(path=\"/home/db.json\") # wMode='file', rMode='file' : Safest option, slowest also.\n db = TinyDictDb() # Full in memory : Fastest : no dump of datas\n db = TinyDictDb(path=\"/home/db.json\", rMode=\"hybrid\", wMode=\"append\") # Good compromise\n\nGood to know:\n\nYou can use a full memory database (wMode='mem', rMode='mem') and choose to dump manually the database to a file (if the path is specified) using the writeDb() method.\n\n\n**PrettyPrinter**\n=================\n\nThis class is meant to display the informations stored in TinyDictDb (or any\nlist of dictionnaries for that matter).\n\nTable of Content\n----------------\n\n- `TinyDictDb`_\n- `PrettyPrinter`_\n\n - Usage\n - `Parameters:`_\n\n - `header`_\n - `border`_\n - `vDelim, hDelim, xDelim`_\n - `padding`_\n - `fields`_\n - `sort`_\n - `numbered`_\n - `reverse`_\n - `truncate`_\n - `multiline`_\n - `align`_\n - `cleanupFct`_\n\n - `Methods and attributes:`_\n\n\nUsage\n-----\n\n.. code :: python\n\n import tinydictdb\n\n datas = [{\"id\":4242,\"name\":\"foo\",\"tags\":[\"aa\",\"bb\"]},\n {\"id\":4243,\"name\":\"bar\",\"tags\":[\"bb\",\"cc\"]},\n {\"id\":4244,\"name\":\"fobar\",\"tags\":[\"dd\"]}]\n\n p = PrettyPrinter(datas)\n print(p)\n\nor shorter:\n\n.. code :: python\n\n print(PrettyPrinter(db.findEntries()))\n\nWill output:\n\n.. code::\n\n +------+-------+--------------+\n | id | name | tags |\n +------+-------+--------------+\n | 4242 | foo | ['aa', 'bb'] |\n | 4243 | bar | ['bb', 'cc'] |\n | 4244 | fobar | ['dd'] |\n +------+-------+--------------+\n\n\nParameters:\n-----------\n\nheader\n~~~~~~\nTrue [Default]\n\n.. code::\n\n +------+-------+--------------+\n | id | name | tags |\n +------+-------+--------------+\n | 4242 | foo | ['aa', 'bb'] |\n | 4243 | bar | ['bb', 'cc'] |\n | 4244 | fobar | ['dd'] |\n +------+-------+--------------+\n\nFalse\n\n.. code::\n\n +------+-------+--------------+\n | 4242 | foo | ['aa', 'bb'] |\n | 4243 | bar | ['bb', 'cc'] |\n | 4244 | fobar | ['dd'] |\n +------+-------+--------------+\n\n\nborder\n~~~~~~\nTrue [Default]\n\n.. code::\n\n +------+-------+--------------+\n | id | name | tags |\n +------+-------+--------------+\n | 4242 | foo | ['aa', 'bb'] |\n | 4243 | bar | ['bb', 'cc'] |\n | 4244 | fobar | ['dd'] |\n +------+-------+--------------+\n\nFalse\n\n.. code::\n\n id | name | tags\n 4242 | foo | ['aa', 'bb']\n 4243 | bar | ['bb', 'cc']\n 4244 | fobar | ['dd']\n\n\nvDelim, hDelim, xDelim\n~~~~~~~~~~~~~~~~~~~~~~\n\nCharacters used for borders:\n\n.. code :: python\n\n print(PrettyPrinter(datas, vDelim=\"/\", hDelim=\"~\", xDelim=\"*\"))\n\nWill output:\n\n.. code::\n\n *~~~~~~*~~~~~~~*~~~~~~~~~~~~~~*\n / id / name / tags /\n *~~~~~~*~~~~~~~*~~~~~~~~~~~~~~*\n / 4242 / foo / ['aa', 'bb'] /\n / 4243 / bar / ['bb', 'cc'] /\n / 4244 / fobar / ['dd'] /\n *~~~~~~*~~~~~~~*~~~~~~~~~~~~~~*\n\n\npadding\n~~~~~~~\n\nDefaults to True\n\nIf set to False, will disable the padding (and disable borders as well). Usefull in combination of the vDelim parameter to produce CSV\n\n\n.. code :: python\n\n print(PrettyPrinter(datas, vDelim=\",\", padding=False))\n\nWill output:\n\n.. code::\n\n id,name,tags\n 4242,foo,['aa', 'bb']\n 4243,bar,['bb', 'cc']\n 4244,fobar,['dd']\n\n\nfields\n~~~~~~\n\nYou can choose to display only specific fields in a specific order:\n\n.. code :: python\n\n print(PrettyPrinter(datas, fields=[ \"tags\",\"name\"]))\n\nWill output\n\n.. code::\n\n +--------------+-------+\n | tags | name |\n +--------------+-------+\n | ['aa', 'bb'] | foo |\n | ['bb', 'cc'] | bar |\n | ['dd'] | fobar |\n +--------------+-------+\n\nInstead of just the name of the field, you can pass a tuple with the name and how it should be displayed.\n\n.. code :: python\n\n print(PrettyPrinter(datas, fields=[(\"name\", \"NAME\"), \"tags\"]))\n\nWill output\n\n.. code::\n\n +-------+--------------+\n | NAME | tags |\n +-------+--------------+\n | foo | ['aa', 'bb'] |\n | bar | ['bb', 'cc'] |\n | fobar | ['dd'] |\n +-------+--------------+\n\n\nsort\n~~~~\n\nWill sort the datas in function of the provided field\n\n.. code :: python\n\n print(PrettyPrinter(datas, sort=\"name\"))\n\nWill output\n\n.. code::\n\n +------+-------+--------------+\n | id | name | tags |\n +------+-------+--------------+\n | 4243 | bar | ['bb', 'cc'] |\n | 4244 | fobar | ['dd'] |\n | 4242 | foo | ['aa', 'bb'] |\n +------+-------+--------------+\n\n\nnumbered\n~~~~~~~~\n\nWill number the lines outputed\n\n.. code :: python\n\n print(PrettyPrinter(datas, numbered=True))\n\nWill output\n\n.. code::\n\n +---+------+-------+--------------+\n | 0 | id | name | tags |\n +---+------+-------+--------------+\n | 1 | 4243 | bar | ['bb', 'cc'] |\n | 2 | 4244 | fobar | ['dd'] |\n | 3 | 4242 | foo | ['aa', 'bb'] |\n +---+------+-------+--------------+\n\n\nreverse\n~~~~~~~\n\nWill reverse the order in which datas are printed\n\n.. code :: python\n\n print(PrettyPrinter(datas, reverse=True))\n\nWill output\n\n.. code::\n\n +------+-------+--------------+\n | id | name | tags |\n +------+-------+--------------+\n | 4244 | fobar | ['dd'] |\n | 4243 | bar | ['bb', 'cc'] |\n | 4242 | foo | ['aa', 'bb'] |\n +------+-------+--------------+\n\n\ntruncate\n~~~~~~~~\n\nWill truncate columns to specified length\n\n.. code :: python\n\n print(PrettyPrinter(datas, truncate=4))\n\nWill output\n\n.. code::\n\n +------+------+------+\n | id | name | tags |\n +------+------+------+\n | 4242 | foo | ['aa |\n | 4243 | bar | ['bb |\n | 4244 | foba | ['dd |\n +------+------+------+\n\nYou can provide a dictionnary in order to truncate only specific columns:\n\n.. code :: python\n\n print(PrettyPrinter(datas, truncate={\"name\":4, \"tags\":10}))\n\nWill output\n\n.. code::\n\n +------+------+------------+\n | id | name | tags |\n +------+------+------------+\n | 4242 | foo | ['aa', 'bb |\n | 4243 | bar | ['bb', 'cc |\n | 4244 | foba | ['dd'] |\n +------+------+------------+\n\nThe special keyword **\"magic\"** will try to make the best of use of the terminal width (or the value specified through the **\"termsize\"** attribute).\n\n.. code :: python\n\n print(PrettyPrinter(datas, truncate=\"magic\", termsize=30))\n\nWill output\n\n.. code::\n\n +------+------+------------+\n | id | name | tags |\n +------+------+------------+\n | 4242 | foo | ['aa', 'bb |\n | 4243 | bar | ['bb', 'cc |\n | 4244 | foba | ['dd'] |\n +------+------+------------+\n\n\nmultiline\n~~~~~~~~\n\nInstead of cuting the text, truncate divide it in multiple lines.\n\n.. code :: python\n\n print(PrettyPrinter(datas, truncate='magic', termsize=30, multiline=True))\n\nWill output\n\n.. code::\n\n +-----+-----+----------+\n | id | nam | tags |\n +-----+-----+----------+\n | 424 | foo | ['aa', ' |\n | 2 | | bb'] |\n | 424 | bar | ['bb', ' |\n | 3 | | cc'] |\n | 424 | fob | ['dd'] |\n | 4 | ar | |\n +-----+-----+----------+\n\n\nalign\n~~~~~\n\nWill manage how the content is aligned in the paddind\nPossible values are : left, right, center (default to left)\n\n.. code :: python\n\n print(PrettyPrinter(datas, align='right'))\n\nWill output\n\n.. code::\n\n +------+-------+--------------+\n | id | name | tags |\n +------+-------+--------------+\n | 4242 | foo | ['aa', 'bb'] |\n | 4243 | bar | ['bb', 'cc'] |\n | 4244 | fobar | ['dd'] |\n +------+-------+--------------+\n\nYou can provide a dictionnary in order to align only specific columns:\n\n.. code :: python\n\n print(PrettyPrinter(datas, truncate={\"id\": \"right\", \"tags\": \"right\"}))\n\nWill output\n\n.. code::\n\n +------+-------+--------------+\n | id | name | tags |\n +------+-------+--------------+\n | 4242 | foo | ['aa', 'bb'] |\n | 4243 | bar | ['bb', 'cc'] |\n | 4244 | fobar | ['dd'] |\n +------+------ +--------------+\n\n\ncleanupFct\n~~~~~~~~~~\n\nA function that will be passed the content of each cell to do some cleanup action.\n\nFor example to print lists in a more beautifull manner:\n\n.. code :: python\n\n def clean(cell):\n if isinstance(cell, list):\n cell = \" ; \".join(cell)\n return cell\n\n print(PrettyPrinter(datas, cleanupFct=clean))\n\nWill output\n\n.. code::\n\n +------+-------+---------+\n | id | name | tags |\n +------+-------+---------+\n | 4242 | foo | aa ; bb |\n | 4243 | bar | bb ; cc |\n | 4244 | fobar | dd |\n +------+-------+---------+\n\n\nMethods and attributes:\n----------------------\n\nWhen it is instanciated, the PrettyPrinter class will generate the visual and store it in the form of a list of lines under the **lines** attribute.\n\n.. code :: python\n\n print(p.lines)\n\n ['+------+-------+--------------+',\n '| id | name | tags |',\n '+------+-------+--------------+',\n \"| 4242 | foo | ['aa', 'bb'] |\",\n \"| 4243 | bar | ['bb', 'cc'] |\",\n \"| 4244 | fobar | ['dd'] |\",\n '+------+-------+--------------+']\n\nYou can get what will be displayed (with \\n escaping) using the **getOneString()** method. This is also bound to the special method **__str__()** to allow to use print(PrettyPrinter(datas))\n\n.. code :: python\n\n p.getOneString()\n \"+------+-------+--------------+\\n| id | name | tags |\\n+------+-------+--------------+\\n| 4242 | foo | ['aa', 'bb'] |\\n| 4243 | bar | ['bb', 'cc'] |\\n| 4244 | fobar | ['dd'] |\\n+------+-------+--------------+\\n\"\n\n\nEvery parameters passed to the class is also stored as an attribute. If you want modify those ones, you have to call the **generate()** method afterwards to regenerate the lines.\n\n.. code :: python\n\n p = PrettyPrinter(datas)\n p.header = False\n p.generate()\n print(p)\n\n.. code::\n\n +------+-------+---------+\n | 4242 | foo | aa ; bb |\n | 4243 | bar | bb ; cc |\n | 4244 | fobar | dd |\n +------+-------+---------+\n\nSame thing goes for the datas printed (stored under the entries attribute):\n\n.. code :: python\n\n p.entries.append({'id': 4245, 'name': 'plop', 'tags': []})\n p.generate()\n print(p)\n\n.. code::\n\n +------+-------+--------------+\n | id | name | tags |\n +------+-------+--------------+\n | 4242 | foo | ['aa', 'bb'] |\n | 4243 | bar | ['bb', 'cc'] |\n | 4244 | fobar | ['dd'] |\n | 4245 | plop | [] |\n +------+-------+--------------+", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sl4shme/tinydictdb", "keywords": "json database yaml dict dictionnary", "license": "Apache Software License", "maintainer": null, "maintainer_email": null, "name": "tinydictdb", "package_url": "https://pypi.org/project/tinydictdb/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/tinydictdb/", "project_urls": { "Homepage": "https://github.com/sl4shme/tinydictdb" }, "release_url": "https://pypi.org/project/tinydictdb/1.3.2/", "requires_dist": null, "requires_python": null, "summary": "A tiny flat file (JSON/YAML) dictionnaries database.", "version": "1.3.2" }, "last_serial": 1583173, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "2a388e923bfa434ffabcb4a224af040f", "sha256": "392837dd694641bfcbb408c3ec0b1342806f6735af2ea2c34ddacd2646256575" }, "downloads": -1, "filename": "tinydictdb-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2a388e923bfa434ffabcb4a224af040f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5291, "upload_time": "2015-03-03T12:09:56", "url": "https://files.pythonhosted.org/packages/22/cb/0e9e86e4a5798aa651187d2b44f11957a93df8e28436e122ebe68e38ff3b/tinydictdb-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a7cc867e3bfbfcb5c464340b53462656", "sha256": "9ffeb7a5a63b945505e24e4570fa12faf3a8118b82f2cea05cea66aec0ff105c" }, "downloads": -1, "filename": "tinydictdb-0.0.1.tar.gz", "has_sig": false, "md5_digest": "a7cc867e3bfbfcb5c464340b53462656", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3342, "upload_time": "2015-03-03T12:09:59", "url": "https://files.pythonhosted.org/packages/11/33/d16d171f60259d87d812f4707eaabe6424e125b2a3fd6a99896a7ae6a061/tinydictdb-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "34d9d980e5f6e9d797bc218d838d854b", "sha256": "3b5ef3c43f849c1dfec0ff5f3e509cec6b89689c37fdce7d11c1fe0f8bd3a363" }, "downloads": -1, "filename": "tinydictdb-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "34d9d980e5f6e9d797bc218d838d854b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5307, "upload_time": "2015-03-03T13:20:35", "url": "https://files.pythonhosted.org/packages/4f/45/050976f767d6bc0b542c3d4f3af2c8a23f78175f96c1da2a652beaf37f3e/tinydictdb-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d97a99c6fc7089cbf117d45c492cff40", "sha256": "63110fea114bc22d75df7f0d10d845b3866cc06374d8fddc03fdf6554b47b53b" }, "downloads": -1, "filename": "tinydictdb-0.0.2.tar.gz", "has_sig": false, "md5_digest": "d97a99c6fc7089cbf117d45c492cff40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3343, "upload_time": "2015-03-03T13:20:38", "url": "https://files.pythonhosted.org/packages/4f/91/ae04156348e27b856da33994576c9f0729bff8780046ca0b924c3e549a99/tinydictdb-0.0.2.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "1ada26a6c4a6e10615f3c8a909a46a78", "sha256": "333afa141bb00c520105fce55c130c3f63f7f93a0f463abc519bd56f039d5d90" }, "downloads": -1, "filename": "tinydictdb-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1ada26a6c4a6e10615f3c8a909a46a78", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13660, "upload_time": "2015-05-13T12:02:51", "url": "https://files.pythonhosted.org/packages/d8/e2/c44b751ed845cecc323a96340f71411f912c239001a9c777e2606d07372b/tinydictdb-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "763c4e483626e8a3bd8476d36189e142", "sha256": "1b8ecdffb815740011b4ea1bf3c629dc338105989bad75f14b09ed053facc0ba" }, "downloads": -1, "filename": "tinydictdb-1.0.0.tar.gz", "has_sig": false, "md5_digest": "763c4e483626e8a3bd8476d36189e142", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9917, "upload_time": "2015-05-13T12:02:54", "url": "https://files.pythonhosted.org/packages/f4/29/d3b84c99cf9b14dc9380d524d9390c6ba94d95dbab41759974b490d4a939/tinydictdb-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "5ca3f5658ed70b9ed7130e73d02e7b15", "sha256": "06448f39dd2fcfa034f83938cda830c2465ef610f77c8c1a0c369f5ff47ea71a" }, "downloads": -1, "filename": "tinydictdb-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5ca3f5658ed70b9ed7130e73d02e7b15", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14113, "upload_time": "2015-05-13T12:47:45", "url": "https://files.pythonhosted.org/packages/b4/35/dbaff46834c46f7745a3f21d784712344e4d79f13eca7a7a7ebdea7fa54a/tinydictdb-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "661f927c32b285f9763c4c6de30de3ef", "sha256": "09493ac1920b9f74dee79c4f80c9cd287677053e1c361ac65a208fddfc70fc8a" }, "downloads": -1, "filename": "tinydictdb-1.0.1.tar.gz", "has_sig": false, "md5_digest": "661f927c32b285f9763c4c6de30de3ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9970, "upload_time": "2015-05-13T12:47:48", "url": "https://files.pythonhosted.org/packages/24/f6/72b24681854b840ea2ffa323d301dace65b9f5e41e3cb266774490d8accc/tinydictdb-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "1e67b6166ee866fe87b8815ef16d57bb", "sha256": "9c84e0e633019c822ae44eeb99b305fd0dec6347162d6853c2fd40a12fa2a46a" }, "downloads": -1, "filename": "tinydictdb-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1e67b6166ee866fe87b8815ef16d57bb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14153, "upload_time": "2015-06-02T12:24:43", "url": "https://files.pythonhosted.org/packages/c4/0b/7ffbda655796e810b996279374fe0a872c70f6e1c5d3c1c0c0c235a73d8b/tinydictdb-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0cd0f977ac0fc681fd7998abc149c69", "sha256": "b25c2f83180e34fe345d1c5d376478afc785fd18de03b715ce4956a21e6579fe" }, "downloads": -1, "filename": "tinydictdb-1.1.0.tar.gz", "has_sig": false, "md5_digest": "f0cd0f977ac0fc681fd7998abc149c69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9993, "upload_time": "2015-06-02T12:24:46", "url": "https://files.pythonhosted.org/packages/04/20/06912e9d9a55266e1297e3d810fcfe4cf44d80c96bf9c11f2deda49fe0fc/tinydictdb-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "faca6f76410537e898fdadaf75a44102", "sha256": "e144cfe6f3d509dc6b45fbf781fc137b15ec767ae837384b4578270c953fc108" }, "downloads": -1, "filename": "tinydictdb-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "faca6f76410537e898fdadaf75a44102", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14253, "upload_time": "2015-06-02T12:32:10", "url": "https://files.pythonhosted.org/packages/8f/48/d1ebdc4da68077c346cf1ce60385e46e62fc5f6e5547909356b14d007f65/tinydictdb-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6fd967e3cfacba66e3a0250f10fadf42", "sha256": "32a990a65e63c9440d25895eb2cd9ab9866fc4de3503f36be06497d57563c9a5" }, "downloads": -1, "filename": "tinydictdb-1.1.1.tar.gz", "has_sig": false, "md5_digest": "6fd967e3cfacba66e3a0250f10fadf42", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10132, "upload_time": "2015-06-02T12:32:13", "url": "https://files.pythonhosted.org/packages/7d/95/51ee2eabb37622175400d5570f41d12041e28bb83742bc0aaa075fe84b42/tinydictdb-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "ee0fdd335d0706bc7659f66129b2ba72", "sha256": "d457e87ab5f4325c5cb0afccfff46cec14ef9ea393a70cc93049e9f45188ee19" }, "downloads": -1, "filename": "tinydictdb-1.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ee0fdd335d0706bc7659f66129b2ba72", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14271, "upload_time": "2015-06-02T12:49:27", "url": "https://files.pythonhosted.org/packages/14/12/aa2022ddfae10e6dcf3e3cae453444e148da7efc66fbc50aa8681de8c381/tinydictdb-1.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "42e61e69bd9e6c380b8d9011c76639d8", "sha256": "cad51bfb452b50861f3fd92474fc44becd171945c7e2f8cdef9abcc63c07d45f" }, "downloads": -1, "filename": "tinydictdb-1.1.2.tar.gz", "has_sig": false, "md5_digest": "42e61e69bd9e6c380b8d9011c76639d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10159, "upload_time": "2015-06-02T12:49:30", "url": "https://files.pythonhosted.org/packages/ae/cc/1c597ed3b2abfbeedd30342fa752bf2cd93333b7d739a8a579b204fe256f/tinydictdb-1.1.2.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "57a7ff556771fe7d1c3abe3825d81980", "sha256": "63d14cc70f0f02cf8ad095200ce1d7bce3c7cf88c469ae1eb706c9f0c3994a89" }, "downloads": -1, "filename": "tinydictdb-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "57a7ff556771fe7d1c3abe3825d81980", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14674, "upload_time": "2015-06-02T14:02:57", "url": "https://files.pythonhosted.org/packages/9a/a0/a57393c5a605105a2c5c969e8625a35ec5600cb3625b516b0e852ba27820/tinydictdb-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "605c50cae081f2de3adbffe0e39c8e3f", "sha256": "dfe659a09e1e4df097a937c5992881e85806ba7f17a0b37853991870b6c0ded2" }, "downloads": -1, "filename": "tinydictdb-1.2.0.tar.gz", "has_sig": false, "md5_digest": "605c50cae081f2de3adbffe0e39c8e3f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10494, "upload_time": "2015-06-02T14:03:01", "url": "https://files.pythonhosted.org/packages/b6/98/44965c1e5c10fbd1be1bd8e6294b25d61a4643629a2ccdbfa6989cb05b25/tinydictdb-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "df8ab148996fe2ea5cd622edf27f82f6", "sha256": "2ead27a5f8d375b6629fe4065a363e2b3988ffb249c07b656e1dd0885c7a3341" }, "downloads": -1, "filename": "tinydictdb-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "df8ab148996fe2ea5cd622edf27f82f6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15587, "upload_time": "2015-06-03T10:40:46", "url": "https://files.pythonhosted.org/packages/3c/e6/876303a49768b66131032a7832f01bb8b7d90064640a79da11a007e599b5/tinydictdb-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "84aaac3c9106e59e6041830752bd0b31", "sha256": "1c895c3df5c93c63e8d0dc23c2edd28bf960620d1e76fc5be1ef607aba1ce548" }, "downloads": -1, "filename": "tinydictdb-1.3.0.tar.gz", "has_sig": false, "md5_digest": "84aaac3c9106e59e6041830752bd0b31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11299, "upload_time": "2015-06-03T10:40:49", "url": "https://files.pythonhosted.org/packages/0b/99/1d57c8ac5dda9a96b664632a403cd99ab46275e3968978c384548a4da81c/tinydictdb-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "0e9d7457ce6d0cc1c33c1527d91c858a", "sha256": "547b7b93207dabe3fda2c05bc666cfcbf214b1cd13aa009d89a1f658f8dc7096" }, "downloads": -1, "filename": "tinydictdb-1.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0e9d7457ce6d0cc1c33c1527d91c858a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15590, "upload_time": "2015-06-03T11:26:16", "url": "https://files.pythonhosted.org/packages/30/cc/6f31e81a421d3f77fe5d6f3d58e0ca0ded3cea8e3380f54a506d6d013b23/tinydictdb-1.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1477fd79ff63a207e0f7ccc2b44bf9f9", "sha256": "7538f9f69c9a8c0ce1b9b69f3789378a687f1c91307e50dd00c1c9de1da368d6" }, "downloads": -1, "filename": "tinydictdb-1.3.1.tar.gz", "has_sig": false, "md5_digest": "1477fd79ff63a207e0f7ccc2b44bf9f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11308, "upload_time": "2015-06-03T11:26:19", "url": "https://files.pythonhosted.org/packages/68/e2/9675bb43af262003e980156e09ade4afdcb6bc27f01fa06ac69badb305c8/tinydictdb-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "85758a94823ebd9127fe680af19b14d7", "sha256": "0ecf6e2b6c0a379fbbd51e7489fd10d518c47307a207a9c659ba099742f90e11" }, "downloads": -1, "filename": "tinydictdb-1.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "85758a94823ebd9127fe680af19b14d7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15584, "upload_time": "2015-06-08T12:55:09", "url": "https://files.pythonhosted.org/packages/36/75/74ec0c153271d4f1d94f8cd6a5c9edd48094fb2e9b8629dceaec783b060e/tinydictdb-1.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9e306379360d7b27f1a0ee798b62369d", "sha256": "7f752f4dfa89668c4aed249cf60d0c7feab229c1e50bfa8f62a5f6acc69e9a4d" }, "downloads": -1, "filename": "tinydictdb-1.3.2.tar.gz", "has_sig": false, "md5_digest": "9e306379360d7b27f1a0ee798b62369d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11297, "upload_time": "2015-06-08T12:55:13", "url": "https://files.pythonhosted.org/packages/21/52/75791cd21888370f9b0d3d25cca8a14e469d2c6f16481ee81c4a4f46e3d3/tinydictdb-1.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "85758a94823ebd9127fe680af19b14d7", "sha256": "0ecf6e2b6c0a379fbbd51e7489fd10d518c47307a207a9c659ba099742f90e11" }, "downloads": -1, "filename": "tinydictdb-1.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "85758a94823ebd9127fe680af19b14d7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15584, "upload_time": "2015-06-08T12:55:09", "url": "https://files.pythonhosted.org/packages/36/75/74ec0c153271d4f1d94f8cd6a5c9edd48094fb2e9b8629dceaec783b060e/tinydictdb-1.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9e306379360d7b27f1a0ee798b62369d", "sha256": "7f752f4dfa89668c4aed249cf60d0c7feab229c1e50bfa8f62a5f6acc69e9a4d" }, "downloads": -1, "filename": "tinydictdb-1.3.2.tar.gz", "has_sig": false, "md5_digest": "9e306379360d7b27f1a0ee798b62369d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11297, "upload_time": "2015-06-08T12:55:13", "url": "https://files.pythonhosted.org/packages/21/52/75791cd21888370f9b0d3d25cca8a14e469d2c6f16481ee81c4a4f46e3d3/tinydictdb-1.3.2.tar.gz" } ] }