{ "info": { "author": "Ryan Kelly", "author_email": "ryan@rfk.id.au", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "regobj: Pythonic object-based access to the Windows Registry\n\nThis module provides a thin wrapper around the standard _winreg module,\nallowing easier and more pythonic access to the Windows Registry.\n\nAll access to the registry is done through Key objects, which (surprise!)\nrepresent a specific registry key. To begin, there are pre-existing Key\nobjects defined for the HKEY_* root keys, using both long and short names:\n\n >>> HKEY_CURRENT_USER\n \n >>> HKLM\n \n\nTraversing and creating subkeys is then as simple as ordinary python\nattribute access:\n\n >>> HKCU.Software.Microsoft.Windows\n \n >>> HKCU.Software.MyTests\n Traceback (most recent call last):\n ...\n AttributeError: subkey 'MyTests' does not exist\n >>> HKCU.Software.MyTests = Key\n >>> HKCU.Software.MyTests\n \n >>> del HKCU.Software.MyTests\n\nOf course, for keys that don't happen to be named like python identifiers,\nthere are also methods that can accomplish the same thing. To help reduce\nvisual clutter, calling a key object is a shorthand for attribute lookup:\n\n >>> HKCU.Software.set_subkey(\"my-funny-key\",Key)\n >>> HKCU.Software.get_subkey(\"my-funny-key\").SubKey = Key\n >>> HKCU(\"Software\\my-funny-key\\SubKey\")\n \n >>> HKCU.Software.del_subkey(\"my-funny-key\")\n\nThe individual values contained in a key can be accessed using standard\nitem access syntax. The returned objects will be instances of the Value\nclass, with 'name', 'type' and 'data' attributes:\n\n >>> HKCU.Software.Microsoft.Clock[\"iFormat\"]\n \n >>> HKCU.Software.Microsoft.Clock[\"iFormat\"].name\n 'iFormat'\n >>> print(HKCU.Software.Microsoft.Clock[\"iFormat\"].data)\n 1\n >>> print(type(HKCU.Software.Microsoft.Clock[\"iFormat\"].data) is type(b'1'.decode('utf8')))\n True\n >>> HKCU.Software.Microsoft.Clock[\"iFormat\"].type\n 1\n >>> HKCU.Software.Microsoft.Clock[\"notavalue\"]\n Traceback (most recent call last):\n ...\n KeyError: \"no such value: 'notavalue'\"\n \nIterating over a key generates all the contained values, followed by\nall the contained subkeys. There are also methods to seperately iterate\nover just the values, and just the subkeys:\n\n >>> winK = HKCU.Software.Microsoft.Windows\n >>> winK[\"testvalue\"] = 42\n >>> for obj in winK:\n ... print(obj)\n \n \n \n \n >>> [k.name for k in winK.subkeys()]\n ['CurrentVersion', 'Shell', 'ShellNoRoam']\n >>> [v.data for v in winK.values()]\n [42]\n >>> del winK[\"testvalue\"]\n\nThese iterators also provide efficient implementations of the __contains__\nand __len__ methods, so they can be used as follows:\n\n >>> \"Shell\" in HKCU.Software.Microsoft.Windows\n True\n >>> \"Shell\" in HKCU.Software.Microsoft.Windows.subkeys()\n True\n >>> \"Shell\" in HKCU.Software.Microsoft.Windows.values()\n False\n >>> len(HKCU.Software.Microsoft.Windows)\n 3\n >>> len(HKCU.Software.Microsoft.Windows.values())\n 0\n\nFinally, there is powerful support for specifying key and value structures\nat creation time. The simplest case has already been demonstrated, where\nsetting a subkey to the Key class or to None will create it without any data:\n\n >>> HKCU.Software.MyTests = None\n >>> len(HKCU.Software.MyTests)\n 0\n\nIf a subkey is assigned an existing key object, the data from that key is\ncopied into the subkey:\n\n >>> HKCU.Software.MyTests = HKCU.Software.Microsoft.Windows\n >>> len(HKCU.Software.MyTests)\n 3\n >>> [k.name for k in HKCU.Software.MyTests]\n ['CurrentVersion', 'Shell', 'ShellNoRoam']\n >>> del HKCU.Software.MyTests\n\nIf a subkey is assigned a dictionary, the structure of that dictionary is\ncopied into the subkey. Scalar values become key values, while nested \ndictionaries create subkeys:\n\n >>> HKCU.Software.MyTests = {\"val1\":7, \"stuff\":{\"a\":1,\"c\":2,\"e\":3}}\n >>> len(HKCU.Software.MyTests)\n 2\n >>> [v.name for v in HKCU.Software.MyTests.values()]\n ['val1']\n >>> [k.name for k in HKCU.Software.MyTests.subkeys()]\n ['stuff']\n >>> len(HKCU.Software.MyTests.stuff)\n 3\n >>> del HKCU.Software.MyTests\n\nAny other value assigned to a subkey will become the default value for\nthat key (i.e. the value with name \"\"):\n\n >>> HKCU.Software.MyTests = \"dead parrot\"\n >>> print(HKCU.Software.MyTests[\"\"].data)\n dead parrot\n >>> print(type(HKCU.Software.MyTests[\"\"].data) is type(b'dead parrot'.decode('utf8')))\n True\n >>> del HKCU.Software.MyTests\n \nAnd that's that - enjoy!", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rfk/regobj", "keywords": "windows registry", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "regobj", "package_url": "https://pypi.org/project/regobj/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/regobj/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/rfk/regobj" }, "release_url": "https://pypi.org/project/regobj/0.2.2/", "requires_dist": null, "requires_python": null, "summary": "Pythonic object-based access to the Windows Registry.", "version": "0.2.2" }, "last_serial": 798751, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "b88caf8e005bffc1047c68dd892bc1d1", "sha256": "d0304ea473a7e429b1093090efde5e9015b71ceac7c1cd4d644f3d64b5645de4" }, "downloads": -1, "filename": "regobj-0.1.0.win32.exe", "has_sig": false, "md5_digest": "b88caf8e005bffc1047c68dd892bc1d1", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 74070, "upload_time": "2009-05-03T16:23:38", "url": "https://files.pythonhosted.org/packages/76/65/edca8068b3626d52ac62387af99c7996343667b7108a6269032a5d5a8602/regobj-0.1.0.win32.exe" }, { "comment_text": "", "digests": { "md5": "7353ade132d0853718353b6c44a85cb8", "sha256": "6f623bf4a2176a522ed0c50a13966c47805be4f542c131db823b53230a7fc537" }, "downloads": -1, "filename": "regobj-0.1.0.zip", "has_sig": false, "md5_digest": "7353ade132d0853718353b6c44a85cb8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7859, "upload_time": "2009-05-03T16:23:49", "url": "https://files.pythonhosted.org/packages/6f/6a/2c20768203f0d5c058777e4c141613d0d5b87044c905d710ef81f23af2c7/regobj-0.1.0.zip" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "1228393ea571df8010ee700ce4024d23", "sha256": "d1b4e0451cf41960cf2e8c8c488c2945a0b2ac7e168dab5e958984f79e9d657d" }, "downloads": -1, "filename": "regobj-0.1.1.win32.exe", "has_sig": false, "md5_digest": "1228393ea571df8010ee700ce4024d23", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 208743, "upload_time": "2009-07-31T08:51:27", "url": "https://files.pythonhosted.org/packages/82/2a/fbdf9659fbda1e942998b4d87588f5ebb83ed66be32b705d1475152c68ba/regobj-0.1.1.win32.exe" }, { "comment_text": "", "digests": { "md5": "f7e2b0e98136edeb3d0c4200b07f93ce", "sha256": "7bfe1990b27ef71e98db2811e471b1aa47bc4f72ee06710efc993f381998323d" }, "downloads": -1, "filename": "regobj-0.1.1.zip", "has_sig": false, "md5_digest": "f7e2b0e98136edeb3d0c4200b07f93ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7876, "upload_time": "2009-07-31T08:51:09", "url": "https://files.pythonhosted.org/packages/d6/33/da9a1ab55d6fd1100b1c1cf965edb9ba5406763be77f3587468b454b7ea9/regobj-0.1.1.zip" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "348e26d8c37b3c0d2bf9628b5b0fe7ea", "sha256": "26a5d763dc95504c091b2e8545db852ab3ccb72ac409b4ec6697b1207414d04b" }, "downloads": -1, "filename": "regobj-0.1.2.tar.gz", "has_sig": false, "md5_digest": "348e26d8c37b3c0d2bf9628b5b0fe7ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6434, "upload_time": "2009-08-07T07:30:21", "url": "https://files.pythonhosted.org/packages/23/00/2cd8b3ea4c5e980888cf99e425ff3b91c05774249bd28dbd5db53fd8cc10/regobj-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "fa4012a01da05a5936d1fc338a7ab1d1", "sha256": "08e3f4040138a7b0fa58582415dd827da3b8698aaacfdd7b4625cac6068797f2" }, "downloads": -1, "filename": "regobj-0.1.3.tar.gz", "has_sig": false, "md5_digest": "fa4012a01da05a5936d1fc338a7ab1d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6440, "upload_time": "2010-03-11T22:34:03", "url": "https://files.pythonhosted.org/packages/d2/8a/f7650f29fa72eee6ac655b89d4e7ad219e33b8e8393a5700ba7e3431b4da/regobj-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "f3dc2cd1fc78bc5f51e1f5bac257a327", "sha256": "602496ed93efbd815f0422ef63101877cfd609dd353f9e2fd701b93bb4115ef9" }, "downloads": -1, "filename": "regobj-0.1.4.tar.gz", "has_sig": false, "md5_digest": "f3dc2cd1fc78bc5f51e1f5bac257a327", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6707, "upload_time": "2010-03-14T04:41:34", "url": "https://files.pythonhosted.org/packages/07/d0/ce2c814cac6307d64d4fec8dd89a28d94799fbcf5ded63fab43cb4d9766f/regobj-0.1.4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "1c7ae0c1092eaf3a1f35eec462fd8076", "sha256": "8f58900bdbde62e9dd3d9b3b1eb17be7b4706fec6e70314102a24fdc4dc09ee7" }, "downloads": -1, "filename": "regobj-0.2.0.tar.gz", "has_sig": false, "md5_digest": "1c7ae0c1092eaf3a1f35eec462fd8076", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7044, "upload_time": "2011-03-23T00:22:23", "url": "https://files.pythonhosted.org/packages/05/d5/0327d7e50cc43634482b76aeec31790241c89b2aa30837f5dc15b155cc3c/regobj-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "fe878ddac0c89fe73fe795e0c2db4247", "sha256": "a6df3c093cef793bf6dd6efa5748870e43f0f3ab1774118182e43c97254af071" }, "downloads": -1, "filename": "regobj-0.2.1.tar.gz", "has_sig": false, "md5_digest": "fe878ddac0c89fe73fe795e0c2db4247", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7185, "upload_time": "2011-03-24T00:04:38", "url": "https://files.pythonhosted.org/packages/b8/95/cd946fdfc61952131e1384f6a5007939670dfd9dfd285bcb366569f5f2ac/regobj-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "9434d2d42dfda5212bd3684bea04e970", "sha256": "6be8ba286a7f5c63cfe3ff27ef7247a02caa4c31c6de1b6e0ee64c5cb47fc5ce" }, "downloads": -1, "filename": "regobj-0.2.2.tar.gz", "has_sig": false, "md5_digest": "9434d2d42dfda5212bd3684bea04e970", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7184, "upload_time": "2011-03-31T01:03:29", "url": "https://files.pythonhosted.org/packages/3b/d3/4718afcfef17488d46c62f9abb3df920f0c3421ce938bbc6e3fc78fa18a9/regobj-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9434d2d42dfda5212bd3684bea04e970", "sha256": "6be8ba286a7f5c63cfe3ff27ef7247a02caa4c31c6de1b6e0ee64c5cb47fc5ce" }, "downloads": -1, "filename": "regobj-0.2.2.tar.gz", "has_sig": false, "md5_digest": "9434d2d42dfda5212bd3684bea04e970", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7184, "upload_time": "2011-03-31T01:03:29", "url": "https://files.pythonhosted.org/packages/3b/d3/4718afcfef17488d46c62f9abb3df920f0c3421ce938bbc6e3fc78fa18a9/regobj-0.2.2.tar.gz" } ] }