{ "info": { "author": "Arie van Luttikhuizen", "author_email": "aluttik@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "![Crossplane Logo](https://raw.githubusercontent.com/nginxinc/crossplane/master/ext/crossplane-logo.png)\n

crossplane

\n

Reliable and fast NGINX configuration file parser and builder

\n\n

\n\n\n\n\n

\n\n - [Install](#install)\n - [Command Line Interface](#command-line-interface)\n - [crossplane parse](#crossplane-parse)\n - [crossplane build](#crossplane-build)\n - [crossplane lex](#crossplane-lex)\n - [crossplane format](#crossplane-format)\n - [crossplane minify](#crossplane-minify)\n - [Python Module](#python-module)\n - [crossplane.parse()](#crossplaneparse)\n - [crossplane.build()](#crossplanebuild)\n - [crossplane.lex()](#crossplanelex)\n - [Other Languages](#other-languages)\n\n## Install\n\nYou can install both the [Command Line\nInterface](#command-line-interface) and [Python Module](#python-module)\nvia:\n\n pip install crossplane\n\n## Command Line Interface\n\n```\nusage: crossplane [options]\n\nvarious operations for nginx config files\n\noptional arguments:\n -h, --help show this help message and exit\n -V, --version show program's version number and exit\n\ncommands:\n parse parses a json payload for an nginx config\n build builds an nginx config from a json payload\n lex lexes tokens from an nginx config file\n minify removes all whitespace from an nginx config\n format formats an nginx config file\n help show help for commands\n```\n\n### crossplane parse\n\nThis command will take a path to a main NGINX config file as input, then\nparse the entire config into the schema defined below, and dumps the\nentire thing as a JSON payload.\n\n```\nusage: crossplane parse [-h] [-o OUT] [-i NUM] [--ignore DIRECTIVES]\n [--no-catch] [--tb-onerror] [--single-file]\n [--include-comments] [--strict]\n filename\n\nparses a json payload for an nginx config\n\npositional arguments:\n filename the nginx config file\n\noptional arguments:\n -h, --help show this help message and exit\n -o OUT, --out OUT write output to a file\n -i NUM, --indent NUM number of spaces to indent output\n --ignore DIRECTIVES ignore directives (comma-separated)\n --no-catch only collect first error in file\n --tb-onerror include tracebacks in config errors\n --combine use includes to create one single file\n --single-file do not include other config files\n --include-comments include comments in json\n --strict raise errors for unknown directives\n```\n\n**Privacy and Security**\n\nSince `crossplane` is usually used to create payloads that are sent to\ndifferent servers, it's important to keep security in mind. For that\nreason, the `--ignore` option was added. It can be used to keep certain\nsensitive directives out of the payload output entirely.\n\nFor example, we always use the equivalent of this flag in the [NGINX Amplify\nAgent](https://github.com/nginxinc/nginx-amplify-agent/) out of respect\nfor our users'\n privacy:\n\n --ignore=auth_basic_user_file,secure_link_secret,ssl_certificate_key,ssl_client_certificate,ssl_password_file,ssl_stapling_file,ssl_trusted_certificate\n\n#### Schema\n\n**Response Object**\n\n```js\n{\n \"status\": String, // \"ok\" or \"failed\" if \"errors\" is not empty\n \"errors\": Array, // aggregation of \"errors\" from Config objects\n \"config\": Array // Array of Config objects\n}\n```\n\n**Config Object**\n\n```js\n{\n \"file\": String, // the full path of the config file\n \"status\": String, // \"ok\" or \"failed\" if errors is not empty array\n \"errors\": Array, // Array of Error objects\n \"parsed\": Array // Array of Directive objects\n}\n```\n\n**Directive Object**\n\n```js\n{\n \"directive\": String, // the name of the directive\n \"line\": Number, // integer line number the directive started on\n \"args\": Array, // Array of String arguments\n \"includes\": Array, // Array of integers (included iff this is an include directive)\n \"block\": Array // Array of Directive Objects (included iff this is a block)\n}\n```\n\n
\n\n
\n\nNote\n\n
\n\nIf this is an `include` directive and the `--single-file` flag was not\nused, an `\"includes\"` value will be used that holds an Array of indices\nof the configs that are included by this directive.\n\nIf this is a block directive, a `\"block\"` value will be used that holds\nan Array of more Directive Objects that define the block context.\n\n
\n\n**Error Object**\n\n```js\n{\n \"file\": String, // the full path of the config file\n \"line\": Number, // integer line number the directive that caused the error\n \"error\": String, // the error message\n \"callback\": Object // only included iff an \"onerror\" function was passed to parse()\n}\n```\n\n
\n\n
\n\nNote\n\n
\n\nIf the `--tb-onerror` flag was used by crossplane parse, `\"callback\"`\nwill contain a string that represents the traceback that the error\ncaused.\n\n
\n\n#### Example\n\nThe main NGINX config file is at `/etc/nginx/nginx.conf`:\n\n```nginx\nevents {\n worker_connections 1024;\n}\n\nhttp {\n include conf.d/*.conf;\n}\n```\n\nAnd this config file is at `/etc/nginx/conf.d/servers.conf`:\n\n```nginx\nserver {\n listen 8080;\n location / {\n try_files 'foo bar' baz;\n }\n}\n\nserver {\n listen 8081;\n location / {\n return 200 'success!';\n }\n}\n```\n\nSo then if you run this:\n\n crossplane parse --indent=4 /etc/nginx/nginx.conf\n\nThe prettified JSON output would look like this:\n\n```js\n{\n \"status\": \"ok\",\n \"errors\": [],\n \"config\": [\n {\n \"file\": \"/etc/nginx/nginx.conf\",\n \"status\": \"ok\",\n \"errors\": [],\n \"parsed\": [\n {\n \"directive\": \"events\",\n \"line\": 1,\n \"args\": [],\n \"block\": [\n {\n \"directive\": \"worker_connections\",\n \"line\": 2,\n \"args\": [\n \"1024\"\n ]\n }\n ]\n },\n {\n \"directive\": \"http\",\n \"line\": 5,\n \"args\": [],\n \"block\": [\n {\n \"directive\": \"include\",\n \"line\": 6,\n \"args\": [\n \"conf.d/*.conf\"\n ],\n \"includes\": [\n 1\n ]\n }\n ]\n }\n ]\n },\n {\n \"file\": \"/etc/nginx/conf.d/servers.conf\",\n \"status\": \"ok\",\n \"errors\": [],\n \"parsed\": [\n {\n \"directive\": \"server\",\n \"line\": 1,\n \"args\": [],\n \"block\": [\n {\n \"directive\": \"listen\",\n \"line\": 2,\n \"args\": [\n \"8080\"\n ]\n },\n {\n \"directive\": \"location\",\n \"line\": 3,\n \"args\": [\n \"/\"\n ],\n \"block\": [\n {\n \"directive\": \"try_files\",\n \"line\": 4,\n \"args\": [\n \"foo bar\",\n \"baz\"\n ]\n }\n ]\n }\n ]\n },\n {\n \"directive\": \"server\",\n \"line\": 8,\n \"args\": [],\n \"block\": [\n {\n \"directive\": \"listen\",\n \"line\": 9,\n \"args\": [\n \"8081\"\n ]\n },\n {\n \"directive\": \"location\",\n \"line\": 10,\n \"args\": [\n \"/\"\n ],\n \"block\": [\n {\n \"directive\": \"return\",\n \"line\": 11,\n \"args\": [\n \"200\",\n \"success!\"\n ]\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n}\n```\n\n#### crossplane parse (advanced)\n\nThis tool uses two flags that can change how `crossplane` handles\nerrors.\n\nThe first, `--no-catch`, can be used if you'd prefer that crossplane\nquit parsing after the first error it finds.\n\nThe second, `--tb-onerror`, will add a `\"callback\"` key to all error\nobjects in the JSON output, each containing a string representation of\nthe traceback that would have been raised by the parser if the exception\nhad not been caught. This can be useful for logging purposes.\n\n### crossplane build\n\nThis command will take a path to a file as input. The file should\ncontain a JSON representation of an NGINX config that has the structure\ndefined above. Saving and using the output from `crossplane parse` to\nrebuild your config files should not cause any differences in content\nexcept for the formatting.\n\n```\nusage: crossplane build [-h] [-d PATH] [-f] [-i NUM | -t] [--no-headers]\n [--stdout] [-v]\n filename\n\nbuilds an nginx config from a json payload\n\npositional arguments:\n filename the file with the config payload\n\noptional arguments:\n -h, --help show this help message and exit\n -v, --verbose verbose output\n -d PATH, --dir PATH the base directory to build in\n -f, --force overwrite existing files\n -i NUM, --indent NUM number of spaces to indent output\n -t, --tabs indent with tabs instead of spaces\n --no-headers do not write header to configs\n --stdout write configs to stdout instead\n```\n\n### crossplane lex\n\nThis command takes an NGINX config file, splits it into tokens by\nremoving whitespace and comments, and dumps the list of tokens as a JSON\narray.\n\n```\nusage: crossplane lex [-h] [-o OUT] [-i NUM] [-n] filename\n\nlexes tokens from an nginx config file\n\npositional arguments:\n filename the nginx config file\n\noptional arguments:\n -h, --help show this help message and exit\n -o OUT, --out OUT write output to a file\n -i NUM, --indent NUM number of spaces to indent output\n -n, --line-numbers include line numbers in json payload\n```\n\n#### Example\n\nPassing in this NGINX config file at `/etc/nginx/nginx.conf`:\n\n```nginx\nevents {\n worker_connections 1024;\n}\n\nhttp {\n include conf.d/*.conf;\n}\n```\n\nBy running:\n\n crossplane lex /etc/nginx/nginx.conf\n\nWill result in this JSON\noutput:\n\n```js\n[\"events\",\"{\",\"worker_connections\",\"1024\",\";\",\"}\",\"http\",\"{\",\"include\",\"conf.d/*.conf\",\";\",\"}\"]\n```\n\nHowever, if you decide to use the `--line-numbers` flag, your output\nwill look\nlike:\n\n```js\n[[\"events\",1],[\"{\",1],[\"worker_connections\",2],[\"1024\",2],[\";\",2],[\"}\",3],[\"http\",5],[\"{\",5],[\"include\",6],[\"conf.d/*.conf\",6],[\";\",6],[\"}\",7]]\n```\n\n### crossplane format\n\nThis is a quick and dirty tool that uses [crossplane\nparse](#crossplane-parse) internally to format an NGINX config file.\nIt serves the purpose of demonstrating what you can do with `crossplane`'s\nparsing abilities. It is not meant to be a fully fleshed out, feature-rich\nformatting tool. If that is what you are looking for, then you may want to\nlook writing your own using crossplane's Python API.\n\n```\nusage: crossplane format [-h] [-o OUT] [-i NUM | -t] filename\n\nformats an nginx config file\n\npositional arguments:\n filename the nginx config file\n\noptional arguments:\n -h, --help show this help message and exit\n -o OUT, --out OUT write output to a file\n -i NUM, --indent NUM number of spaces to indent output\n -t, --tabs indent with tabs instead of spaces\n```\n\n### crossplane minify\n\nThis is a simple and fun little tool that uses [crossplane\nlex](#crossplane-lex) internally to remove as much whitespace from an\nNGINX config file as possible without affecting what it does. It can't\nimagine it will have much of a use to most people, but it demonstrates\nthe kinds of things you can do with `crossplane`'s lexing abilities.\n\n```\nusage: crossplane minify [-h] [-o OUT] filename\n\nremoves all whitespace from an nginx config\n\npositional arguments:\n filename the nginx config file\n\noptional arguments:\n -h, --help show this help message and exit\n -o OUT, --out OUT write output to a file\n```\n\n## Python Module\n\nIn addition to the command line tool, you can import `crossplane` as a\npython module. There are two basic functions that the module will\nprovide you: `parse` and `lex`.\n\n### crossplane.parse()\n\n```python\nimport crossplane\npayload = crossplane.parse('/etc/nginx/nginx.conf')\n```\n\nThis will return the same payload as described in the [crossplane\nparse](#crossplane-parse) section, except it will be Python dicts and\nnot one giant JSON string.\n\n### crossplane.build()\n\n```python\nimport crossplane\nconfig = crossplane.build(\n [{\n \"directive\": \"events\",\n \"args\": [],\n \"block\": [{\n \"directive\": \"worker_connections\",\n \"args\": [\"1024\"]\n }]\n }]\n)\n```\n\nThis will return a single string that contains an entire NGINX config\nfile.\n\n### crossplane.lex()\n\n```python\nimport crossplane\ntokens = crossplane.lex('/etc/nginx/nginx.conf')\n```\n\n`crossplane.lex` generates 2-tuples. Inserting these pairs into a list\nwill result in a long list similar to what you can see in the\n[crossplane lex](#crossplane-lex) section when the `--line-numbers` flag\nis used, except it will obviously be a Python list of tuples and not one\ngiant JSON string.\n\n## Other Languages\n\n- Ruby port by [@gdanko](https://github.com/gdanko):\n \n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/nginxinc/crossplane", "keywords": "", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "crossplane", "package_url": "https://pypi.org/project/crossplane/", "platform": "", "project_url": "https://pypi.org/project/crossplane/", "project_urls": { "Homepage": "https://github.com/nginxinc/crossplane" }, "release_url": "https://pypi.org/project/crossplane/0.5.3/", "requires_dist": null, "requires_python": "", "summary": "Reliable and fast NGINX configuration file parser.", "version": "0.5.3" }, "last_serial": 5893067, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "c0bd7414f9e1882029ec6668581ca56b", "sha256": "9ca8932def3c593e2963072cf923876f79cce2c4780d3bc0146780948fc44402" }, "downloads": -1, "filename": "crossplane-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c0bd7414f9e1882029ec6668581ca56b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24303, "upload_time": "2017-10-24T01:51:55", "url": "https://files.pythonhosted.org/packages/91/00/03de97d0ee46ad24d19d75a3d553fc0f7e4e1dcadfdc80e131c8f95f4ee5/crossplane-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9a3350289fe41881984496b2f32b863a", "sha256": "cb5e9de6ec8f87d5190cedbdf3b8653d5f0606c6cf49ed150e3af79a78626bd0" }, "downloads": -1, "filename": "crossplane-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9a3350289fe41881984496b2f32b863a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28332, "upload_time": "2017-10-24T01:51:58", "url": "https://files.pythonhosted.org/packages/43/f5/af2ea7e4c6ad4a7702c731a485a37963edcc3f784ddf8e4726ee7ec59460/crossplane-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "156f47fa465978f8661741bd0410b9ea", "sha256": "2b9b08e9f0dfd055c40d2f4921c107ec246c4d1a8bad378eedb26b41116c7233" }, "downloads": -1, "filename": "crossplane-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "156f47fa465978f8661741bd0410b9ea", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24508, "upload_time": "2017-10-25T22:15:40", "url": "https://files.pythonhosted.org/packages/5c/ec/dc85dfca077c5f04f2986de417922b0381fb8cb9da020a25a8989aae40b6/crossplane-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "01adf446ed9bf8ef1f38273de9fe30c2", "sha256": "f143c8cca2afac38f84bbdcc0988d9a0e9003ee71fc3850e988445e4652c70c8" }, "downloads": -1, "filename": "crossplane-0.1.1.tar.gz", "has_sig": false, "md5_digest": "01adf446ed9bf8ef1f38273de9fe30c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28456, "upload_time": "2017-10-25T22:15:42", "url": "https://files.pythonhosted.org/packages/f5/ce/fbbb02b4f90d52c2bf9b8c1a2bf1c332cb811977b1f1145236314a77b05f/crossplane-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "ef93cd708b2fdf603fc055ec69c17368", "sha256": "fc13c937eb22cecf7f9adef5dd37e9a1ce98ab53a5ecf75525d56370433b77c3" }, "downloads": -1, "filename": "crossplane-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ef93cd708b2fdf603fc055ec69c17368", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24736, "upload_time": "2018-01-05T20:08:00", "url": "https://files.pythonhosted.org/packages/d0/0d/fb20192ce5a6dae9f21350950a9f0b8a4e5c7dec42b26d374967e40d5c09/crossplane-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "faa8aa7c288cb81e866469c87abfce97", "sha256": "bb4ae9a93784114203d50b49db7b86e0e9e970240f187cd80f85016ebd3270a0" }, "downloads": -1, "filename": "crossplane-0.1.2.tar.gz", "has_sig": false, "md5_digest": "faa8aa7c288cb81e866469c87abfce97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29038, "upload_time": "2018-01-05T20:08:02", "url": "https://files.pythonhosted.org/packages/83/cc/669f57e3fe6b637f16bf714f725365c99d64f5f9750fed49a8d101cf2d7c/crossplane-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "f6766c126ade6ec5f246dfe046e423a6", "sha256": "c73a3a03fdc15ffdf0dc287543274af73fda81584c7028d1a8ed6f0b4b513c4f" }, "downloads": -1, "filename": "crossplane-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f6766c126ade6ec5f246dfe046e423a6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25115, "upload_time": "2018-01-06T02:27:30", "url": "https://files.pythonhosted.org/packages/74/e4/b527b458a0bd0e47bd81bdee9973f1b74a53123c0d0f2f0f164e1cd33488/crossplane-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ab1b103e2c65789050c53c6ddc380905", "sha256": "cb4bdae2eae786cadc23cbb76ee52b1071d35cbd22d1200dcc7c026f4c444bab" }, "downloads": -1, "filename": "crossplane-0.1.3.tar.gz", "has_sig": false, "md5_digest": "ab1b103e2c65789050c53c6ddc380905", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29662, "upload_time": "2018-01-06T02:27:31", "url": "https://files.pythonhosted.org/packages/b7/0c/093007baf11d2916378d1f18b41a06877fe4eb1654d9ce06ebab8f01160a/crossplane-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "305284dc0b034f6a180972684a32e88d", "sha256": "044d231583f6251f67de1681fee9df3ac3820227f681e720b9b461f73feb7655" }, "downloads": -1, "filename": "crossplane-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "305284dc0b034f6a180972684a32e88d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27652, "upload_time": "2018-01-23T23:18:11", "url": "https://files.pythonhosted.org/packages/4f/12/c8e729563b8387a2e188dedaf3afe394c36620f51358ee961b6e1c8d6ced/crossplane-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8a0aedc44aebbf61418fff2e644736a1", "sha256": "9e9d499cca119fb44d5b9c51b429ffae1e5d378601c83e815e8bae5a9742d5b2" }, "downloads": -1, "filename": "crossplane-0.2.0.tar.gz", "has_sig": false, "md5_digest": "8a0aedc44aebbf61418fff2e644736a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36544, "upload_time": "2018-01-23T23:18:13", "url": "https://files.pythonhosted.org/packages/72/14/9083255072ed994576c9b28abcf863b2b14e80aac585e72e0a8f795a3541/crossplane-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "5c36a85a1b6cd41c250f7db4713f79f3", "sha256": "36849253a3c37adc6105fd3fe9a497d936945931aa1207be7715641ca5a1f701" }, "downloads": -1, "filename": "crossplane-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5c36a85a1b6cd41c250f7db4713f79f3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 28702, "upload_time": "2018-03-14T22:15:19", "url": "https://files.pythonhosted.org/packages/bc/41/4972a7186c25c678e1198b417e304a419d23add9579f96877e381939515c/crossplane-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e6079fbca33b0eeb152a3d16e226a486", "sha256": "0e1dbfc8ed2ebfc22de45262365a5792bc8bdc51760ba2d252f1895560e7a714" }, "downloads": -1, "filename": "crossplane-0.3.0.tar.gz", "has_sig": false, "md5_digest": "e6079fbca33b0eeb152a3d16e226a486", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40639, "upload_time": "2018-03-14T22:15:20", "url": "https://files.pythonhosted.org/packages/46/e2/a537182e8f4e96833211339c3cb88e2c5a40126cc55ddf280e43ce0073ba/crossplane-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "02506cebc60e72b9c78eda4cb5435da2", "sha256": "7ad32b87a7fb7a4943ee58514c9dced5bc3be4faf626e2fe158fd8888a5bd31c" }, "downloads": -1, "filename": "crossplane-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "02506cebc60e72b9c78eda4cb5435da2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33213, "upload_time": "2018-03-15T20:42:02", "url": "https://files.pythonhosted.org/packages/05/36/8b601b2cb16523819fea477453b69901536a19c93f71b73e598f6b185a70/crossplane-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e599e99d0e3217a9c29dfa43c1f4af78", "sha256": "6f4633f31c937a7d48a0b75e89790c94334c5984a74b867080079291cb26b8d9" }, "downloads": -1, "filename": "crossplane-0.3.1.tar.gz", "has_sig": false, "md5_digest": "e599e99d0e3217a9c29dfa43c1f4af78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41879, "upload_time": "2018-03-15T20:42:04", "url": "https://files.pythonhosted.org/packages/7c/47/ea6f17691f77b5015bd6501afad490d859f74474ab3975d43bf86e734dfc/crossplane-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "51efd28e4c3dd09bb9e3e8164bd1024d", "sha256": "00cef072d106348852bea894db569cd52e7e4241a9eb572debc14e7b409e4193" }, "downloads": -1, "filename": "crossplane-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "51efd28e4c3dd09bb9e3e8164bd1024d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33902, "upload_time": "2018-04-13T17:32:45", "url": "https://files.pythonhosted.org/packages/0c/ab/7d1d4784c70755c4b12f00173cd04b99579aae30baa2521fd72aac6a0a00/crossplane-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "190d5f455ca977d3a3e0c18c220fad57", "sha256": "4fc7c7d106cb81a456ffd73f7dd0b680908dd7f9568be6218828312dff20b101" }, "downloads": -1, "filename": "crossplane-0.4.0.tar.gz", "has_sig": false, "md5_digest": "190d5f455ca977d3a3e0c18c220fad57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43477, "upload_time": "2018-04-13T17:32:46", "url": "https://files.pythonhosted.org/packages/f7/91/a06a288ee1c4d8d83c0b2208509a05b81399ca6b286c3e702314f36ed025/crossplane-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "a1636fa8eb825ebe4edafcd642118a72", "sha256": "7eb8109d877c784da19114be9a888a9719d9b6d45693a20d454bfa268906dd01" }, "downloads": -1, "filename": "crossplane-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a1636fa8eb825ebe4edafcd642118a72", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34268, "upload_time": "2018-04-14T04:49:14", "url": "https://files.pythonhosted.org/packages/ae/27/bd667b61bb27d24954383b0eeb84e4e383831ffed98c0618c7a4f448717d/crossplane-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8dba8b927024d95ff22f40a036d961bd", "sha256": "4d48a7b7b15977a80665714e763f992d10d99efa6c9c8eada08ed3ed764ef0d0" }, "downloads": -1, "filename": "crossplane-0.4.1.tar.gz", "has_sig": false, "md5_digest": "8dba8b927024d95ff22f40a036d961bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43702, "upload_time": "2018-04-14T04:49:15", "url": "https://files.pythonhosted.org/packages/3a/ff/085363342b57800545db6686b9a7fd0b147f074eb4d75ccdbc56ae3f4767/crossplane-0.4.1.tar.gz" } ], "0.4.10": [ { "comment_text": "", "digests": { "md5": "04f503bb18cae5391e0888ab7acdc198", "sha256": "b808f904261a77e6696b38888d9371086ea5379572998a26320376d1930be9f8" }, "downloads": -1, "filename": "crossplane-0.4.10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "04f503bb18cae5391e0888ab7acdc198", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26412, "upload_time": "2018-08-28T21:25:37", "url": "https://files.pythonhosted.org/packages/b1/1d/d7f903932f62b10494cf26083b9a8f1b8fcf0ec20cb3e9fc97eb1dce59f8/crossplane-0.4.10-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "706ae08cbc625e77566e4a3040d1b1fa", "sha256": "6c74c7d2847305fe2327d5e1c8e9e66d866131b9108a804742ccfb2c4ac2faf2" }, "downloads": -1, "filename": "crossplane-0.4.10.tar.gz", "has_sig": false, "md5_digest": "706ae08cbc625e77566e4a3040d1b1fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41910, "upload_time": "2018-08-28T21:25:39", "url": "https://files.pythonhosted.org/packages/3f/af/bf5327204237a8317e38ee9963aa54342fd424ffeffd2e719bf7a6d2bc90/crossplane-0.4.10.tar.gz" } ], "0.4.11": [ { "comment_text": "", "digests": { "md5": "c77a58ab05fc4cb797e599f3c547495a", "sha256": "416468e5a73ebcdc815a7ee5d5b9589cae3a7fc3d5ced14be1c52fef0aa080f9" }, "downloads": -1, "filename": "crossplane-0.4.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c77a58ab05fc4cb797e599f3c547495a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26400, "upload_time": "2018-08-28T22:54:12", "url": "https://files.pythonhosted.org/packages/39/ba/75bea3613c68092cc227a06c628855f4a4c045b74db10c8011d3988db7c3/crossplane-0.4.11-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6eba0784eb614eb72df51ee6dcd9b9f7", "sha256": "4efffe1cd12cfcdc4ec8b9c289c4f5fafe439b733d2a8f436a6cbae1ddaccfb5" }, "downloads": -1, "filename": "crossplane-0.4.11.tar.gz", "has_sig": false, "md5_digest": "6eba0784eb614eb72df51ee6dcd9b9f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42000, "upload_time": "2018-08-28T22:54:14", "url": "https://files.pythonhosted.org/packages/c5/2e/424eef773f993031a11b98db73b170373fa8b53f5f0835d678f8551e6c8e/crossplane-0.4.11.tar.gz" } ], "0.4.12": [ { "comment_text": "", "digests": { "md5": "8e1c8b898b6c1c7db2e434da5ab96484", "sha256": "c60f83862c38c6bc6b3511632bed42e8315fcd9ba92a7fc1b61addcd840c15f3" }, "downloads": -1, "filename": "crossplane-0.4.12-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8e1c8b898b6c1c7db2e434da5ab96484", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26408, "upload_time": "2018-08-29T06:14:42", "url": "https://files.pythonhosted.org/packages/14/18/7bd1b950dfd9393e18b945cfbf38b867f21b2b2e049c1263c041ef0c164b/crossplane-0.4.12-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "901c80ecd12e61ce4680570ba827c23f", "sha256": "d25eb619072587e683077a350c0e3d8ec5d661c29fd6e019191f8b184a97e180" }, "downloads": -1, "filename": "crossplane-0.4.12.tar.gz", "has_sig": false, "md5_digest": "901c80ecd12e61ce4680570ba827c23f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42012, "upload_time": "2018-08-29T06:14:43", "url": "https://files.pythonhosted.org/packages/98/cd/6267ef6b95edf7e8c2dc411fa6b7077dce10ba8990d01d544fe7f7403748/crossplane-0.4.12.tar.gz" } ], "0.4.13": [ { "comment_text": "", "digests": { "md5": "a5d18b2404274b7da48c8e8e3a6a1142", "sha256": "09d4f7c6dd4f95ee9efea2adba3dff16d21c4fab006b7dcd3a012645c26d94cd" }, "downloads": -1, "filename": "crossplane-0.4.13-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a5d18b2404274b7da48c8e8e3a6a1142", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26401, "upload_time": "2018-12-05T23:09:31", "url": "https://files.pythonhosted.org/packages/f4/25/30c70f1724b01efb99e2c6eb649c9b78a7e9eb9672530e36f5321731e778/crossplane-0.4.13-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "75f145b8286d39463dfafef09f2ed37e", "sha256": "0426a621ce080857ee0f12aa79f51a6da5f16c7a80cf4a71b5290a07253a85e7" }, "downloads": -1, "filename": "crossplane-0.4.13.tar.gz", "has_sig": false, "md5_digest": "75f145b8286d39463dfafef09f2ed37e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42024, "upload_time": "2018-12-05T23:09:33", "url": "https://files.pythonhosted.org/packages/2f/29/246a25b82e93b6c90cfccc3a9b3e589a9ad5087961df386bc2811ee929db/crossplane-0.4.13.tar.gz" } ], "0.4.14": [ { "comment_text": "", "digests": { "md5": "f559c199220963ddf035f694ab019d6e", "sha256": "a369599e5a098106acb64e1f145e151668d2b1e421930320980c7fea8654592f" }, "downloads": -1, "filename": "crossplane-0.4.14-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f559c199220963ddf035f694ab019d6e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26396, "upload_time": "2018-12-22T06:00:14", "url": "https://files.pythonhosted.org/packages/e2/99/3ce2ea6c52e5fdf87d6685fa00ebe0521533821c97187605bcce075da6df/crossplane-0.4.14-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0dfe6f4b60be67ef60c386f416b70fba", "sha256": "182ea3d176a65b50123026eecc58bd559661ed7dcff7957f290461dfe2ecc3c4" }, "downloads": -1, "filename": "crossplane-0.4.14.tar.gz", "has_sig": false, "md5_digest": "0dfe6f4b60be67ef60c386f416b70fba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42020, "upload_time": "2018-12-22T06:00:15", "url": "https://files.pythonhosted.org/packages/0b/df/28df6037312838fcdd1cc39be48a97f282fd26bd4c1a3940182f00248ac4/crossplane-0.4.14.tar.gz" } ], "0.4.15": [ { "comment_text": "", "digests": { "md5": "96097e6f74b797d2443fdbf2d965b5da", "sha256": "7dc7a6e18d0e96a580ba86dc8e1480a84ffa03904a28b3da1003a7813185d1e5" }, "downloads": -1, "filename": "crossplane-0.4.15-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "96097e6f74b797d2443fdbf2d965b5da", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26744, "upload_time": "2019-01-08T19:29:21", "url": "https://files.pythonhosted.org/packages/0f/67/d29438769cea9c8e20b9c1d899d30db3e30395a768863be14227876fd0df/crossplane-0.4.15-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6b01beffe2dcc6175807b9baa2dd3216", "sha256": "e893807c7e16e0bd28b837292c88b8c9494c1e206b22e2552dc6db20f70e4dd2" }, "downloads": -1, "filename": "crossplane-0.4.15.tar.gz", "has_sig": false, "md5_digest": "6b01beffe2dcc6175807b9baa2dd3216", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42552, "upload_time": "2019-01-08T19:29:25", "url": "https://files.pythonhosted.org/packages/8f/0e/0ca01b0bb8b259d0e6f7e4cf6536ba181f2282c9590b78f040c50c7d75cf/crossplane-0.4.15.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "0f3a7d23662485af2c05a2d5d388bfad", "sha256": "91a54b8e1e2ab5d84f622b9fe9f1129275e44560f0cb234efbbd8347c9521d1a" }, "downloads": -1, "filename": "crossplane-0.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0f3a7d23662485af2c05a2d5d388bfad", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34228, "upload_time": "2018-04-17T01:00:30", "url": "https://files.pythonhosted.org/packages/6d/f1/19c776e767c2a5a23e073253258318c5ab6d0cb385bf676a0791b87b80ee/crossplane-0.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b3ad7d87dfa84e6810bd296917359cc", "sha256": "44499fae57d781405150fee8e72866e9946a74eb33b74f2e7a38228bdeaadded" }, "downloads": -1, "filename": "crossplane-0.4.2.tar.gz", "has_sig": false, "md5_digest": "3b3ad7d87dfa84e6810bd296917359cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43898, "upload_time": "2018-04-17T01:00:32", "url": "https://files.pythonhosted.org/packages/f3/f8/cf294668feb0a8204fd252c2ec2c87c13e70175d0e49f7f86fd925876fff/crossplane-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "7584de040d0140112caa25722d184d8a", "sha256": "8c7a6b51a0ef5f7cc158a66e0c8cb3d459d9d5bcb3c4a6ccbacf22fc1342ca58" }, "downloads": -1, "filename": "crossplane-0.4.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7584de040d0140112caa25722d184d8a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34294, "upload_time": "2018-05-02T21:54:05", "url": "https://files.pythonhosted.org/packages/c2/1c/64590f75cec75c5ac8ea0ef3cfa1d5aec512d59f1058da6c8c97f9e5b5ef/crossplane-0.4.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3d9005557cc818ef4f35c5207945f68f", "sha256": "85287ca7862646e62bbc94d2581db6f9067b724e08af685dce091eb51fe8d32b" }, "downloads": -1, "filename": "crossplane-0.4.3.tar.gz", "has_sig": false, "md5_digest": "3d9005557cc818ef4f35c5207945f68f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44010, "upload_time": "2018-05-02T21:54:06", "url": "https://files.pythonhosted.org/packages/a2/5c/53a04c599e243db54bd13163ea494ffbad799096a5ab52b22b6312e28166/crossplane-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "0c7867b488596360bc6b94a58c7885cc", "sha256": "f5662ca565134fed0041fa9a8a120834f5ba24cf75dad23c6445bbe7d17a0441" }, "downloads": -1, "filename": "crossplane-0.4.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0c7867b488596360bc6b94a58c7885cc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34271, "upload_time": "2018-05-10T22:17:27", "url": "https://files.pythonhosted.org/packages/f9/84/8a9ce36d0b08a6c9c7211bed001e3f34461c99bd455445de71c214688415/crossplane-0.4.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "89aa5367d5bc16ff5dc38a7a4e671884", "sha256": "da59e4b48a15d730a3786375aa980c24175bbe27dd08b9dd350aa2722631196c" }, "downloads": -1, "filename": "crossplane-0.4.4.tar.gz", "has_sig": false, "md5_digest": "89aa5367d5bc16ff5dc38a7a4e671884", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44073, "upload_time": "2018-05-10T22:17:28", "url": "https://files.pythonhosted.org/packages/d2/a6/a30526555e4c6d883ac1a762c5c8b9c51f8935a74810b2c8dd5082fd72f0/crossplane-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "c6a922c8fba3aa7e5ec60795ee461d43", "sha256": "6eadfd511d4b8444ccdc7355ad54a7be3f6889a0afe99242b579574db4cd2d26" }, "downloads": -1, "filename": "crossplane-0.4.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c6a922c8fba3aa7e5ec60795ee461d43", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 32261, "upload_time": "2018-06-28T23:15:46", "url": "https://files.pythonhosted.org/packages/59/9f/3c2a27bb9695a68199288539448b3a197f00c80aa21f00a57c60cbda3661/crossplane-0.4.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44d79c53058aca91d6439f548704565b", "sha256": "5a435d6b360123af92bde94bb39826675650df5094d1b84ec1419580e5f52318" }, "downloads": -1, "filename": "crossplane-0.4.5.tar.gz", "has_sig": false, "md5_digest": "44d79c53058aca91d6439f548704565b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44776, "upload_time": "2018-06-28T23:15:47", "url": "https://files.pythonhosted.org/packages/4c/eb/7a7e31cea59a746aca3e7260028b85b04856ac38fb679cea92111a9ab05f/crossplane-0.4.5.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "ecc525444be39891948fd2b7f4a73e0e", "sha256": "31869ff29de849c04194e99a2b791e426a76473c7c246cec7d8dcda1a4cb7ac6" }, "downloads": -1, "filename": "crossplane-0.4.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ecc525444be39891948fd2b7f4a73e0e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 32289, "upload_time": "2018-06-29T00:13:46", "url": "https://files.pythonhosted.org/packages/0d/d2/57a61cbddabcac40c4dd252667e3ecdbb97e0e9461a4367649647d544d02/crossplane-0.4.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1889064e211dc842fbf1f52adfd694c3", "sha256": "21a287e791a7cd40082d3539cadfdad12b58cc9691a16592fc85697549ba38e1" }, "downloads": -1, "filename": "crossplane-0.4.7.tar.gz", "has_sig": false, "md5_digest": "1889064e211dc842fbf1f52adfd694c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41392, "upload_time": "2018-06-29T00:13:48", "url": "https://files.pythonhosted.org/packages/05/2c/05554d70a8d785c03dfc0c286a491017de6f21e215127b5a386c682278e7/crossplane-0.4.7.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "343363143fb76a2681063ac20b63b6be", "sha256": "22e3b225f3e30431e38bee0dc1fb84aaf5fb415c3175667c7370b1f62cb9dabd" }, "downloads": -1, "filename": "crossplane-0.4.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "343363143fb76a2681063ac20b63b6be", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26098, "upload_time": "2018-06-29T01:20:41", "url": "https://files.pythonhosted.org/packages/77/cf/7837e1e87a2bff259a9a73a06ed393d3b1a8935cfc92097a79a0a374c66d/crossplane-0.4.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a29b6bb8190f2caccbbdf32b372aa466", "sha256": "e78f9aaf508382912b526b5a2bd54756dd000a9f85b4ed061303f821f30021d6" }, "downloads": -1, "filename": "crossplane-0.4.8.tar.gz", "has_sig": false, "md5_digest": "a29b6bb8190f2caccbbdf32b372aa466", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41380, "upload_time": "2018-06-29T01:20:43", "url": "https://files.pythonhosted.org/packages/c3/5b/665e4083cd2b123df81321b6b567f15683fcf1b51f91d64986a7c74afc93/crossplane-0.4.8.tar.gz" } ], "0.4.9": [ { "comment_text": "", "digests": { "md5": "a35b7ca2c01d15bdf3d09059aa28a29e", "sha256": "ec8ab3d3825718d27982915192901f9fc6e47c8b8152a8985a4300f47fd1f358" }, "downloads": -1, "filename": "crossplane-0.4.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a35b7ca2c01d15bdf3d09059aa28a29e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26242, "upload_time": "2018-08-22T20:33:26", "url": "https://files.pythonhosted.org/packages/d7/24/c93fc2134e12f420a24cdfa2a181f585db6b37f9f396e214b932338ec415/crossplane-0.4.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3a932d25b39d17da760a6627f444d923", "sha256": "0677bed36fb05d08fe06ee672440d66e8cb9a082bf49800942dc51574474ee76" }, "downloads": -1, "filename": "crossplane-0.4.9.tar.gz", "has_sig": false, "md5_digest": "3a932d25b39d17da760a6627f444d923", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41637, "upload_time": "2018-08-22T20:33:27", "url": "https://files.pythonhosted.org/packages/0b/e9/067690f847e0745ee8fff793d90f4d5bc8864d1937589c4bd82e481c4849/crossplane-0.4.9.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "4f9992025e459a69d267ce309491de96", "sha256": "abdb3a7305e535b197b7f8a0a75c7a5b4088376aeb17a900e8f2acca507c1c67" }, "downloads": -1, "filename": "crossplane-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4f9992025e459a69d267ce309491de96", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27245, "upload_time": "2019-04-03T17:05:12", "url": "https://files.pythonhosted.org/packages/47/8e/852ef621eaa523a631cfa866c1cabb9021d20df378c8d80e5dfe799c414c/crossplane-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b784790c8a9a55238f5895d7f0c0d0c7", "sha256": "0c7723a4b29f7fab22c4a4eeedb3044cb3e6aaa527bc2d24784714ef737b09f5" }, "downloads": -1, "filename": "crossplane-0.5.0.tar.gz", "has_sig": false, "md5_digest": "b784790c8a9a55238f5895d7f0c0d0c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43121, "upload_time": "2019-04-03T17:05:15", "url": "https://files.pythonhosted.org/packages/cb/7e/cf7d10f9cf748f9d965e45d736796de1cbd953a87eefb26a087ea88556b7/crossplane-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "2eed0d077d48abcdda237909e18d6a10", "sha256": "8aabb12e6bea5f02fc900984b55c079a76ee8cc12c82dfe6e07e07f599dc18be" }, "downloads": -1, "filename": "crossplane-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2eed0d077d48abcdda237909e18d6a10", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26096, "upload_time": "2019-04-08T18:42:56", "url": "https://files.pythonhosted.org/packages/b2/b1/f94c855bc01eb44a7298f19a54b13544097a04b247e9c8a65a062318fd66/crossplane-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a6c1c24103bb599f32eedf6470efe1f", "sha256": "67723580c70f7eab284770f85d16e1d5087f745f27a74a58261775beda13b2a3" }, "downloads": -1, "filename": "crossplane-0.5.1.tar.gz", "has_sig": false, "md5_digest": "5a6c1c24103bb599f32eedf6470efe1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40623, "upload_time": "2019-04-08T18:42:57", "url": "https://files.pythonhosted.org/packages/ac/1e/4ab143758bb47f38560df1bdb0642e11a7150a482158f001820958a8e1dc/crossplane-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "6e7a37129d74d89486a4695c16ce96ac", "sha256": "93896851c7cbdd454b048e70ad070ba83585ed944ef54936d1cc585287235c16" }, "downloads": -1, "filename": "crossplane-0.5.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6e7a37129d74d89486a4695c16ce96ac", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26281, "upload_time": "2019-05-02T22:42:59", "url": "https://files.pythonhosted.org/packages/01/d5/85903e5b629f863b397a5734b4472369e0d1ca80feaa08e091aabc3291b3/crossplane-0.5.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c2011b41cfae40c4c8adebfb6753660d", "sha256": "85ef98e07186614a4ccac1272d2c1455de6a3e15e7df2e9b0a174fb221cdbeda" }, "downloads": -1, "filename": "crossplane-0.5.2.tar.gz", "has_sig": false, "md5_digest": "c2011b41cfae40c4c8adebfb6753660d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40837, "upload_time": "2019-05-02T22:43:01", "url": "https://files.pythonhosted.org/packages/5f/cb/9f65c6245aa045cd5cb15eac837725aaf7f2a037dfad34aa3b6a0b45816d/crossplane-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "b2981d8f7318c0cf4344b2d690a23fc6", "sha256": "599cecd2640744455b89ae569ead7a4412f15f9da885a8be02d04e4d1e74a5a9" }, "downloads": -1, "filename": "crossplane-0.5.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b2981d8f7318c0cf4344b2d690a23fc6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31098, "upload_time": "2019-09-26T22:34:36", "url": "https://files.pythonhosted.org/packages/0f/68/84e8f3c779fae378b16c35220cfd07b4da4c1953cd45a5eba5ee4b575dda/crossplane-0.5.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "77ba55f4d3f936a5943c1b0c3098d839", "sha256": "a527f55dd725dde521ada376a06c5a00922d1889fed2c7b8cfd42d2884d0cf10" }, "downloads": -1, "filename": "crossplane-0.5.3.tar.gz", "has_sig": false, "md5_digest": "77ba55f4d3f936a5943c1b0c3098d839", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40731, "upload_time": "2019-09-26T22:34:38", "url": "https://files.pythonhosted.org/packages/38/41/40822c0007ff08b942c2a335212def30e383ce87917dbb5b9a14a4bf5636/crossplane-0.5.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b2981d8f7318c0cf4344b2d690a23fc6", "sha256": "599cecd2640744455b89ae569ead7a4412f15f9da885a8be02d04e4d1e74a5a9" }, "downloads": -1, "filename": "crossplane-0.5.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b2981d8f7318c0cf4344b2d690a23fc6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31098, "upload_time": "2019-09-26T22:34:36", "url": "https://files.pythonhosted.org/packages/0f/68/84e8f3c779fae378b16c35220cfd07b4da4c1953cd45a5eba5ee4b575dda/crossplane-0.5.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "77ba55f4d3f936a5943c1b0c3098d839", "sha256": "a527f55dd725dde521ada376a06c5a00922d1889fed2c7b8cfd42d2884d0cf10" }, "downloads": -1, "filename": "crossplane-0.5.3.tar.gz", "has_sig": false, "md5_digest": "77ba55f4d3f936a5943c1b0c3098d839", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40731, "upload_time": "2019-09-26T22:34:38", "url": "https://files.pythonhosted.org/packages/38/41/40822c0007ff08b942c2a335212def30e383ce87917dbb5b9a14a4bf5636/crossplane-0.5.3.tar.gz" } ] }