{ "info": { "author": "Ben Shaw", "author_email": "ben@bbit.co.nz", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6" ], "description": "# deb-constrictor\n\n\nBuild Debian Packages (.deb/DPKGs) natively in Python. No dependencies on Java, Ruby or other Debian packages.\n\nInstall\n-------\n\nUsing pip:\n\n pip install deb-constrictor\n\nUsage\n-----\n\nDefine directories, links, scripts and dependencies:\n\n\n```python\nfrom constrictor import DPKGBuilder, BinaryControl\n\ndirs = [\n {\n 'source': '~/python/beneboyit/frontend/src',\n 'destination': '/srv/python/bbit-web-frontend',\n 'uname': 'www-data'\n }\n]\n\nmaintainer_scripts = {\n 'postinst': '~/python/beneboyit/frontend/scripts/after-install',\n 'preinst': '~/python/beneboyit/frontend/scripts/before-install'\n}\n\nlinks = [\n {\n 'path': '/etc/nginx/sites-enabled/bbit-web-frontend',\n 'target': '../sites-available/bbit-web-frontend'\n },\n {\n 'path': '/etc/uwsgi/apps-enabled/bbit-web-frontend.ini',\n 'target': '../apps-available/bbit-web-frontend.ini'\n },\n]\n\ndepends = ('nginx', 'uwsgi')\n\noutput_directory = '~/build'\n\nc = BinaryControl('bbit-web-frontend', '1.5', 'all', 'Ben Shaw', 'BBIT Web Frontend')\n\nc.set_control_field('Depends', depends)\n\nc.set_control_fields({'Section': 'misc', 'Priority': 'optional'})\n\nd = DPKGBuilder(output_directory, c, dirs, links, maintainer_scripts)\nd.build_package()\n```\n\nOutput file is named in the format *__.deb* and placed in the *destination_dir*.\nAlternatively, provide a name for your package as the *output_name* argument, and the package will be created with this\nname in the *output_directory*.\n\n\nconstrictor-build tool\n----------------------\n\nconstrictor-build is a command line tool that will build a package based on information in a JSON file. By default,\nthis file is in the current directory and called \"build-config.json\".\n\nIt loads the following fields and expects them to be in the same format as above:\n\n* package (string, required)\n* version (string, required)\n* architecture (string, required)\n* maintainer (string, required)\n* description (string, required)\n* extra_control_fields (dictionary of standard DPKG control field pairs, optional)\n* directories (array of dictionaries as per example above, optional)\n* links (array of dictionaries as per example above, optional)\n* configuration_files (array of strings, can be paths or globs to match multiple)\n* maintainer_scripts (dictionary as per example above, optional)\n* parent (string, optional, see parent section below)\n* deb_constrictor (dictionary, optional, see deb_constrictor section below). Valid keys are:\n * ignore_paths (array of string, optional)\n * environment_variables (array of two-element arrays, optional)\n * variables (array of two-element arrays, optional)\n * commands (dictionary)\n \n\nExamples of configuration files and how you might use constrictor-build in conjunction with other build steps are\nincluded in the examples directory.\n\nEnvironment variables in the form ${var_name} or $var_name will be substituted.\n\n### parent ###\n\nYou can also provide a \"parent\" field, which is a path to another build JSON file (path is relative to the config file)\nfrom which to read config values. For example, you might want to define the sections only in a parent config rather\nthan in each child config. The parent lookup is recursive so a parent can have a parent, and so on. constrictor-build\nalso attempts to load a base configuration file as the root of the configuration tree. The default location of this file\nis *~/constrictor-build-config.json*, but can be overridden by setting the *CONSTRICTOR_BUILD_BASE_CONFIG_PATH*\nenvironment variable.\n\nChild values will replace parent values. Fields that are lists or dictionaries will be appended to/updated as\nappropriate. Items in child configuration lists will not be added to the parent configuration if they already exists;\nthis means that if a parent and child both define the same Depends, or directory to include (for example), they won't be\nincluded twice in the computer configuration,\n\nFor example, a parent with this configuration:\n\n```json\n{\n \"extra_control_fields\": {\n \"Depends\": [\"some-package\"]\n }\n}\n```\n\nCould be overridden with a child with this configuration:\n\n```json\n{\n \"extra_control_fields\": {\n \"Depends\": [\"some-other-package\"],\n \"Provides\": [\"this-package\"]\n }\n}\n```\n\nCreating a computed configuration like this:\n\n```json\n{\n \"extra_control_fields\": {\n \"Depends\": [\"some-package\", \"some-other-package\"],\n \"Provides\": [\"this-package\"]\n }\n}\n```\n\n### deb_constrictor ##\n\nProvides a dictionary of metadata to configure build options such as file exclusion, pre/post build actions or variables.\nValid keys are:\n* ignore_paths (array of strings, optional)\n* environment_variables (array of two-element arrays, optional)\n* variables (array of two-element arrays, optional)\n* commands (dictionary of arrays, optional) \n\n#### ignore_paths ###\n\nList of glob patterns of files to exclude when assembling data tar. Files are compared with their name relative to the\ninclude dir, and have a leading slash.\n\nFor example, on the file system, you have directory layout like so:\n\n- src\n- src/media/\n- src/media/123.jpg\n- src/media/456.jpg\n\nAnd your build-config.json specifies a directory with source *src/*. To exclude all the jpg files in the media directory,\nset you ignore_paths to this:\n\n`\"ignore_paths\": [\"/media/*.jpg\"]`\n\nIn this case though, the media directory will be empty (as it only contained .jpg files) and so would not be included in\nthe archive at all. This might not be desirable if you want an empty directory to be deployed.\n\nThe solution to this is to add a placeholder file in the directory that would otherwise be ignored - it should be called\neither `.gitkeep` or `.depkeep`. If this file is found its containing directory will be added to the archive (as it is\nnot empty) however the placeholder file will not be included.\n\n#### environment_variables, variables ###\n\nAn array of two-element arrays in the format [key, value]; this format is used instead of a dictionary to preserve order so\nthat values may depend on values that have been defined earlier.\n\n`environment_variables` and `variables` both behave in the same way in that any values they define can be used to \ninterpolate variables throughout the configuration, however if calling external scripts (e.g. pre/post build scripts)\nthen only `environment_variables` will be passed to the sub-process.\n\nHere's an example using variables.\n\n```json\n{\n \"package\": \"${VENV_NAME}\",\n \"deb_constrictor\": {\n \"variables\": [\n [\"BUILD_DIR\", \"build\"]\n ],\n \"environment_variables\": [\n [\"PYTHON_VERSION\", \"3.6\"],\n [\"VENV_NAME\", \"example-virtualenv\"],\n [\"VENV_DIR\", \"${BUILD_DIR}/${VENV_NAME}\"],\n [\"VENV_BIN_DIR\", \"${VENV_DIR}/bin\"]\n ]\n },\n \"directories\": [\n {\n \"source\": \"${BUILD_DIR}/virtualenvs/${VENV_NAME}\",\n \"destination\": \"/var/virtualenvs/${VENV_NAME}\"\n }\n ]\n}\n```\n\nAfter the variables are interpolated the configuration will be like this:\n\n```json\n{\n \"package\": \"example-virtualenv\",\n \"directories\": [\n {\n \"source\": \"build/virtualenvs/example-virtualenv\",\n \"destination\": \"/var/virtualenvs/example-virtualenv\"\n }\n ]\n}\n```\n\nVariable resolution order is `variables`, then `environment_variables`, then `os.environ`, i.e. a key will first be \nlooked up in `variables`, if it does not exist then `environment_variables`, and so on to `os.environ`.\n\nThe `variables` values will only be used to interpolate the configuration while the `environment_variables` values will\nbe exported to any sub processes being called, so in this example, `PYTHON_VERSION`, `VENV_NAME`, `VENV_DIR` and \n`VENV_BIN_DIR` will be added to os.environ, while `BUILD_DIR` will not.\n\n#### commands ###\n\nCommands can be supplied to be run before and after building. For example, to setup a virtualenv for packaging, and to\nupload the built .deb to an apt repository afterwards.\n\nThe supported keys for the commands are `prebuild` and `postbuild`, which will be called before and after (respectively)\nthe DPKG being created. The commands should be supplied as an array (as would be sent to `subprocess.call`).\n\nWhen using parent config files, commands defined in children override those in parents (as opposed to appending).\n\nTwo special variables are set (in addition to other defined variables) which are interpolated into the commands and set\nin the environment:\n\n* `DEB_CONSTRICTOR_WORKING_DIR`: the directory containing the current config file being used (e.g. for \n_/foo/bar/build-config.json_, this value is _/foo/bar_) \n* `DEB_CONSTRICTOR_OUTPUT_PATH`: the output path of DPKG, relative to the cwd. This variable is only set for \n`postbuild`. This can be combined with the working dir path to get absolute path.\n\nAn example of using these:\n\n```json\n{\n \"deb_constrictor\": {\n \"commands\": {\n \"prebuild\": [\"build-virtualenv.sh\"],\n \"postbuild\": [\"scp\", \"${DEB_CONSTRICTOR_OUTPUT_PATH}\", \"apt@apt-server.example.com/srv/apt/incoming/\"]\n }\n }\n}\n```\n\nThe prebuild command `build-virtualenv.sh` has access to the `DEB_CONSTRICTOR_WORKING_DIR` environment variable (as well \nas other `environment_variables` that have been defined) and can refer to all of these to execute tasks.\n\nThis example shows that postbuild command that will be interpolated before being executed, so the actual command that is\ncalled might be:\n\n`scp build/example-1.0_amd64.deb apt@apt-server.example.com/srv/apt/incoming/`\n\n#### remove_after_build ###\n\nIf `True`, then the DPKG will be deleted after building, or more specifically, after the `postbuild` command has been\nrun (it will be deleted even if a `postbuild` command does not exist though).\n\nThis is intended to be used to clean up a DPKG that is no longer needed, for example, if the `postbuild` script sends it\nto a remote server.\n\n\nKnown Issues\n------------\n\n- Can only make Binary packages\n- As with any tar based archive, ownership of files based on uname/gname can be wrong if the user does not exist. Use\n with caution or create postinst scripts to fix.\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/beneboy/deb-constrictor", "keywords": "", "license": "BSD 3-Clause", "maintainer": "", "maintainer_email": "", "name": "deb-constrictor", "package_url": "https://pypi.org/project/deb-constrictor/", "platform": "", "project_url": "https://pypi.org/project/deb-constrictor/", "project_urls": { "Homepage": "https://github.com/beneboy/deb-constrictor" }, "release_url": "https://pypi.org/project/deb-constrictor/0.7/", "requires_dist": null, "requires_python": "", "summary": "Build DPKGs natively with Python.", "version": "0.7" }, "last_serial": 4717690, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "3567b951bbf434a210d7f2b53da64269", "sha256": "147bd378f51a16c04d9ab70d2a8f1f254557ea2210b18da41857ad21684ccdb1" }, "downloads": -1, "filename": "deb-constrictor-0.1.tar.gz", "has_sig": false, "md5_digest": "3567b951bbf434a210d7f2b53da64269", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4469, "upload_time": "2016-01-11T06:53:37", "url": "https://files.pythonhosted.org/packages/c0/b4/6f348d8c5722c61a4571f2bf2f82c8c57736804037d3467e98c19dd792d6/deb-constrictor-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "73c99eeaae5564c202ce6698dfc87d35", "sha256": "ea5481aef2c30d54e84c22e1e155ed511fe367947d0d466ded45282a1621f606" }, "downloads": -1, "filename": "deb-constrictor-0.1.1.tar.gz", "has_sig": false, "md5_digest": "73c99eeaae5564c202ce6698dfc87d35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4500, "upload_time": "2016-01-11T06:55:50", "url": "https://files.pythonhosted.org/packages/a0/74/55df749625a2db0a14887ce6e0bd4e55e6a1141ade531c4e626ba0d38265/deb-constrictor-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "1205a15c7c0212cd64ff0789359aa37b", "sha256": "c32ec775284d48edb4017497c8a88313d2f5d164cc18ab8d65e484ccceb945c7" }, "downloads": -1, "filename": "deb-constrictor-0.1.2.tar.gz", "has_sig": false, "md5_digest": "1205a15c7c0212cd64ff0789359aa37b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4561, "upload_time": "2016-01-11T07:01:14", "url": "https://files.pythonhosted.org/packages/c1/0b/3a58274c2904d1aa040feef6a751505908ec6d1a5c60a0733be96987e844/deb-constrictor-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "ee8625aafa6df963b15bbce7748dac63", "sha256": "a2f7eddcea9d323bfdcc94f7160f425f61a9ad4f1808c676d13eb8d021e670a3" }, "downloads": -1, "filename": "deb-constrictor-0.1.3.tar.gz", "has_sig": false, "md5_digest": "ee8625aafa6df963b15bbce7748dac63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5396, "upload_time": "2016-01-21T10:41:47", "url": "https://files.pythonhosted.org/packages/65/11/2e98b934f372b36c2ec302aa9e640b34c218672a2f0b1f547868efa5b99d/deb-constrictor-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "8d8c2d25f90cd22a2748caff3762f8c9", "sha256": "f7c5f0fb892f308dbc6bd4ddded20ab2090b7f4b0af1da9b7d7b88d971a243f9" }, "downloads": -1, "filename": "deb-constrictor-0.1.4.tar.gz", "has_sig": false, "md5_digest": "8d8c2d25f90cd22a2748caff3762f8c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5400, "upload_time": "2016-01-23T04:27:24", "url": "https://files.pythonhosted.org/packages/27/77/799db53b60d8ddd24eb84321d52176cd5ca7613462a0670a2850a7603c97/deb-constrictor-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "a25e2a194a003a86741b8c2cc50cdc75", "sha256": "4a03355d80436b1b967906ee29c1d5a13f436ab289c8aa298d4106fc4f777ae2" }, "downloads": -1, "filename": "deb-constrictor-0.1.5.tar.gz", "has_sig": false, "md5_digest": "a25e2a194a003a86741b8c2cc50cdc75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5436, "upload_time": "2016-01-23T10:42:18", "url": "https://files.pythonhosted.org/packages/df/38/9e7cbd243c88892ebe1cf4fc457800d10e8232f9a603b9ac65f55fa8ade1/deb-constrictor-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "e9b272d8111bd009234bbaf38805ac68", "sha256": "ae704c6683b0805b9185e86e6b8fd5561c74fda9557b14a029bc22a117d35b64" }, "downloads": -1, "filename": "deb-constrictor-0.1.6.tar.gz", "has_sig": false, "md5_digest": "e9b272d8111bd009234bbaf38805ac68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5764, "upload_time": "2016-10-23T22:41:30", "url": "https://files.pythonhosted.org/packages/c4/62/92af9f7903b4566661f6f57e7cc4bac1c3f7900da7ff83341380eb05c846/deb-constrictor-0.1.6.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "d84446ffe4ad5aaf6aaa5c2b188a7ccc", "sha256": "4065bc2083398ee41aded320c6d425a2957e715429a98b7d913795b86d463ca2" }, "downloads": -1, "filename": "deb-constrictor-0.1.8.tar.gz", "has_sig": false, "md5_digest": "d84446ffe4ad5aaf6aaa5c2b188a7ccc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5843, "upload_time": "2016-10-23T23:49:33", "url": "https://files.pythonhosted.org/packages/2b/23/2118cd1911cbe1d243a0502a6e65e05b3a9e67d05a3c16e48b0ae996e584/deb-constrictor-0.1.8.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "09d5f3a9b20fd2bf55a08fe14c1423d6", "sha256": "e533fda55650451223348a408e83aa18b3ebf4e589a9f9d80b2e3e5f139e56f5" }, "downloads": -1, "filename": "deb-constrictor-0.2.tar.gz", "has_sig": false, "md5_digest": "09d5f3a9b20fd2bf55a08fe14c1423d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7537, "upload_time": "2016-10-27T18:57:00", "url": "https://files.pythonhosted.org/packages/19/65/6ba9503af833697fc069cb0ce1a648fcf61f5e74877027d8d40b8dd80457/deb-constrictor-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "c22505d3758dd6f05ea3ebd4a4c6273f", "sha256": "7fc41740640a1ad014ca7231b6e73aab4f1a8380346d91675e13ddc2fe14681d" }, "downloads": -1, "filename": "deb-constrictor-0.2.1.tar.gz", "has_sig": false, "md5_digest": "c22505d3758dd6f05ea3ebd4a4c6273f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7540, "upload_time": "2016-10-30T07:20:56", "url": "https://files.pythonhosted.org/packages/1b/a2/7d2ad614b83b11a4bff5469271e41608ae596829999572a85a1a7b8ce872/deb-constrictor-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "65cbe3b3b02ecf5d8b7e5150de2600fb", "sha256": "cb18f32a8c5c84194b2d3a876de99eb3821e79427326c6d0859d72567b07ee5f" }, "downloads": -1, "filename": "deb-constrictor-0.2.2.tar.gz", "has_sig": false, "md5_digest": "65cbe3b3b02ecf5d8b7e5150de2600fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7814, "upload_time": "2016-11-03T09:36:00", "url": "https://files.pythonhosted.org/packages/33/10/0fc41d2d062aff0dfe2cb599c2472e2bc67c95d2e2272d893cd4a7852a3e/deb-constrictor-0.2.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "e2669d49020ec92951d199c50fa284e7", "sha256": "dbffb5989694951a81471c613f02d1acc46707b7c87b864e27bfee9c14e9b9ea" }, "downloads": -1, "filename": "deb-constrictor-0.3.tar.gz", "has_sig": false, "md5_digest": "e2669d49020ec92951d199c50fa284e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17919, "upload_time": "2018-06-20T08:42:08", "url": "https://files.pythonhosted.org/packages/2f/10/530cc6ba529cff2318c0e951ca79459a8db076ebea713e150755796af159/deb-constrictor-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "3d6ffa46b908c3d5a3241b35a7f73054", "sha256": "294ba40f1cc101d4167455c3eb51a9284b2ee982d20828e8f3a08a92f00df2fc" }, "downloads": -1, "filename": "deb-constrictor-0.3.1.tar.gz", "has_sig": false, "md5_digest": "3d6ffa46b908c3d5a3241b35a7f73054", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17918, "upload_time": "2018-06-20T08:42:55", "url": "https://files.pythonhosted.org/packages/c4/39/347cf6ae35f3b38927b0aa8745a7faa0eda34fea08ba0ac21026c748a924/deb-constrictor-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "46ef5f94cd8475e4d28d600ceab6cd74", "sha256": "29803d72d273a08a2eb21d0a53752e584d41a4453371c91e32047898bede4044" }, "downloads": -1, "filename": "deb_constrictor-0.3.2-py2.7.egg", "has_sig": false, "md5_digest": "46ef5f94cd8475e4d28d600ceab6cd74", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 31415, "upload_time": "2018-12-18T10:30:24", "url": "https://files.pythonhosted.org/packages/d8/da/4428bd4c44fec8e1b7224417ab628e8aecb1ce75e4c043d0aac220d4e1c0/deb_constrictor-0.3.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "5f22330c4e830d0b96ac690cdafcd705", "sha256": "ef27074fb2a410c1f2d1e5bacc5160d3f4a5385791dc69bcf69e0e50b0ce5d53" }, "downloads": -1, "filename": "deb-constrictor-0.3.2.tar.gz", "has_sig": false, "md5_digest": "5f22330c4e830d0b96ac690cdafcd705", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17969, "upload_time": "2018-08-04T10:05:34", "url": "https://files.pythonhosted.org/packages/bf/a0/2b247be541a82a39f07e4ea0864675e5055e002a6216652e03864ecdf908/deb-constrictor-0.3.2.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "7d5f4c645a85e200571cc8bdda575253", "sha256": "7acefe464bc2c317c8e7a3bf5c2cf73ce585112f0abb2b658f27620b0fcf134c" }, "downloads": -1, "filename": "deb_constrictor-0.4-py2.7.egg", "has_sig": false, "md5_digest": "7d5f4c645a85e200571cc8bdda575253", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 31665, "upload_time": "2018-12-18T10:30:26", "url": "https://files.pythonhosted.org/packages/31/e8/f10dc82ed26b714918ba904e15fb4833b4a711fd1dd27c2902cf20f4da41/deb_constrictor-0.4-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "15ef91c10e331a6efd71610a8752ac52", "sha256": "2ac6fc2469a0204c3c26de9566a55e332d792f6c82c96866e7fcd48dac0cda2a" }, "downloads": -1, "filename": "deb-constrictor-0.4.tar.gz", "has_sig": false, "md5_digest": "15ef91c10e331a6efd71610a8752ac52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18285, "upload_time": "2018-08-06T22:34:33", "url": "https://files.pythonhosted.org/packages/cc/eb/cca9faff04cd19785d29894f166db8e9c498e0764e9e0eba925b6ba3a88e/deb-constrictor-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "4e514b2468ad6125571f7385d1c55186", "sha256": "3569c94d8a826ee85a0179278881d2161d6079bfdfa6b7f678a34e462962ae2e" }, "downloads": -1, "filename": "deb_constrictor-0.5-py2.7.egg", "has_sig": false, "md5_digest": "4e514b2468ad6125571f7385d1c55186", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 31698, "upload_time": "2018-12-18T10:30:28", "url": "https://files.pythonhosted.org/packages/ae/28/c7bf3bfaa583b2bf95778aca6f898fd06bbd587fe8de343d8585a13f11a9/deb_constrictor-0.5-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "36d58ca6ed3a9dbd7c96ff7661ca8a2b", "sha256": "ddb829946426f0671bb889cc21373e7d76132e51fb7aa50242cab513fbdece55" }, "downloads": -1, "filename": "deb-constrictor-0.5.tar.gz", "has_sig": false, "md5_digest": "36d58ca6ed3a9dbd7c96ff7661ca8a2b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18501, "upload_time": "2018-12-18T10:30:23", "url": "https://files.pythonhosted.org/packages/8d/b8/0693694e68f0e5dfc0f6f57483d722fe7a10306791977cac99c1da81fe88/deb-constrictor-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "ff756e0f2200fa6d6e8615cc41cc46cf", "sha256": "6cba210cdafe4a21b55cd6eb65e402488c328a67cd4a2f6c39b97a1e749d313f" }, "downloads": -1, "filename": "deb-constrictor-0.6.tar.gz", "has_sig": false, "md5_digest": "ff756e0f2200fa6d6e8615cc41cc46cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18491, "upload_time": "2019-01-17T08:57:22", "url": "https://files.pythonhosted.org/packages/58/44/c431a69a3b279ca0ee71b9f597af642601c387e74358d01e0463cda45529/deb-constrictor-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "8fa9ebe2b857196f8a737b49e4805dc0", "sha256": "65bf2cc90db0596071620c0ecb568140dcbfbf5dd14fce0ee086e8c35c109446" }, "downloads": -1, "filename": "deb-constrictor-0.7.tar.gz", "has_sig": false, "md5_digest": "8fa9ebe2b857196f8a737b49e4805dc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18514, "upload_time": "2019-01-20T08:32:48", "url": "https://files.pythonhosted.org/packages/94/3e/5094bad9df917ea8d10337b60334e5bf9d7e48b2c8880be309c4656aea9e/deb-constrictor-0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8fa9ebe2b857196f8a737b49e4805dc0", "sha256": "65bf2cc90db0596071620c0ecb568140dcbfbf5dd14fce0ee086e8c35c109446" }, "downloads": -1, "filename": "deb-constrictor-0.7.tar.gz", "has_sig": false, "md5_digest": "8fa9ebe2b857196f8a737b49e4805dc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18514, "upload_time": "2019-01-20T08:32:48", "url": "https://files.pythonhosted.org/packages/94/3e/5094bad9df917ea8d10337b60334e5bf9d7e48b2c8880be309c4656aea9e/deb-constrictor-0.7.tar.gz" } ] }