{ "info": { "author": "Zygmunt Krynicki", "author_email": "zygmunt.krynicki@canonical.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", "Natural Language :: English", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "===============================================\nPure-Python bindings to glibc (based on ctypes)\n===============================================\n\n.. image:: https://badge.fury.io/py/glibc.png\n :target: http://badge.fury.io/py/glibc\n\n.. image:: https://travis-ci.org/zyga/python-glibc.png?branch=master\n :target: https://travis-ci.org/zyga/python-glibc\n\n.. image:: https://pypip.in/d/glibc/badge.png\n :target: https://pypi.python.org/pypi/glibc\n\nFeatures\n========\n\n* Free software: LGPLv3 license\n* Works on python 2.7+ and python 3.2+ and pypy\n* Currently exposes 23 low-level glibc functions (see below), 10 data types and\n 118 constants. All useful glibc features are in scope (patches welcome!)\n* ``from glibc import ...`` -- direct access to glibc constants, functions and\n types via lazy imports, fast startup, low memory overhead, efficient calls to\n glibc\n* Translates error codes according to documentation (manual pages) of each\n supported function. Raises OSError with appropriate values and a customized,\n easy-to-understand error message.\n* Uses declarative \"bindings\", easy to verify for correctness, easy to add more\n types, functions and constants. Built-in tests verify the value of each\n constant, size and offset of each structure / union field and the size of the\n whole structure / union.\n* Adds high-level abstractions on top of raw functions (pyglibc.select,\n pyglibc.signalfd, pyglibc.selectors, pyglibc.pthread_sigmask, pyglibc.pipe,\n pyglibc.subreaper) so that using them is easier and more pythonic.\n* This code is entirely optional and users can still call the low-level\n C-equivalents directly.\n* Where possible, existing Python APIs are followed so that glibc_select and\n glibc_selectors are drop-in replacements for the select and selectors modules\n from Python's standard library.\n\nFunctions\n=========\n\nThe following glibc functions are supported\n\n=========================== =================================\n Name Remarks\n=========================== =================================\n``clock_getres(2)``\n``clock_gettime(2)``\n``clock_settime(2)``\n``close(2)`` Same as os.close()\n``dup(2)`` Same as os.dup()\n``dup2(2)`` Same as os.dup2()\n``dup3(2)`` Same as os.dup(flags=)\n``epoll_create(2)`` Similar to select.epoll()\n``epoll_create1(2)`` Similar to select.epoll()\n``epoll_ctl(2)`` Similar to select.epoll.{register,unregister,modify}\n``epoll_pwait(2)``\n``epoll_wait(2)`` Similar to select.epoll.poll()\n``eventfd(2)``\n``eventfd_read(2)``\n``eventfd_write(2)``\n``pause(2)``\n``pipe(2)`` Same as os.pipe\n``pipe2(2)``\n``prctl(2)``\n``pthread_sigmask(2)``\n``read(2)`` Unlike os.read, this one makes no copies\n``sigaddset(3)``\n``sigdelset(3)``\n``sigemptyset(3)``\n``sigfillset(3)``\n``sigismember(3)``\n``signalfd(2)``\n``sigprocmask(2)``\n``timerfd_create(2)``\n``timerfd_gettime(2)``\n``timerfd_settime(2)``\n\n\n0.6.1 (2014-11-20)\n==================\n\n* Small change to internal APIs (no need to upgrade or there are no public API\n changes).\n\n0.6 (2014-11-09)\n================\n\n* Functions from the pthread library are now supported\n* Added functions: ``read(2)``, ``pause(2)``, ``eventfd(2)``,\n ``eventfd_read(2)``, ``eventfd_write(2)``, ``clock_getres(2)``,\n ``clock_gettime(2)`` and ``clock_settime(2)``.\n* Added constants: ``NSIG``, ``EFD_CLOEXEC``, ``EFD_NONBLOCK``,\n ``EFD_SEMAPHORE``, ``CLOCK_REALTIME``, ``CLOCK_MONOTONIC``,\n ``CLOCK_PROCESS_CPUTIME_ID``, ``CLOCK_THREAD_CPUTIME_ID``,\n ``CLOCK_MONOTONIC_RAW``, ``CLOCK_REALTIME_COARSE``,\n ``CLOCK_MONOTONIC_COARSE``, ``CLOCK_BOOTTIME``, ``CLOCK_REALTIME_ALARM``,\n ``CLOCK_BOOTTIME_ALARM``,\n* Added new module :mod:`pyglibc.select` that contains a Python 2.7+ version of the\n select.py from Python 3.4. This module contains a pure-python version of the\n ``epoll`` class. It may be used in place of the module from the standard\n library if additional features are desired in a cross-python-version portable\n manner.\n* Added new module :mod:`pyglibc.selectors` that contains a Python 2.7+ version\n of the selectors.py from Python 3.4. As with pyglibc.select, it can be used\n in place of the original.\n* Added new module :mod:`pyglibc._signalfd` that exposes ``signalfd(2)`` in a\n much more pythonic way. Use signalfd as a file, as a context manager, inspect\n it in pdb, all easily without having to browse through manual pages. It is\n exposed as ``pyglibc.signalfd`` for easier importing.\n* Added new module :mod:`pyglibc._pthread_sigmask` that exposes\n ``pthread_sigmask(2)`` in a much more pythonic way, making it a perfect\n companion for the ``signalfd()`` class. It is exposed as\n ``pyglibc.pthread_sigmask`` for easier importing.\n* Added new module :mod:`pyglibc._pipe` that expoes ``pipe2(2)`` in the same\n way as Python 3.4 does via the ``os.pipe()`` and ``os.pipe2()`` functions.\n* Added new module :mod:`pyglibc._subreaper` that adds pythonic API to\n ``prctl(PR_{GET,SET}_CHILD_SUBREAPER, ...)``. This module exposes a single\n instance called ``subreaper``.\n\n0.5 (2014-10-22)\n================\n\n* Added tests for structure / union size and offset of each field\n* New feature, type aliases for non-compound types like ``time_t``.\n* Added functions: ``prctl(2)``, ``timerfd_create(2)``, ``timerfd_settime(2)``,\n ``timerfd_gettime(2)``.\n* Added constants: ``PR_SET_PDEATHSIG``, ``PR_GET_PDEATHSIG``,\n ``PR_GET_DUMPABLE``, ``PR_SET_DUMPABLE``, ``PR_GET_UNALIGN``,\n ``PR_SET_UNALIGN``, ``PR_GET_KEEPCAPS``, ``PR_SET_KEEPCAPS``,\n ``PR_GET_FPEMU``, ``PR_SET_FPEMU``, ``PR_GET_FPEXC``, ``PR_SET_FPEXC``,\n ``PR_GET_TIMING``, ``PR_SET_TIMING``, ``PR_SET_NAME``, ``PR_GET_NAME``,\n ``PR_GET_ENDIAN``, ``PR_SET_ENDIAN``, ``PR_GET_SECCOMP``, ``PR_SET_SECCOMP``,\n ``PR_CAPBSET_READ``, ``PR_CAPBSET_DROP``, ``PR_GET_TSC``, ``PR_SET_TSC``,\n ``PR_GET_SECUREBITS``, ``PR_SET_SECUREBITS``, ``PR_SET_TIMERSLACK``,\n ``PR_GET_TIMERSLACK``, ``PR_TASK_PERF_EVENTS_DISABLE``,\n ``PR_TASK_PERF_EVENTS_ENABLE``, ``PR_MCE_KILL``, ``PR_MCE_KILL_GET``,\n ``PR_SET_MM``, ``PR_SET_CHILD_SUBREAPER``, ``PR_GET_CHILD_SUBREAPER``,\n ``PR_SET_NO_NEW_PRIVS``, ``PR_GET_NO_NEW_PRIVS``, ``PR_GET_TID_ADDRESS``,\n ``PR_SET_THP_DISABLE``, ``PR_GET_THP_DISABLE``, ``PR_UNALIGN_NOPRINT``,\n ``PR_UNALIGN_SIGBUS``, ``PR_FPEMU_NOPRINT``, ``PR_FPEMU_SIGFPE``,\n ``PR_FP_EXC_SW_ENABLE``, ``PR_FP_EXC_DIV``, ``PR_FP_EXC_OVF``,\n ``PR_FP_EXC_UND``, ``PR_FP_EXC_RES``, ``PR_FP_EXC_INV``,\n ``PR_FP_EXC_DISABLED``, ``PR_FP_EXC_NONRECOV``, ``PR_FP_EXC_ASYNC``,\n ``PR_FP_EXC_PRECISE``, ``PR_TIMING_STATISTICAL``, ``PR_TIMING_TIMESTAMP``,\n ``PR_ENDIAN_BIG``, ``PR_ENDIAN_LITTLE``, ``PR_ENDIAN_PPC_LITTLE``,\n ``PR_TSC_ENABLE``, ``PR_TSC_SIGSEGV``, ``PR_MCE_KILL_CLEAR``,\n ``PR_MCE_KILL_SET``, ``PR_MCE_KILL_LATE``, ``PR_MCE_KILL_EARLY``,\n ``PR_MCE_KILL_DEFAULT``, ``PR_SET_MM_START_CODE``, ``PR_SET_MM_END_CODE``,\n ``PR_SET_MM_START_DATA``, ``PR_SET_MM_END_DATA``, ``PR_SET_MM_START_STACK``,\n ``PR_SET_MM_START_BRK``, ``PR_SET_MM_BRK``, ``PR_SET_MM_ARG_START``,\n ``PR_SET_MM_ARG_END``, ``PR_SET_MM_ENV_START``, ``PR_SET_MM_ENV_END``,\n ``PR_SET_MM_AUXV``, ``PR_SET_MM_EXE_FILE``, ``PR_SET_PTRACER``,\n ``PR_SET_PTRACER_ANY``, ``TFD_TIMER_ABSTIME``, ``TFD_CLOEXEC``\n and ``TFD_NONBLOCK``,\n* Added structures: ``struct itimerspec``, ``struct timespec`` and\n ``struct timeval``.\n* Added type alias for ``time_t`` and ``suseconds_t``\n\n0.4 (2014-10-21)\n================\n\n* Started tracking changes relevant to other people.\n* First release with tests for constants and type sizes.\n* Fixed issues with ``struct epoll_event`` (size mismatch).\n* Added functions: ``close(2)``.\n* Added constants: ``FD_SETSIZE``, ``EPOLLRDNORM``, ``EPOLLRDBAND``,\n ``EPOLLWRNORM``, ``EPOLLWRBAND``, ``EPOLLMSG``.\n* Improved bundled demos (not part of release)", "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/zyga/python-glibc/", "keywords": null, "license": "LGPLv3", "maintainer": null, "maintainer_email": null, "name": "glibc", "package_url": "https://pypi.org/project/glibc/", "platform": "Linux", "project_url": "https://pypi.org/project/glibc/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/zyga/python-glibc/" }, "release_url": "https://pypi.org/project/glibc/0.6.1/", "requires_dist": null, "requires_python": null, "summary": "Pure-Python bindings to glibc (based on ctypes)", "version": "0.6.1" }, "last_serial": 1314193, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "0f6eea01cb40942e8334d0325db6da35", "sha256": "37bcb3d90ef6f31c03570ce127202acc5f54fa652999461f35aeb0b65cf9b480" }, "downloads": -1, "filename": "glibc-0.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "0f6eea01cb40942e8334d0325db6da35", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7401, "upload_time": "2014-10-19T23:33:42", "url": "https://files.pythonhosted.org/packages/fb/5e/9eb4bd35f97ea3c3bd5f63d2e2fabf8a26ea950b6a069dad1ea0b932e58f/glibc-0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "563e2e1c75bf0b3fd976259df2588cc3", "sha256": "b88e383dc488426bdb9e2d44def320f88681c2d03a0473a11e79477a8695f454" }, "downloads": -1, "filename": "glibc-0.1.tar.gz", "has_sig": true, "md5_digest": "563e2e1c75bf0b3fd976259df2588cc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8913, "upload_time": "2014-10-19T23:33:34", "url": "https://files.pythonhosted.org/packages/99/c9/c232a4d85257b4095754974966f4cf6db61abd1c6f5378ea951dd88cec4a/glibc-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "0d0db41c8aacc1f531ddb8cdb1259c96", "sha256": "6563092468b413d7f2af0bd21babcced470dad8c8de23ded003f7897ec2c667b" }, "downloads": -1, "filename": "glibc-0.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "0d0db41c8aacc1f531ddb8cdb1259c96", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8638, "upload_time": "2014-10-20T11:04:47", "url": "https://files.pythonhosted.org/packages/22/05/d97fdf3201b17d6fdc30dd0b6d6c8ac45e1de12eb0112216dfad2bd0cd30/glibc-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0ba38bd5b942ef3b062eb7fe61444c14", "sha256": "5e7d4ee6712ddb75bdda59889bda43ee9e0c8dba505abc574c962d80f15c0823" }, "downloads": -1, "filename": "glibc-0.2.tar.gz", "has_sig": true, "md5_digest": "0ba38bd5b942ef3b062eb7fe61444c14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71913, "upload_time": "2014-10-20T11:04:35", "url": "https://files.pythonhosted.org/packages/ea/ba/ce6432571e942b29b982be3d412472f39ba5a311b62b3f327d52b0803c33/glibc-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "876bd493dc6d4921876ee8419f435044", "sha256": "f31ade3df45ad2cb88e91c570f6e2c108a6553b72a2e05e6f39b9bf9382cbe80" }, "downloads": -1, "filename": "glibc-0.3-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "876bd493dc6d4921876ee8419f435044", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 9286, "upload_time": "2014-10-20T16:26:10", "url": "https://files.pythonhosted.org/packages/a5/bb/72890820df2a474cb030b08757b6204da061ee71f6cdced96406389dcee2/glibc-0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3875d2373792d94c8d7c38559c10a2bf", "sha256": "29854dbf7e49c4eea2fc8fa9b59efdddd4fafbbe2790568819ab4cfe773445ec" }, "downloads": -1, "filename": "glibc-0.3.tar.gz", "has_sig": true, "md5_digest": "3875d2373792d94c8d7c38559c10a2bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74577, "upload_time": "2014-10-20T16:26:00", "url": "https://files.pythonhosted.org/packages/95/5c/0171e45282098de608c6569e428d39bdb4ae9c83d4438e413b874662b62b/glibc-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "6a174989ce311d8985348a87066a3006", "sha256": "8784cdcb3c3b5bfc3df61ab44d880767abe48a5d3d7f133b13e48fba8e55ba56" }, "downloads": -1, "filename": "glibc-0.4-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "6a174989ce311d8985348a87066a3006", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10001, "upload_time": "2014-10-21T22:00:32", "url": "https://files.pythonhosted.org/packages/75/5e/50788bd9c762b0aa4bcab58439cf8c5a30ca47b011bc05c8ba26ba53fdba/glibc-0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "238b3f6667a207fac579bbbd8e0f3a7e", "sha256": "c3b05c2979d915e0cee321a92ba90d36699b59058fe4da989740164c87c21110" }, "downloads": -1, "filename": "glibc-0.4.tar.gz", "has_sig": true, "md5_digest": "238b3f6667a207fac579bbbd8e0f3a7e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 77508, "upload_time": "2014-10-21T22:00:13", "url": "https://files.pythonhosted.org/packages/b4/63/e0ae4ac2950de3b6fafaeb9b6b4374cd85af5005d4de12dc278b698b121c/glibc-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "5634dc9dd07797203455705834d7b9a3", "sha256": "e0e50e4b7cf06d39a492df1288ddb912a05b0baff8af5c954744e06fb0d3ee66" }, "downloads": -1, "filename": "glibc-0.5-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "5634dc9dd07797203455705834d7b9a3", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14300, "upload_time": "2014-10-22T19:01:00", "url": "https://files.pythonhosted.org/packages/43/dd/6eab2c0e4356c43cd01fda51727af013aca164f2b9d5122ddd8678e62998/glibc-0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "220100a385b774c607f430fae134cdcd", "sha256": "6be226796a07fb005ef5907f1811708d37c6cc18e3e0ce0ae0fd7c23d70a13e8" }, "downloads": -1, "filename": "glibc-0.5.tar.gz", "has_sig": true, "md5_digest": "220100a385b774c607f430fae134cdcd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85002, "upload_time": "2014-10-22T19:00:50", "url": "https://files.pythonhosted.org/packages/fe/b3/f8a2b0a5335f43650225c89048eec83cfd5a4101a3fcfcb1d87b9a33d1d3/glibc-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "63a9f3fb35019cad215efbee9a87aff5", "sha256": "be5c09c4ebf71e47f3d9089a691646cfe1b0b9df11071b3d2b96dc5af2638ba4" }, "downloads": -1, "filename": "glibc-0.6-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "63a9f3fb35019cad215efbee9a87aff5", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 36525, "upload_time": "2014-11-09T14:08:08", "url": "https://files.pythonhosted.org/packages/de/d6/608b2a30608caba4b3839aa9c2a9e5d13b2741509f88be57911eba1dd837/glibc-0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "34a091dcadb51bba9535b7c08691eb34", "sha256": "f10c4f0ee31999d61590923eb27a8b248cc7442b7654af72d0f16c491e97860b" }, "downloads": -1, "filename": "glibc-0.6.tar.gz", "has_sig": true, "md5_digest": "34a091dcadb51bba9535b7c08691eb34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 97808, "upload_time": "2014-11-09T14:08:05", "url": "https://files.pythonhosted.org/packages/20/db/2429de910d6ad20721ae6468a4f136271a87ca53a7744fc3601c4f7581bb/glibc-0.6.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "39aedff0d609f63f838c401d0c0774dd", "sha256": "5059d33b744ed95931802f8a5ac628e86a2e8dc4e7e15bb86bccfc1e72ec063b" }, "downloads": -1, "filename": "glibc-0.6.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "39aedff0d609f63f838c401d0c0774dd", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 35227, "upload_time": "2014-11-20T10:05:38", "url": "https://files.pythonhosted.org/packages/90/10/ab7646563ebd3ae3cd1ddba2e47f9ee1178680f3af34e20487a93f7067eb/glibc-0.6.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "abfa9b6893577def3a0ece1baab55c74", "sha256": "22a39c34742a60e739cfc501bd1fa7b4c529aa0f13cd612a83186ecc087b22c5" }, "downloads": -1, "filename": "glibc-0.6.1.tar.gz", "has_sig": true, "md5_digest": "abfa9b6893577def3a0ece1baab55c74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 97697, "upload_time": "2014-11-20T10:05:35", "url": "https://files.pythonhosted.org/packages/9c/8a/abc11cfecf3e80ddcc3ce66886c25ff71b819a4fadbbd8ad5d5c9949bcd2/glibc-0.6.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "39aedff0d609f63f838c401d0c0774dd", "sha256": "5059d33b744ed95931802f8a5ac628e86a2e8dc4e7e15bb86bccfc1e72ec063b" }, "downloads": -1, "filename": "glibc-0.6.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "39aedff0d609f63f838c401d0c0774dd", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 35227, "upload_time": "2014-11-20T10:05:38", "url": "https://files.pythonhosted.org/packages/90/10/ab7646563ebd3ae3cd1ddba2e47f9ee1178680f3af34e20487a93f7067eb/glibc-0.6.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "abfa9b6893577def3a0ece1baab55c74", "sha256": "22a39c34742a60e739cfc501bd1fa7b4c529aa0f13cd612a83186ecc087b22c5" }, "downloads": -1, "filename": "glibc-0.6.1.tar.gz", "has_sig": true, "md5_digest": "abfa9b6893577def3a0ece1baab55c74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 97697, "upload_time": "2014-11-20T10:05:35", "url": "https://files.pythonhosted.org/packages/9c/8a/abc11cfecf3e80ddcc3ce66886c25ff71b819a4fadbbd8ad5d5c9949bcd2/glibc-0.6.1.tar.gz" } ] }