{ "info": { "author": "Tim Golden", "author_email": "mail@timgolden.me.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: Microsoft :: Windows :: Windows NT/2000", "Programming Language :: Python :: 3", "Topic :: Utilities" ], "description": "======\nwinsys\n======\n\nEnter WinSys: the Python Windows Administrator's Toolkit. A collection\nof modules with a consistent approach, wrapping the Windows API\ncalls already exposed by pywin32, adding some with ctypes, and giving them\nall a pythonic feel. There's nothing here you couldn't do yourself with\n10 minutes and a copy of the pywin32 and SDK docs. But it's all here already,\nand with a more Pythonish feel about it.\n\nDesign Principles\n-----------------\n\nThe following principles have directed the design of the modules\nand packages wherever possible:\n\n* Make ad-hoc use possible and easy (and even attractive)\n* Provide sensible defaults for the common cases, always allowing for more complex scenarios\n* Put all constants into one place, grouping them according to their API usage\n* Use the pywin32 functionality where available, supplementing it with ctypes where needed\n* Assume a recent version of Python (2.5 at least)\n* Make good use of context managers (with-statements)\n* Have each object able to dump its contents and that of its children cleanly\n* Maintain an object approach, but provide convenient module-level functions\n* Have useful factory functions for classes, robustly accepting string or object parameters\n\nCommon Features\n---------------\n\nMost of the objects in winsys subclass the :class:`core._WinSysObject` class which\noffers sensible defaults and defines common functionality such as a dump function.\nIn addition, the following features are common to many of the modules:\n\nPythonic Naming\n~~~~~~~~~~~~~~~\n\nThis is mildly contentious, but the same naming convention has been used\nthroughout, following the ``lowercase_with_underscores`` convention widely\nadopted in the Python community. The most widespread exception to this is\nin the :mod:`constants` module, where Windows constants retain their\n``UPPERCASE_WITH_UNDERSCORES`` names.\n\nModule-level Functions\n~~~~~~~~~~~~~~~~~~~~~~\n\nWhile a lot of use has been made of Python classes to wrap the function-driven\nWindows API, a lot of the functionality has been exposed as module-level\nconvenience functions. So, for example, in the :mod:`fs` module, the :class:`fs.File`\nclass offers a :meth:`fs.File.copy` method, but the same functionality is exposed\nat the module level as :func:`fs.copy`. That way, you don't have to instantiate\none or more objects simply for the purpose of a single operation.\n\nFactory Functions\n~~~~~~~~~~~~~~~~~\n\nMost of the classes have a corresponding factory function (usually with\nthe same name in lower case) which tries to be more accepting in what\nits parameters are and to convert them to what's needed by the class's\nown ``__init__`` method. So, for example, the :class:`Principal` class whose\ninitialiser expects a PySID structure has a corresponding :func:`principal`\nfunction which will take a Sid or a user or group name or None or an existing\n:class:`Principal` object.\n\nDump\n~~~~\n\nEach object derived from :class:`core._WinSysObject` has a dump method which\nis intended to display its internal structures, possibly recursively where\nsome of the structures are themselves WinSys objects. This is intended more\nfor ad-hoc use in the interpreter where it's convenient to see, eg, the\nsecurity structure which has been loaded from a file.\n\nIterators & Generators\n~~~~~~~~~~~~~~~~~~~~~~\n\nWhere possible and meaningful, lazy iterators have been used, often\nimplemented by generators. This started in the :mod:`fs` module where\nthousands of files were being queried for information, but the approach\nhas generally been adopted across the package.\n\nContext Managers\n~~~~~~~~~~~~~~~~\n\nWhere it makes sense, context managers have been used, either by means\nof the contextlib contextmanager decorator or by defining an object as\nits own context manager by means of ``__enter__`` and ``__exit__`` methods.\nExamples of context-managed objects include the :class:`ipc.Mailslot` and\n:class:`security.Security` objects. Examples of decorated functions include\nthe :func:`security.change_privileges` and :func:`security.impersonate` functions.\n\nToDo\n----\n\nObviously, there's loads to do. The Windows API is vast; even the amount of\nit exposed by pywin32 far exceeds my immediate needs and the time at my\ndisposal. The implementation of this package has been driven largely by the\nvery specific needs of our Windows sysadmins in their day-to-day work. My\nintention is to carry on wrapping Windows functionality in a similar way,\nbut if anyone has particular needs, or can provide functionality to add in,\nlet's hear about it.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://code.google.com/p/winsys", "keywords": null, "license": "LICENSE.txt", "maintainer": null, "maintainer_email": null, "name": "WinSys-3.x", "package_url": "https://pypi.org/project/WinSys-3.x/", "platform": "win32", "project_url": "https://pypi.org/project/WinSys-3.x/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://code.google.com/p/winsys" }, "release_url": "https://pypi.org/project/WinSys-3.x/0.5.2/", "requires_dist": null, "requires_python": null, "summary": "Python tools for the Windows sysadmin", "version": "0.5.2" }, "last_serial": 786016, "releases": { "0.5.1": [ { "comment_text": "", "digests": { "md5": "279299911ee7af4e8104b77e3c02bb90", "sha256": "fa145ea05dd499f4533944f4194ce56768bd49da11c6f4db6b8bccb32b984444" }, "downloads": -1, "filename": "WinSys-3.x-0.5.1.zip", "has_sig": false, "md5_digest": "279299911ee7af4e8104b77e3c02bb90", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 192852, "upload_time": "2010-08-20T17:16:03", "url": "https://files.pythonhosted.org/packages/cf/be/40bb127a8985b64364d8aa4c5ae6c487864e355ad1387635aa3f4f79c0fc/WinSys-3.x-0.5.1.zip" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "1db8205fba209f1799932db611670acd", "sha256": "cef3df1dce2a5a71efa46446e6007ad9f7dbae31e83ffcc2ea3485c00c914cc3" }, "downloads": -1, "filename": "WinSys-3.x-0.5.2.zip", "has_sig": false, "md5_digest": "1db8205fba209f1799932db611670acd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 192856, "upload_time": "2010-08-20T17:18:15", "url": "https://files.pythonhosted.org/packages/cf/ef/bff0c176620c06230bd0227edc0c8b6b746de842ed0cd84810dfdd69b1a6/WinSys-3.x-0.5.2.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1db8205fba209f1799932db611670acd", "sha256": "cef3df1dce2a5a71efa46446e6007ad9f7dbae31e83ffcc2ea3485c00c914cc3" }, "downloads": -1, "filename": "WinSys-3.x-0.5.2.zip", "has_sig": false, "md5_digest": "1db8205fba209f1799932db611670acd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 192856, "upload_time": "2010-08-20T17:18:15", "url": "https://files.pythonhosted.org/packages/cf/ef/bff0c176620c06230bd0227edc0c8b6b746de842ed0cd84810dfdd69b1a6/WinSys-3.x-0.5.2.zip" } ] }