{ "info": { "author": "Seth Jensen", "author_email": "sjensen85@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# dtest\n\n[![CircleCI](https://circleci.com/gh/sjensen85/dtest/tree/master.svg?style=svg)](https://circleci.com/gh/sjensen85/dtest/tree/master)\n[![Requirements Status](https://requires.io/github/sjensen85/dtest/requirements.svg?branch=master)](https://requires.io/github/sjensen85/dtest/requirements/?branch=master)\n\nA library to facilitate the testing of data inside data pipelines. Results are pushed to a messaging queue of some sort for consumption by applications, persistence, etc.\n\nSupported messaging queues / streaming platforms\n\n- [x] RabbitMQ\n- [ ] MQTT\n- [ ] Redis\n- [ ] Kafka\n- [ ] Kinesis\n\nSupported secrets managers\n\n- [x] AWS Secrets Manager\n- [ ] Hashicorp Vault\n\n## Installation\n\n`pip3 install dtest-framework`\n\n## Unit Tests\n\nTesting is set up using Pytest\n\nInstall Pytest with `pip3 install -U pytest`\n\nRun the tests with `pytest` in the root directory.\n\n## Quick Start\n\n```\nfrom dtest.dtest import Dtest\nfrom hamcrest import *\n\n\n# If publishing to a RabbitMQ queue, specify 'queue' \\\n# If publishing to a key-value store, specify 'kv-store' \\\n# Or specify both\n\nconnectionConfig = {\n \"queue\": {\n \"host\": \"localhost\",\n \"username\": \"guest\",\n \"password\": \"guest\",\n \"exchange\": \"test.dtest\",\n \"exchange_type\": \"fanout\"\n },\n \"kv-store\": {\n \"api_url\": \"localhost:8080/api/\",\n \"retrieve_path\": \"getKeyValue/\",\n \"publish_path\": \"postKeyValue/\"\n }\n}\nmetadata = {\n \"description\": \"This is a test of the assertCondition\",\n \"topic\": \"test.dtest\",\n \"ruleSet\": \"Testing some random data\",\n \"dataSet\": \"random_data_set_123912731.csv\"\n}\n\ndt = Dtest(connectionConfig, metadata)\n\ndsQubert = [0,1]\n\ndt.assert_that(dsQubert, has_length(2))\n// True\n\ndt.publish()\n// Publishes test suite to MQ server\n\n\n////////////////////////////////////////\n// Store value in KV store for later use\ndt.publishKeyValue('some-descriptor-dsQubert-length', len(dqQubert))\n\n// Retrieve value from KV store to compare other files against\navg_count = dt.retrieveKeyValue('some-descriptor-dsQubert-length')\n\ndt.assert_that(dsQubert, has_length(avg_count))\n```\n\n## Connection configuration\n\nThere are two options for providing the connection configuration for the publisher - the default way described above and by storing your configuration in a secrets manager. To utilize a secrets manager, use a connectionConfig similar to:\n\n```\nconnectionConfig = {\n \"queue\": {\n \"vault\": {\n \"provider\": \"aws_secrets_manager\",\n \"secret_name\": \"secret_name_here\",\n \"region\": \"us-east-1\"\n }\n }\n}\n```\n\nHere we are giving the provider name `aws_secrets_manager`, the key to use to retrieve the secret `secret_name`, and the region in which Secrets Manager is hosted. `secret_name` and `region` are passed to `boto3` directly. `region_name` is provided when initializing the `boto3` session and `secret_name` is provided to the `boto3.secretsmanager.get_secret_value()` function as `SecretId`.\n\n## Custom handlers\n\nIt is possible to create custom message queue and key value store handlers. Implement a class that inherits from `dtest.handler.MqHandler` or `dtest.handler.KvHandler` depending on your needs.\n\n```\n\nclass MqHandler:\n\n @classmethod\n def version(self): return \"1.0\"\n\n @abstractmethod\n def connect(self): raise NotImplementedError\n\n @abstractmethod\n def publishResults(self): raise NotImplementedError\n\n @abstractmethod\n def closeConnection(self): raise NotImplementedError\n\n\nclass KvHandler:\n\n @classmethod\n def version(self): return \"1.0\"\n\n @abstractmethod\n def retrieve(self): raise NotImplementedError\n\n @abstractmethod\n def publish(self): raise NotImplementedError\n\n```\n\n## Package dependencies\n\nI did not want to require that all dependencies of every module need to be installed. As such, the following packages need to be installed via `pip` if you would like to utilize the specified functionality\n\n| Package | Dependent module/functionality |\n| ------- | ------------------------------ |\n| boto3 | `vaults.secretsmanager` |\n| | |\n| pandas | Local testing with `pytest` |\n\n#### CI/CD\n\n- Use the standard `ecs` labeled Jenkins agent\n- Performs tests on master commits and PRs\n- Does not deploy to PyPI automatically\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/sjensen85/dtest", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "dtest-framework", "package_url": "https://pypi.org/project/dtest-framework/", "platform": "", "project_url": "https://pypi.org/project/dtest-framework/", "project_urls": { "Homepage": "https://github.com/sjensen85/dtest" }, "release_url": "https://pypi.org/project/dtest-framework/0.1.21/", "requires_dist": [ "six", "pika (==1.0.0)", "pyhamcrest", "requests" ], "requires_python": "", "summary": "A library to facilitate the testing of data inside data pipelines. Results are pushed to a messaging queue of some sort for consumption by applications, persistence, etc.", "version": "0.1.21" }, "last_serial": 5891341, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e0cad4dbe5daeddbd9f1d58d0d02db83", "sha256": "7d37a10c9b03794f2101ccee12264e838e60ae732fc29716414410a5c8e76904" }, "downloads": -1, "filename": "dtest_framework-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e0cad4dbe5daeddbd9f1d58d0d02db83", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5513, "upload_time": "2019-04-01T19:22:20", "url": "https://files.pythonhosted.org/packages/60/bf/0448c9c5031b0f2f68bc6ffdfa8c55475c33e0c511c768dc02a85bc6bd09/dtest_framework-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "30dead8eab2af458c0720d26c3fabc86", "sha256": "9e42478b59e9816f46b7a61d56f4effea744a860ce59d5beb60580aa55000c57" }, "downloads": -1, "filename": "dtest-framework-0.1.0.tar.gz", "has_sig": false, "md5_digest": "30dead8eab2af458c0720d26c3fabc86", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3772, "upload_time": "2019-04-01T19:22:22", "url": "https://files.pythonhosted.org/packages/81/0c/472f46516931c44f1b5612006d4e3db431068b300d4ead6c0c5316822b0b/dtest-framework-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "832adb7ae5cf793af2abef3e68c7d935", "sha256": "7d992ade499fc5a20d1299904c178cedef33e02044dcbb428debc233daa9a259" }, "downloads": -1, "filename": "dtest_framework-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "832adb7ae5cf793af2abef3e68c7d935", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6168, "upload_time": "2019-04-02T20:06:58", "url": "https://files.pythonhosted.org/packages/f8/cd/8ab708f6d891e64b6ddc7f27775ed5bfd5bfbe570361d00ee39623a7c53b/dtest_framework-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "98f85ae91504b16285c5fa23459ef590", "sha256": "af024a95bc16d3b5d5649aa1fea98c31adea7204fd2237079db1c6d747bf0388" }, "downloads": -1, "filename": "dtest-framework-0.1.1.tar.gz", "has_sig": false, "md5_digest": "98f85ae91504b16285c5fa23459ef590", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4408, "upload_time": "2019-04-02T20:06:59", "url": "https://files.pythonhosted.org/packages/f9/aa/4de8f53dfc0c372deb798ffb8c67a936b9657d5d15fa738a558b8a58281a/dtest-framework-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "3e5982d1c992bd487faa9cf68cde9897", "sha256": "d0da8af02de16e725c7e2c8b4e88f72cad2a25492def07bc105294e5788eb57e" }, "downloads": -1, "filename": "dtest_framework-0.1.10-py3-none-any.whl", "has_sig": false, "md5_digest": "3e5982d1c992bd487faa9cf68cde9897", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6748, "upload_time": "2019-04-22T22:13:22", "url": "https://files.pythonhosted.org/packages/c4/30/29cb47f38ef828d61e1055d7a63b739efcc80ee22f3c7bbb39a772c699f4/dtest_framework-0.1.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "30e4f8d2f805a9b8d18f2792da3d53db", "sha256": "c226ad8ded3fe996a60ce5836f05df3fc88f599701a25dbdd24c69968fb8f645" }, "downloads": -1, "filename": "dtest-framework-0.1.10.tar.gz", "has_sig": false, "md5_digest": "30e4f8d2f805a9b8d18f2792da3d53db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5418, "upload_time": "2019-04-22T22:13:23", "url": "https://files.pythonhosted.org/packages/c2/4a/1fa1c13380c0976c5c3a752e146c5e2d82bf7cf1295bc9f988a274826959/dtest-framework-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "3fea1131d9ae6742362696b425d32e65", "sha256": "a02cd801a1d9fc3e7d896436fa8682330a57f7b2e003b36ee9bfc452e225f4d4" }, "downloads": -1, "filename": "dtest_framework-0.1.11-py3-none-any.whl", "has_sig": false, "md5_digest": "3fea1131d9ae6742362696b425d32e65", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6921, "upload_time": "2019-04-23T20:36:14", "url": "https://files.pythonhosted.org/packages/48/ff/9326d1b5a509e2a3d5cc9a24e2243c05cad95b8ef29a9b2d8cbef25e3619/dtest_framework-0.1.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "70b59e682a2214f0a7651fccbaeba0f2", "sha256": "1462d21e9aec9914b1d3956e6eb8a4fc197877ebce2fb7e496a5a290621f0c7d" }, "downloads": -1, "filename": "dtest-framework-0.1.11.tar.gz", "has_sig": false, "md5_digest": "70b59e682a2214f0a7651fccbaeba0f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5588, "upload_time": "2019-04-23T20:36:16", "url": "https://files.pythonhosted.org/packages/48/a5/0cc8df4fd35898c64a9e2634808fdb087509cb15b9aec90cf73379ba5f5e/dtest-framework-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "ec45b35ae8148f9b872b432774e561d8", "sha256": "83a28593df49e61ca2701f05ec5ef662e9fbef202daa967e53961e749261f297" }, "downloads": -1, "filename": "dtest_framework-0.1.12-py3-none-any.whl", "has_sig": false, "md5_digest": "ec45b35ae8148f9b872b432774e561d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6956, "upload_time": "2019-04-24T17:12:19", "url": "https://files.pythonhosted.org/packages/45/63/249ba70db0f0be7a86b052121f949963567b1864c984b1a09a7da98942c3/dtest_framework-0.1.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "989a20cf5e6bea4844ff808d56a069dd", "sha256": "05727e42131a6dce4ce65ca6b7cf16c36bd5e0c22e145979e165e5b555bb5e6e" }, "downloads": -1, "filename": "dtest-framework-0.1.12.tar.gz", "has_sig": false, "md5_digest": "989a20cf5e6bea4844ff808d56a069dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5619, "upload_time": "2019-04-24T17:12:20", "url": "https://files.pythonhosted.org/packages/1b/b8/b0ff38da3f5df9318357f3172313a4b05514e483e95a0457a7fa59bbcbd1/dtest-framework-0.1.12.tar.gz" } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "26d8bfee916dd8c94bfeebba50c14c8f", "sha256": "96ed67d58387be3eca57e9c79a33808b915ffab8da424e0d0fc2080b724459a3" }, "downloads": -1, "filename": "dtest_framework-0.1.13-py3-none-any.whl", "has_sig": false, "md5_digest": "26d8bfee916dd8c94bfeebba50c14c8f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6955, "upload_time": "2019-04-24T17:37:50", "url": "https://files.pythonhosted.org/packages/50/e4/c57f5751ccf5485c171caffaccfe66b3cb80465edf41736395c153ae157e/dtest_framework-0.1.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7bfa707ac1380b02a2e272931c941a3", "sha256": "04664c729b5b78f22a9fe62b007d8bd2581bec5ee0d6e86b19199a6cd73608b6" }, "downloads": -1, "filename": "dtest-framework-0.1.13.tar.gz", "has_sig": false, "md5_digest": "e7bfa707ac1380b02a2e272931c941a3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5620, "upload_time": "2019-04-24T17:37:51", "url": "https://files.pythonhosted.org/packages/45/d4/f2c02cf0b4c2ff23ca94bb45894795ff82fb82fd6ded7eed87642d776f2f/dtest-framework-0.1.13.tar.gz" } ], "0.1.14": [ { "comment_text": "", "digests": { "md5": "b305ca7b56ed40fc6095e3bb072354ee", "sha256": "4fa15ec29b6fcc1636044e3d5bf2c04fcb2d42fdcacd47b5b464b60e5b1cd868" }, "downloads": -1, "filename": "dtest_framework-0.1.14-py3-none-any.whl", "has_sig": false, "md5_digest": "b305ca7b56ed40fc6095e3bb072354ee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6970, "upload_time": "2019-04-24T18:33:10", "url": "https://files.pythonhosted.org/packages/12/ac/9a9962a9c4e211a54b2f533f3cc49408ce29f12073fee51af0fa43eb53d4/dtest_framework-0.1.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ab01b5d8e1889a7ff39a4014f1070475", "sha256": "94d16b06eb9706008f781dd63281adac5a38e88510926311ecba3846dac41f25" }, "downloads": -1, "filename": "dtest-framework-0.1.14.tar.gz", "has_sig": false, "md5_digest": "ab01b5d8e1889a7ff39a4014f1070475", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5629, "upload_time": "2019-04-24T18:33:11", "url": "https://files.pythonhosted.org/packages/7c/c0/80f11f296a793518ae056b3c934260966e2649ff994168eb54bd976f5c5f/dtest-framework-0.1.14.tar.gz" } ], "0.1.15": [ { "comment_text": "", "digests": { "md5": "e0bd82401093daf7f5d49f34a4d8c482", "sha256": "0a0671927a6375197a61c2d894914b168da673b71e0212ba0fad9b2d4719783b" }, "downloads": -1, "filename": "dtest_framework-0.1.15-py3-none-any.whl", "has_sig": false, "md5_digest": "e0bd82401093daf7f5d49f34a4d8c482", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9388, "upload_time": "2019-05-15T18:43:35", "url": "https://files.pythonhosted.org/packages/3d/30/c22c88dcad0a0f5675e09d8f1a22f83fff39bd9c427c1f8c897f5c1922dd/dtest_framework-0.1.15-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d4397aaa6834e034886c4cb8638195ac", "sha256": "500d90f980c1348238cc00df9b627ca5b07dbcf160ce26789a38844e8a22ecad" }, "downloads": -1, "filename": "dtest-framework-0.1.15.tar.gz", "has_sig": false, "md5_digest": "d4397aaa6834e034886c4cb8638195ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7506, "upload_time": "2019-05-15T18:43:36", "url": "https://files.pythonhosted.org/packages/51/6a/c3ece8a0861ddc6efd44d8b8676671b377919aae4288b4c39dd510bf97d1/dtest-framework-0.1.15.tar.gz" } ], "0.1.16": [ { "comment_text": "", "digests": { "md5": "14f7b2dec9d7c176849843d556bee142", "sha256": "bf284a173d406e4e3abb6165f430588a6a889605f7f87f07c055737da9d9616b" }, "downloads": -1, "filename": "dtest_framework-0.1.16-py3-none-any.whl", "has_sig": false, "md5_digest": "14f7b2dec9d7c176849843d556bee142", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9377, "upload_time": "2019-05-16T14:26:52", "url": "https://files.pythonhosted.org/packages/f5/61/8bf8e2fb32774d9160448c1ba075b6dff22cc95354edc301dfa328a5ed22/dtest_framework-0.1.16-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "443212af408acffc8264717eba5c9480", "sha256": "6ebc6354bbb7510b6acf8709b7fe36eb9d2e89f2922e654d35f7cc0d912ce9c6" }, "downloads": -1, "filename": "dtest-framework-0.1.16.tar.gz", "has_sig": false, "md5_digest": "443212af408acffc8264717eba5c9480", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7505, "upload_time": "2019-05-16T14:26:54", "url": "https://files.pythonhosted.org/packages/d4/96/87dfc2b95c5d18a9dd24564954e56b9ce2d9ac573d9971047cb7aaf0735a/dtest-framework-0.1.16.tar.gz" } ], "0.1.17": [ { "comment_text": "", "digests": { "md5": "e21e1b28d185bac175bbaa5af181e023", "sha256": "ba110c71c766f5c30f03012990261078550e86a7d259ef1a3c15e7ea599f30a5" }, "downloads": -1, "filename": "dtest_framework-0.1.17-py3-none-any.whl", "has_sig": false, "md5_digest": "e21e1b28d185bac175bbaa5af181e023", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9416, "upload_time": "2019-05-16T18:13:58", "url": "https://files.pythonhosted.org/packages/9d/7a/81071ab2919351348e5e1ce86db8e2de8afa100e1f63152c154f35c1d331/dtest_framework-0.1.17-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e2ac81fe7d812634e6edaa6966f55cf", "sha256": "9355a930fc464800612f33c3d5da47ae0482c072c5252c744028f0cc3fcf66f3" }, "downloads": -1, "filename": "dtest-framework-0.1.17.tar.gz", "has_sig": false, "md5_digest": "1e2ac81fe7d812634e6edaa6966f55cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7537, "upload_time": "2019-05-16T18:13:59", "url": "https://files.pythonhosted.org/packages/8e/b3/8e38f3441cd4df7b58cbf7f855fcb8660fea64db21c4b730ed9dea8693c6/dtest-framework-0.1.17.tar.gz" } ], "0.1.18": [ { "comment_text": "", "digests": { "md5": "6031f87796a024641f73795164795bc7", "sha256": "8465602e890f2c8602cd15fa54db0e103c095682a26ce5f344b5f50dae56f327" }, "downloads": -1, "filename": "dtest_framework-0.1.18-py3-none-any.whl", "has_sig": false, "md5_digest": "6031f87796a024641f73795164795bc7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9400, "upload_time": "2019-05-16T18:47:22", "url": "https://files.pythonhosted.org/packages/78/fe/f5e1e379d0757761170b985d9ff1f87b597dab685aac555f83e7f123935d/dtest_framework-0.1.18-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae96f86069238619a09abfff5bffe32b", "sha256": "2c618b84b66946a73b75c54492fb35d71e04960cdb8a7d9e31b9ae96ed27671a" }, "downloads": -1, "filename": "dtest-framework-0.1.18.tar.gz", "has_sig": false, "md5_digest": "ae96f86069238619a09abfff5bffe32b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7529, "upload_time": "2019-05-16T18:47:24", "url": "https://files.pythonhosted.org/packages/7f/1b/1055de261e663b73d037809a410c4007a809175ebc8a9414c5d22e5a8008/dtest-framework-0.1.18.tar.gz" } ], "0.1.19": [ { "comment_text": "", "digests": { "md5": "ca427dbd2aae7a32eb97752eb976fad7", "sha256": "8dac601c4a9f9291ce4cca75bf3990153aed5c162c2f553f6a51c0cb70d493b0" }, "downloads": -1, "filename": "dtest_framework-0.1.19-py3-none-any.whl", "has_sig": false, "md5_digest": "ca427dbd2aae7a32eb97752eb976fad7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9391, "upload_time": "2019-05-17T13:50:48", "url": "https://files.pythonhosted.org/packages/8b/ef/df108e258c5d03fd048cff156ef9654e68eee63f88a2e8298237b8906071/dtest_framework-0.1.19-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "85f6a8b3c7d799c5b611faf910564358", "sha256": "16254cb9d8e458ac538f7f6966e0b9045f83ce0f0b3a55ab20ba14af32a68cf1" }, "downloads": -1, "filename": "dtest-framework-0.1.19.tar.gz", "has_sig": false, "md5_digest": "85f6a8b3c7d799c5b611faf910564358", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7529, "upload_time": "2019-05-17T13:50:49", "url": "https://files.pythonhosted.org/packages/dc/22/ec7fb6a82810dc726cf8c2fd2f7af84f5e6eb07934503635fc6fb2a20279/dtest-framework-0.1.19.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "5714c146ff86d55d4e2cd42c8414b30d", "sha256": "bf374517eb70011e9745ebc2a5cde1f838a4007d8cc3fb30432637352c7e1a92" }, "downloads": -1, "filename": "dtest_framework-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "5714c146ff86d55d4e2cd42c8414b30d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6176, "upload_time": "2019-04-03T03:06:25", "url": "https://files.pythonhosted.org/packages/e9/5b/c423f54152a2a89205af2aaf70cdd918f7a6af35df5fc62f031a2f150aa1/dtest_framework-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b3a80688e7dd4dd336e4cb440fc5aa1", "sha256": "480553882039c88dcfb72388f66b17ac807ecba6a842a046b2ece8ef5b1e3171" }, "downloads": -1, "filename": "dtest-framework-0.1.2.tar.gz", "has_sig": false, "md5_digest": "3b3a80688e7dd4dd336e4cb440fc5aa1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4406, "upload_time": "2019-04-03T03:06:26", "url": "https://files.pythonhosted.org/packages/38/9b/68db61029a3e552eb908cc4e2e02a660c7bde66fa14c4f6f4a5b17afe4c7/dtest-framework-0.1.2.tar.gz" } ], "0.1.20": [ { "comment_text": "", "digests": { "md5": "98f943aab9ac7e8dcabd6035ddc49f73", "sha256": "bf79ecbaa17734a55ed9bed01d57ea88bb20c1865798df8d2b6e7106654624dd" }, "downloads": -1, "filename": "dtest_framework-0.1.20-py3-none-any.whl", "has_sig": false, "md5_digest": "98f943aab9ac7e8dcabd6035ddc49f73", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12327, "upload_time": "2019-09-25T18:56:15", "url": "https://files.pythonhosted.org/packages/d7/0a/6c33d97774d4b872d2e9e33be3ccace39dc689caef953044388d21334a12/dtest_framework-0.1.20-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fc506427d5b0207505976684c87fd1c5", "sha256": "22ad4d4cc15cf423fbc70395cc65f597f33f926800f7b9671a64cd0918da4a61" }, "downloads": -1, "filename": "dtest-framework-0.1.20.tar.gz", "has_sig": false, "md5_digest": "fc506427d5b0207505976684c87fd1c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10936, "upload_time": "2019-09-25T18:56:17", "url": "https://files.pythonhosted.org/packages/39/89/f999d6a0854a38e848ba7ed037e927c678c8c6898dfc13b21cd6f8ca52a8/dtest-framework-0.1.20.tar.gz" } ], "0.1.21": [ { "comment_text": "", "digests": { "md5": "d5f1ab7370ea7efeb31586b8b21e3966", "sha256": "0c94f27a1ff1fe61b9d8b669f13aa512cebd30e3c1f6de0a9af770378286344b" }, "downloads": -1, "filename": "dtest_framework-0.1.21-py3-none-any.whl", "has_sig": false, "md5_digest": "d5f1ab7370ea7efeb31586b8b21e3966", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12352, "upload_time": "2019-09-26T15:52:13", "url": "https://files.pythonhosted.org/packages/e9/93/4794010183852c4809bd7e2cbedff0e2a478b572bb9c2f6652ed1acca4fa/dtest_framework-0.1.21-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40886e7e0680cd7dad4ec4bfb2e61056", "sha256": "e106fdb5e5d19fd497bbe7d1b2297cce09f50b4882fa7bd025a86320cc763c0e" }, "downloads": -1, "filename": "dtest-framework-0.1.21.tar.gz", "has_sig": false, "md5_digest": "40886e7e0680cd7dad4ec4bfb2e61056", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10959, "upload_time": "2019-09-26T15:52:16", "url": "https://files.pythonhosted.org/packages/2a/f3/7dbeaacbff4fb909a630d25e60c2dd89b5063c4cf62102673d34156e193a/dtest-framework-0.1.21.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "256d7cd5a6b81d3729c9e48a8d792aba", "sha256": "fd059bfafad2a4f0025a66f7a7f1809fbaf7536111bf0bdc4dbb3b1422d08bf1" }, "downloads": -1, "filename": "dtest_framework-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "256d7cd5a6b81d3729c9e48a8d792aba", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7112, "upload_time": "2019-04-09T19:38:43", "url": "https://files.pythonhosted.org/packages/0c/e6/8637d0a1bbba58e227ddb528430d92f85385d019700813a543abf597ea05/dtest_framework-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b4370aff5bf46285b182b44935545cfc", "sha256": "f6f033c21aa3cc7bdf5f41d188553950d3d562279396f3945533cf2afea6806f" }, "downloads": -1, "filename": "dtest-framework-0.1.3.tar.gz", "has_sig": false, "md5_digest": "b4370aff5bf46285b182b44935545cfc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5239, "upload_time": "2019-04-09T19:38:44", "url": "https://files.pythonhosted.org/packages/24/e8/3b515b4116baf2df924605de1a3f9a5a22a8f5cdb952858c21811f10b575/dtest-framework-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "4413941cfe4b0e2ad4ffe2f6e6947d4c", "sha256": "fdd7917fe7d99b73c8b83314b808e1889941a3a0ac2dffc371a9db77217a5ca6" }, "downloads": -1, "filename": "dtest_framework-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "4413941cfe4b0e2ad4ffe2f6e6947d4c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7117, "upload_time": "2019-04-09T19:42:16", "url": "https://files.pythonhosted.org/packages/9c/4c/5fd94478a39e4c0592e3a0eb0fd4d1eefa3ad304953cd369e6ead5950717/dtest_framework-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "17c7914083e9e2c1def1436d6969165d", "sha256": "1a46a27e7a7e38b77578af38158dd03e8e6451444fd5f9c1a600caeeafc30a8f" }, "downloads": -1, "filename": "dtest-framework-0.1.4.tar.gz", "has_sig": false, "md5_digest": "17c7914083e9e2c1def1436d6969165d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5247, "upload_time": "2019-04-09T19:42:17", "url": "https://files.pythonhosted.org/packages/f5/96/1c07a4af0df97363026c3e87a2f54410f742ee094449580565c6796f0fef/dtest-framework-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "13c1cc4350e143f9a3990405a070ecf1", "sha256": "c5d44b870bfa1d2ada27916cf4862aa7118e893b1f1eb1794016d9092aba5e9d" }, "downloads": -1, "filename": "dtest_framework-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "13c1cc4350e143f9a3990405a070ecf1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6481, "upload_time": "2019-04-10T14:57:09", "url": "https://files.pythonhosted.org/packages/90/57/fc02f960698e9bef65e30a818a8f847d7c211521bfe12a956fae47f6f9b4/dtest_framework-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "26c5d4319e8b7612333c326e0fe80782", "sha256": "eb44354cad17ca7a901147706afccf478b20b5e7f367b070b00db5f35725d824" }, "downloads": -1, "filename": "dtest-framework-0.1.5.tar.gz", "has_sig": false, "md5_digest": "26c5d4319e8b7612333c326e0fe80782", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4520, "upload_time": "2019-04-10T14:57:10", "url": "https://files.pythonhosted.org/packages/8b/69/535c1c3903dea14dda47ffceae726e03af03f097b40c756c463157f6ba7f/dtest-framework-0.1.5.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "e6b5c839627cc74b2aaddd4d0b18a6fd", "sha256": "a15c8a724207186197f9357f9935bcfd0775a903cbcf73ec2778e2197653917b" }, "downloads": -1, "filename": "dtest_framework-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "e6b5c839627cc74b2aaddd4d0b18a6fd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6549, "upload_time": "2019-04-11T18:40:54", "url": "https://files.pythonhosted.org/packages/11/52/6c0d6a821ebc8263b22a055971455ac5d053cd882480f1e6ea03fe66d386/dtest_framework-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b38d4e9daa17d6390937f09475774200", "sha256": "bc8abd4c952cd0d35a7c3ff18923fa0e2c0be20a36e515bfeb6ed64b825ce04c" }, "downloads": -1, "filename": "dtest-framework-0.1.7.tar.gz", "has_sig": false, "md5_digest": "b38d4e9daa17d6390937f09475774200", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5248, "upload_time": "2019-04-11T18:40:55", "url": "https://files.pythonhosted.org/packages/d7/be/92cd2450bdea108627174915f23bc7dab4a82689a4f91ca5d42c5b579653/dtest-framework-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "935df20ce2ee017f6e449e8f068090c2", "sha256": "6cd23a9b866da5163e382512b7a87fbbd15404bd2d60acc5a61b2739d0e2afb7" }, "downloads": -1, "filename": "dtest_framework-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "935df20ce2ee017f6e449e8f068090c2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6547, "upload_time": "2019-04-17T14:33:28", "url": "https://files.pythonhosted.org/packages/c1/1a/73be63ce12fca0aeecd17a0119e9114f01b580d426f58615f1b8662d274e/dtest_framework-0.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e3deaa9c6884d3f71cafdf83e3ec02c6", "sha256": "41de60a297f5e15c2e9a88819df5d2256a66d771cf2dd5088fff0d081aff68a2" }, "downloads": -1, "filename": "dtest-framework-0.1.8.tar.gz", "has_sig": false, "md5_digest": "e3deaa9c6884d3f71cafdf83e3ec02c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5252, "upload_time": "2019-04-17T14:33:29", "url": "https://files.pythonhosted.org/packages/aa/46/40cb183824bb166e343f0b032049dd77b6bdefe54ed3e2de78ae7034d975/dtest-framework-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "387047f80fde7dd54b9b8e0ad9f5d23c", "sha256": "0426a940295d833692c70d70aa474ed11438a9f6899fb014697135cfad654543" }, "downloads": -1, "filename": "dtest_framework-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "387047f80fde7dd54b9b8e0ad9f5d23c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6602, "upload_time": "2019-04-17T15:06:19", "url": "https://files.pythonhosted.org/packages/c2/ca/f0049dfc33da950dba4d387af915afe91c838ae4449e8149aac056e3c31c/dtest_framework-0.1.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5468382aaee9630e8292557a96b9a19d", "sha256": "e194afa279da60757fafa99baebb3d296e679968678e9c7f5194ac533deb3117" }, "downloads": -1, "filename": "dtest-framework-0.1.9.tar.gz", "has_sig": false, "md5_digest": "5468382aaee9630e8292557a96b9a19d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5320, "upload_time": "2019-04-17T15:06:20", "url": "https://files.pythonhosted.org/packages/03/12/20fa80eac2845f9a04391607beb97bbf5e4295ed870cf5a55998b8641e1e/dtest-framework-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d5f1ab7370ea7efeb31586b8b21e3966", "sha256": "0c94f27a1ff1fe61b9d8b669f13aa512cebd30e3c1f6de0a9af770378286344b" }, "downloads": -1, "filename": "dtest_framework-0.1.21-py3-none-any.whl", "has_sig": false, "md5_digest": "d5f1ab7370ea7efeb31586b8b21e3966", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12352, "upload_time": "2019-09-26T15:52:13", "url": "https://files.pythonhosted.org/packages/e9/93/4794010183852c4809bd7e2cbedff0e2a478b572bb9c2f6652ed1acca4fa/dtest_framework-0.1.21-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40886e7e0680cd7dad4ec4bfb2e61056", "sha256": "e106fdb5e5d19fd497bbe7d1b2297cce09f50b4882fa7bd025a86320cc763c0e" }, "downloads": -1, "filename": "dtest-framework-0.1.21.tar.gz", "has_sig": false, "md5_digest": "40886e7e0680cd7dad4ec4bfb2e61056", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10959, "upload_time": "2019-09-26T15:52:16", "url": "https://files.pythonhosted.org/packages/2a/f3/7dbeaacbff4fb909a630d25e60c2dd89b5063c4cf62102673d34156e193a/dtest-framework-0.1.21.tar.gz" } ] }