ModernGL


NameModernGL JSON
Version 5.0.7 PyPI version JSON
download
home_pagehttps://github.com/cprogrammer1994/ModernGL
SummaryModernGL: High performance rendering for Python 3
upload_time2018-04-08 12:10:07
maintainer
docs_urlNone
authorSzabolcs Dombi
requires_python
licenseMIT
keywords moderngl opengl pyopengl rendering graphics shader glsl gpu visualization 2d 3d
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            ModernGL
========

.. code-block:: sh

   pip install ModernGL


* `Documentation <https://moderngl.readthedocs.io/>`_
* `Examples <https://github.com/cprogrammer1994/ModernGL/tree/master/examples/#readme>`_
* `ModernGL on Github <https://github.com/cprogrammer1994/ModernGL/>`_
* `ModernGL on PyPI <https://pypi.python.org/pypi/ModernGL/>`_

Features
--------


* GPU accelerated high quality graphics
* Rendering modern OpenGL scenes with less headache
* Simpler and faster than PyOpenGL
* Can render without a window
* 100% Pythonic

Sample usage
------------

.. code-block:: py

   >>> import moderngl
   >>> ctx = moderngl.create_standalone_context()
   >>> buf = ctx.buffer(b'Hello World!')  # allocated on the GPU
   >>> buf.read()
   b'Hello World!'

For complete examples please visit the
`Examples <https://github.com/cprogrammer1994/ModernGL/tree/master/examples/#readme>`_.

Easy to use with Pillow and Numpy
---------------------------------

.. code-block:: py

   >>> img = Image.open('texture.jpg')
   >>> ctx.texture(img.size, 3, img.tobytes())
   <Texture: 1>

.. code-block:: py

   >>> ctx.buffer(np.array([0.0, 0.0, 1.0, 1.0], dtype='f4'))
   <Buffer: 1>

Compared to PyOpenGL
--------------------

With the original OpenGL API you have to write a couple of lines to achieve a **simple task** like compiling a shader
or running a computation on the GPU. With ModernGL you will need just a **few lines** to achieve the same result.

Using PyOpenGL
~~~~~~~~~~~~~~

.. code-block:: py

   vbo1 = glGenBuffers(1)
   GL.glBindBuffer(GL_ARRAY_BUFFER, vbo1)
   GL.glBufferData(GL_ARRAY_BUFFER, b'Hello World!', GL_STATIC_DRAW)

   vbo2 = glGenBuffers(1)
   GL.glBindBuffer(GL_ARRAY_BUFFER, vbo2)
   GL.glBufferData(GL_ARRAY_BUFFER, b'\x00' * 1024, GL_DYNAMIC_DRAW)

Using ModernGL
~~~~~~~~~~~~~~

.. code-block:: py

   vbo1 = ctx.buffer(b'Hello World!')
   vbo2 = ctx.buffer(reserve=1024, dynamic=True)

Build
-----

.. image:: https://img.shields.io/travis/cprogrammer1994/ModernGL/master.svg?label=build
   :target: https://travis-ci.org/cprogrammer1994/ModernGL
   :alt: build


.. image:: https://img.shields.io/appveyor/ci/cprogrammer1994/ModernGL/master.svg?label=build
   :target: https://ci.appveyor.com/project/cprogrammer1994/ModernGL
   :alt: build


.. code-block:: sh

   python setup.py build_ext --inplace

FAQ
---

Is ModernGL faster than PyOpenGL?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

In some cases **yes**\ , the core functions of ModernGL are written in C++, OpenGL functions are called in quick
succession so these calls together count as a single python function call.

What version of OpenGL is used?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Most of the calls only require **OpenGL 3.3** but Subroutines and Compute Shaders require **OpenGL 4.0** and
**OpenGL 4.3**

Is my old PC supported?
^^^^^^^^^^^^^^^^^^^^^^^

OpenGL 3.3 came out in February 2010. With **up to date drivers** you will be able to use the most of the ModernGL
functions, even on integrated graphics cards. *(No, Compute Shaders won't work)*

Where can I use ModernGL?
^^^^^^^^^^^^^^^^^^^^^^^^^

**Anywhere where OpenGL is supported.** ModernGL is capable of rendering using a
`standalone_context <https://github.com/cprogrammer1994/ModernGL/tree/master/examples/standalone>`_ as well.
Rendering to a window only requires a valid OpenGL context.

Can ModernGL create a Window?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

**NO**\ , Window creation is up to you. You can choose from a large variety of modules that can create a window:
`PyQt5 <https://pypi.python.org/pypi/PyQt5/>`_\ , `pyglet <https://bitbucket.org/pyglet/pyglet/wiki/Home>`_\ ,
`pygame <https://www.pygame.org/news>`_\ , `GLUT <https://wiki.python.org/moin/PyOpenGL>`_ and many others.

Limitations using ModernGL over PyOpenGL?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

All the neccessary calls are (or can be) implemented in ModernGL. However you can interract with the ModernGL objects
from PyOpenGL. If something is missing write an `issue <https://github.com/cprogrammer1994/ModernGL/issues>`_ or raise
a `PR <https://github.com/cprogrammer1994/ModernGL/pulls>`_.

Supported platforms
-------------------

* [x] Windows
* [x] Linux
* [x] Mac


            

Raw data

            {
    "maintainer": "", 
    "docs_url": null, 
    "requires_python": "", 
    "maintainer_email": "", 
    "cheesecake_code_kwalitee_id": null, 
    "keywords": "ModernGL,OpenGL,PyOpenGL,rendering,graphics,shader,GLSL,GPU,visualization,2D,3D", 
    "landscape": true, 
    "upload_time": "2018-04-08 12:10:07", 
    "author": "Szabolcs Dombi", 
    "home_page": "https://github.com/cprogrammer1994/ModernGL", 
    "github_user": "cprogrammer1994", 
    "download_url": "https://pypi.python.org/packages/bd/aa/1a2dafe44b4876cfb736b8c66b393f27d81f09fac51adc79be6f46536cd6/moderngl-5.0.7.tar.gz", 
    "platform": "any", 
    "version": "5.0.7", 
    "cheesecake_documentation_id": null, 
    "description": "ModernGL\n========\n\n.. code-block:: sh\n\n   pip install ModernGL\n\n\n* `Documentation <https://moderngl.readthedocs.io/>`_\n* `Examples <https://github.com/cprogrammer1994/ModernGL/tree/master/examples/#readme>`_\n* `ModernGL on Github <https://github.com/cprogrammer1994/ModernGL/>`_\n* `ModernGL on PyPI <https://pypi.python.org/pypi/ModernGL/>`_\n\nFeatures\n--------\n\n\n* GPU accelerated high quality graphics\n* Rendering modern OpenGL scenes with less headache\n* Simpler and faster than PyOpenGL\n* Can render without a window\n* 100% Pythonic\n\nSample usage\n------------\n\n.. code-block:: py\n\n   >>> import moderngl\n   >>> ctx = moderngl.create_standalone_context()\n   >>> buf = ctx.buffer(b'Hello World!')  # allocated on the GPU\n   >>> buf.read()\n   b'Hello World!'\n\nFor complete examples please visit the\n`Examples <https://github.com/cprogrammer1994/ModernGL/tree/master/examples/#readme>`_.\n\nEasy to use with Pillow and Numpy\n---------------------------------\n\n.. code-block:: py\n\n   >>> img = Image.open('texture.jpg')\n   >>> ctx.texture(img.size, 3, img.tobytes())\n   <Texture: 1>\n\n.. code-block:: py\n\n   >>> ctx.buffer(np.array([0.0, 0.0, 1.0, 1.0], dtype='f4'))\n   <Buffer: 1>\n\nCompared to PyOpenGL\n--------------------\n\nWith the original OpenGL API you have to write a couple of lines to achieve a **simple task** like compiling a shader\nor running a computation on the GPU. With ModernGL you will need just a **few lines** to achieve the same result.\n\nUsing PyOpenGL\n~~~~~~~~~~~~~~\n\n.. code-block:: py\n\n   vbo1 = glGenBuffers(1)\n   GL.glBindBuffer(GL_ARRAY_BUFFER, vbo1)\n   GL.glBufferData(GL_ARRAY_BUFFER, b'Hello World!', GL_STATIC_DRAW)\n\n   vbo2 = glGenBuffers(1)\n   GL.glBindBuffer(GL_ARRAY_BUFFER, vbo2)\n   GL.glBufferData(GL_ARRAY_BUFFER, b'\\x00' * 1024, GL_DYNAMIC_DRAW)\n\nUsing ModernGL\n~~~~~~~~~~~~~~\n\n.. code-block:: py\n\n   vbo1 = ctx.buffer(b'Hello World!')\n   vbo2 = ctx.buffer(reserve=1024, dynamic=True)\n\nBuild\n-----\n\n.. image:: https://img.shields.io/travis/cprogrammer1994/ModernGL/master.svg?label=build\n   :target: https://travis-ci.org/cprogrammer1994/ModernGL\n   :alt: build\n\n\n.. image:: https://img.shields.io/appveyor/ci/cprogrammer1994/ModernGL/master.svg?label=build\n   :target: https://ci.appveyor.com/project/cprogrammer1994/ModernGL\n   :alt: build\n\n\n.. code-block:: sh\n\n   python setup.py build_ext --inplace\n\nFAQ\n---\n\nIs ModernGL faster than PyOpenGL?\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nIn some cases **yes**\\ , the core functions of ModernGL are written in C++, OpenGL functions are called in quick\nsuccession so these calls together count as a single python function call.\n\nWhat version of OpenGL is used?\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nMost of the calls only require **OpenGL 3.3** but Subroutines and Compute Shaders require **OpenGL 4.0** and\n**OpenGL 4.3**\n\nIs my old PC supported?\n^^^^^^^^^^^^^^^^^^^^^^^\n\nOpenGL 3.3 came out in February 2010. With **up to date drivers** you will be able to use the most of the ModernGL\nfunctions, even on integrated graphics cards. *(No, Compute Shaders won't work)*\n\nWhere can I use ModernGL?\n^^^^^^^^^^^^^^^^^^^^^^^^^\n\n**Anywhere where OpenGL is supported.** ModernGL is capable of rendering using a\n`standalone_context <https://github.com/cprogrammer1994/ModernGL/tree/master/examples/standalone>`_ as well.\nRendering to a window only requires a valid OpenGL context.\n\nCan ModernGL create a Window?\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n**NO**\\ , Window creation is up to you. You can choose from a large variety of modules that can create a window:\n`PyQt5 <https://pypi.python.org/pypi/PyQt5/>`_\\ , `pyglet <https://bitbucket.org/pyglet/pyglet/wiki/Home>`_\\ ,\n`pygame <https://www.pygame.org/news>`_\\ , `GLUT <https://wiki.python.org/moin/PyOpenGL>`_ and many others.\n\nLimitations using ModernGL over PyOpenGL?\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nAll the neccessary calls are (or can be) implemented in ModernGL. However you can interract with the ModernGL objects\nfrom PyOpenGL. If something is missing write an `issue <https://github.com/cprogrammer1994/ModernGL/issues>`_ or raise\na `PR <https://github.com/cprogrammer1994/ModernGL/pulls>`_.\n\nSupported platforms\n-------------------\n\n* [x] Windows\n* [x] Linux\n* [x] Mac\n\n", 
    "tox": true, 
    "lcname": "moderngl", 
    "bugtrack_url": "", 
    "github": true, 
    "coveralls": false, 
    "name": "ModernGL", 
    "license": "MIT", 
    "travis_ci": true, 
    "github_project": "ModernGL", 
    "summary": "ModernGL: High performance rendering for Python 3", 
    "split_keywords": [
        "moderngl", 
        "opengl", 
        "pyopengl", 
        "rendering", 
        "graphics", 
        "shader", 
        "glsl", 
        "gpu", 
        "visualization", 
        "2d", 
        "3d"
    ], 
    "author_email": "cprogrammer1994@gmail.com", 
    "urls": [
        {
            "has_sig": false, 
            "upload_time": "2018-04-08T12:09:46", 
            "comment_text": "", 
            "python_version": "cp34", 
            "url": "https://pypi.python.org/packages/44/a3/89dce355183070851d6e8b6842cfcfb4e0550d63f70426743b5e4bb86b53/moderngl-5.0.7-cp34-cp34m-macosx_10_6_intel.whl", 
            "md5_digest": "518d41be49195a702e44010ac0073f88", 
            "downloads": 0, 
            "filename": "moderngl-5.0.7-cp34-cp34m-macosx_10_6_intel.whl", 
            "packagetype": "bdist_wheel", 
            "path": "44/a3/89dce355183070851d6e8b6842cfcfb4e0550d63f70426743b5e4bb86b53/moderngl-5.0.7-cp34-cp34m-macosx_10_6_intel.whl", 
            "digests": {
                "sha256": "1f0a487f2c5bc73d6275c5a2a6f479590b20e23fbbb794f60916124a370373ae", 
                "md5": "518d41be49195a702e44010ac0073f88"
            }, 
            "sha256_digest": "1f0a487f2c5bc73d6275c5a2a6f479590b20e23fbbb794f60916124a370373ae", 
            "size": 219831
        }, 
        {
            "has_sig": false, 
            "upload_time": "2018-04-08T12:09:48", 
            "comment_text": "", 
            "python_version": "cp35", 
            "url": "https://pypi.python.org/packages/9f/f7/279871f373772d652e6147e6608b676d9eae94b53789e35693bc4c7e0770/moderngl-5.0.7-cp35-cp35m-macosx_10_6_intel.whl", 
            "md5_digest": "0e187d63518517bb06a27eb48e3b6902", 
            "downloads": 0, 
            "filename": "moderngl-5.0.7-cp35-cp35m-macosx_10_6_intel.whl", 
            "packagetype": "bdist_wheel", 
            "path": "9f/f7/279871f373772d652e6147e6608b676d9eae94b53789e35693bc4c7e0770/moderngl-5.0.7-cp35-cp35m-macosx_10_6_intel.whl", 
            "digests": {
                "sha256": "b3b23f70963e70785661465add0a84425b654e2bafe509f36fed6c7dbbaf77f7", 
                "md5": "0e187d63518517bb06a27eb48e3b6902"
            }, 
            "sha256_digest": "b3b23f70963e70785661465add0a84425b654e2bafe509f36fed6c7dbbaf77f7", 
            "size": 219853
        }, 
        {
            "has_sig": false, 
            "upload_time": "2018-04-08T12:09:52", 
            "comment_text": "", 
            "python_version": "cp35", 
            "url": "https://pypi.python.org/packages/66/87/2a577b2003764e90e0dbadc015103f68b2d99f38e6ccafed8b068d1be828/moderngl-5.0.7-cp35-cp35m-manylinux1_i686.whl", 
            "md5_digest": "302a879f0087d7e8d45267e873f72fa6", 
            "downloads": 0, 
            "filename": "moderngl-5.0.7-cp35-cp35m-manylinux1_i686.whl", 
            "packagetype": "bdist_wheel", 
            "path": "66/87/2a577b2003764e90e0dbadc015103f68b2d99f38e6ccafed8b068d1be828/moderngl-5.0.7-cp35-cp35m-manylinux1_i686.whl", 
            "digests": {
                "sha256": "de7e0906abbe31d7cd3da953105ecb45307e333431350b63f79dcb2d15564334", 
                "md5": "302a879f0087d7e8d45267e873f72fa6"
            }, 
            "sha256_digest": "de7e0906abbe31d7cd3da953105ecb45307e333431350b63f79dcb2d15564334", 
            "size": 565338
        }, 
        {
            "has_sig": false, 
            "upload_time": "2018-04-08T12:09:55", 
            "comment_text": "", 
            "python_version": "cp35", 
            "url": "https://pypi.python.org/packages/99/04/6bdcf68ab93c9e6e8865fc828ae8ba3bf0a6737c5299a507063cdd314810/moderngl-5.0.7-cp35-cp35m-manylinux1_x86_64.whl", 
            "md5_digest": "cf688bffd986d347297f74f636331c98", 
            "downloads": 0, 
            "filename": "moderngl-5.0.7-cp35-cp35m-manylinux1_x86_64.whl", 
            "packagetype": "bdist_wheel", 
            "path": "99/04/6bdcf68ab93c9e6e8865fc828ae8ba3bf0a6737c5299a507063cdd314810/moderngl-5.0.7-cp35-cp35m-manylinux1_x86_64.whl", 
            "digests": {
                "sha256": "0a69165a091c5f53aa2d73af01562acba40ef715808195c159032cf9602c26ee", 
                "md5": "cf688bffd986d347297f74f636331c98"
            }, 
            "sha256_digest": "0a69165a091c5f53aa2d73af01562acba40ef715808195c159032cf9602c26ee", 
            "size": 602360
        }, 
        {
            "has_sig": false, 
            "upload_time": "2018-04-08T12:09:56", 
            "comment_text": "", 
            "python_version": "cp35", 
            "url": "https://pypi.python.org/packages/c4/63/a272389011eb2ce10902bf381cae2e184c73e90e9ec5722bd1279e615bf6/moderngl-5.0.7-cp35-cp35m-win32.whl", 
            "md5_digest": "21c3521ad9c5a99ff8df0b50d7e0acd3", 
            "downloads": 0, 
            "filename": "moderngl-5.0.7-cp35-cp35m-win32.whl", 
            "packagetype": "bdist_wheel", 
            "path": "c4/63/a272389011eb2ce10902bf381cae2e184c73e90e9ec5722bd1279e615bf6/moderngl-5.0.7-cp35-cp35m-win32.whl", 
            "digests": {
                "sha256": "13bae39fca2b67734ff3789c0fcfc1b5838427aee8e158ea9d784c16fe8bedae", 
                "md5": "21c3521ad9c5a99ff8df0b50d7e0acd3"
            }, 
            "sha256_digest": "13bae39fca2b67734ff3789c0fcfc1b5838427aee8e158ea9d784c16fe8bedae", 
            "size": 94163
        }, 
        {
            "has_sig": false, 
            "upload_time": "2018-04-08T12:09:58", 
            "comment_text": "", 
            "python_version": "cp35", 
            "url": "https://pypi.python.org/packages/b3/ab/931864fdabcca4ab2edd08c755da875c4be257fa2029a55ad1a54e73c1c2/moderngl-5.0.7-cp35-cp35m-win_amd64.whl", 
            "md5_digest": "c3a0d9823a5552327fbb356a4f508480", 
            "downloads": 0, 
            "filename": "moderngl-5.0.7-cp35-cp35m-win_amd64.whl", 
            "packagetype": "bdist_wheel", 
            "path": "b3/ab/931864fdabcca4ab2edd08c755da875c4be257fa2029a55ad1a54e73c1c2/moderngl-5.0.7-cp35-cp35m-win_amd64.whl", 
            "digests": {
                "sha256": "b01404409b9854c4c7068adb60c51a1ef28f9096f8713912e821d2200b53cb3f", 
                "md5": "c3a0d9823a5552327fbb356a4f508480"
            }, 
            "sha256_digest": "b01404409b9854c4c7068adb60c51a1ef28f9096f8713912e821d2200b53cb3f", 
            "size": 107025
        }, 
        {
            "has_sig": false, 
            "upload_time": "2018-04-08T12:09:59", 
            "comment_text": "", 
            "python_version": "cp36", 
            "url": "https://pypi.python.org/packages/4c/92/901f03d3800b1285e789a02c285ff147b1d41dddf31ddb874ce53f5a7f68/moderngl-5.0.7-cp36-cp36m-macosx_10_6_intel.whl", 
            "md5_digest": "d99c335019f15a6cc5f8b468865761da", 
            "downloads": 0, 
            "filename": "moderngl-5.0.7-cp36-cp36m-macosx_10_6_intel.whl", 
            "packagetype": "bdist_wheel", 
            "path": "4c/92/901f03d3800b1285e789a02c285ff147b1d41dddf31ddb874ce53f5a7f68/moderngl-5.0.7-cp36-cp36m-macosx_10_6_intel.whl", 
            "digests": {
                "sha256": "be138d6fb6503649c6c0381b01523099e1a6066b52f9bfec84532d3f57567ff4", 
                "md5": "d99c335019f15a6cc5f8b468865761da"
            }, 
            "sha256_digest": "be138d6fb6503649c6c0381b01523099e1a6066b52f9bfec84532d3f57567ff4", 
            "size": 219854
        }, 
        {
            "has_sig": false, 
            "upload_time": "2018-04-08T12:10:01", 
            "comment_text": "", 
            "python_version": "cp36", 
            "url": "https://pypi.python.org/packages/7a/d4/75176e22719188d7dd69e3b6e3e7a5b77b5154bca71cc360a9025e0f3ca5/moderngl-5.0.7-cp36-cp36m-manylinux1_i686.whl", 
            "md5_digest": "5d5aada221b6ec07b082c790c17ec9c0", 
            "downloads": 0, 
            "filename": "moderngl-5.0.7-cp36-cp36m-manylinux1_i686.whl", 
            "packagetype": "bdist_wheel", 
            "path": "7a/d4/75176e22719188d7dd69e3b6e3e7a5b77b5154bca71cc360a9025e0f3ca5/moderngl-5.0.7-cp36-cp36m-manylinux1_i686.whl", 
            "digests": {
                "sha256": "004ad3076112d407c4b3389198c39f638fed75c47980bea6a5f74bd197243085", 
                "md5": "5d5aada221b6ec07b082c790c17ec9c0"
            }, 
            "sha256_digest": "004ad3076112d407c4b3389198c39f638fed75c47980bea6a5f74bd197243085", 
            "size": 565241
        }, 
        {
            "has_sig": false, 
            "upload_time": "2018-04-08T12:10:03", 
            "comment_text": "", 
            "python_version": "cp36", 
            "url": "https://pypi.python.org/packages/15/00/3629bbce71e5fa6ee2c98daf64083c5dcd8748105309fb69f97e402cbc4c/moderngl-5.0.7-cp36-cp36m-manylinux1_x86_64.whl", 
            "md5_digest": "f996f551297f7a3919d03048eaaae458", 
            "downloads": 0, 
            "filename": "moderngl-5.0.7-cp36-cp36m-manylinux1_x86_64.whl", 
            "packagetype": "bdist_wheel", 
            "path": "15/00/3629bbce71e5fa6ee2c98daf64083c5dcd8748105309fb69f97e402cbc4c/moderngl-5.0.7-cp36-cp36m-manylinux1_x86_64.whl", 
            "digests": {
                "sha256": "2dd3f66e4f1e3e517b4626df5baf926cd75cdd9a3f92518e6fbc307ea639410a", 
                "md5": "f996f551297f7a3919d03048eaaae458"
            }, 
            "sha256_digest": "2dd3f66e4f1e3e517b4626df5baf926cd75cdd9a3f92518e6fbc307ea639410a", 
            "size": 602154
        }, 
        {
            "has_sig": false, 
            "upload_time": "2018-04-08T12:10:05", 
            "comment_text": "", 
            "python_version": "cp36", 
            "url": "https://pypi.python.org/packages/2a/e4/7f813207284bc8d4a7f92ca70147e9aa0259c37f9568d931522bcac5dbc0/moderngl-5.0.7-cp36-cp36m-win32.whl", 
            "md5_digest": "fa165653d50edf9d268f7983dcf71ef0", 
            "downloads": 0, 
            "filename": "moderngl-5.0.7-cp36-cp36m-win32.whl", 
            "packagetype": "bdist_wheel", 
            "path": "2a/e4/7f813207284bc8d4a7f92ca70147e9aa0259c37f9568d931522bcac5dbc0/moderngl-5.0.7-cp36-cp36m-win32.whl", 
            "digests": {
                "sha256": "03103e23049769d7f4ba2dc69254783c4e11b2797715830d2fca99d6f4c067a2", 
                "md5": "fa165653d50edf9d268f7983dcf71ef0"
            }, 
            "sha256_digest": "03103e23049769d7f4ba2dc69254783c4e11b2797715830d2fca99d6f4c067a2", 
            "size": 89743
        }, 
        {
            "has_sig": false, 
            "upload_time": "2018-04-08T12:10:06", 
            "comment_text": "", 
            "python_version": "cp36", 
            "url": "https://pypi.python.org/packages/88/a5/82a18ebe404b8024eebf75c55f045c0611e99f4d7bae216c00783a9a56e1/moderngl-5.0.7-cp36-cp36m-win_amd64.whl", 
            "md5_digest": "c22ff5c7521ca5ada801253063fda060", 
            "downloads": 0, 
            "filename": "moderngl-5.0.7-cp36-cp36m-win_amd64.whl", 
            "packagetype": "bdist_wheel", 
            "path": "88/a5/82a18ebe404b8024eebf75c55f045c0611e99f4d7bae216c00783a9a56e1/moderngl-5.0.7-cp36-cp36m-win_amd64.whl", 
            "digests": {
                "sha256": "3f41161c4cf92221a01c18772d708571190bc4f30f33bd6a250b0315d8667c7a", 
                "md5": "c22ff5c7521ca5ada801253063fda060"
            }, 
            "sha256_digest": "3f41161c4cf92221a01c18772d708571190bc4f30f33bd6a250b0315d8667c7a", 
            "size": 102559
        }, 
        {
            "has_sig": false, 
            "upload_time": "2018-04-08T12:10:07", 
            "comment_text": "", 
            "python_version": "source", 
            "url": "https://pypi.python.org/packages/bd/aa/1a2dafe44b4876cfb736b8c66b393f27d81f09fac51adc79be6f46536cd6/moderngl-5.0.7.tar.gz", 
            "md5_digest": "e58a2357be5eed03969a0bcfd106f5d9", 
            "downloads": 0, 
            "filename": "moderngl-5.0.7.tar.gz", 
            "packagetype": "sdist", 
            "path": "bd/aa/1a2dafe44b4876cfb736b8c66b393f27d81f09fac51adc79be6f46536cd6/moderngl-5.0.7.tar.gz", 
            "digests": {
                "sha256": "7482e402dce2a48fe9326dfedae02b279e09f4a343ecce030ed34a98f7dd7364", 
                "md5": "e58a2357be5eed03969a0bcfd106f5d9"
            }, 
            "sha256_digest": "7482e402dce2a48fe9326dfedae02b279e09f4a343ecce030ed34a98f7dd7364", 
            "size": 99374
        }
    ], 
    "_id": null, 
    "cheesecake_installability_id": null
}