{ "info": { "author": "Anton Bukhtiyarov", "author_email": "apkraft@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Documentation", "Topic :: Utilities" ], "description": "# TestRail cases downloader for Foliant\n\nTestRail preprocessor collects test cases from TestRail project and adds to your testing procedure document.\n\n\n## Installation\n\n```shell\n$ pip install foliantcontrib.testrail\n```\n\n\n## Config\n\nTo enable the preprocessor, add `testrail` to `preprocessors` section in the project config. The preprocessor has a number of options (best values are set by default where possible):\n\n```yaml\npreprocessors:\n - testrail:\n testrail_url: http://testrails.url \\\\ Required\n testrail_login: username \\\\ Required\n testrail_pass: password \\\\ Required\n project_id: 35 \\\\ Required\n suite_ids: \\\\ Optional\n section_ids: \\\\ Optional\n exclude_suite_ids: \\\\ Optional\n exclude_section_ids: \\\\ Optional\n exclude_case_ids: \\\\ Optional\n filename: test_cases.md \\\\ Optional\n rewrite_src_file: false \\\\ Optional\n template_folder: case_templates \\\\ Optional\n section_header: Testing program \\\\ Recommended\n add_std_table: true \\\\ Optional\n std_table_header: Table with testing results \\\\ Recommended\n std_table_column_headers: \u2116; Priority; Platform; ID; Test case name; Result; Comment \\\\ Recommended\n add_suite_headers: true \\\\ Optional\n add_section_headers: true \\\\ Optional\n add_case_id_to_case_header: false \\\\ Optional\n add_case_id_to_std_table: false \\\\ Optional\n multi_param_name: \\\\ Optional\n multi_param_select: \\\\ Optional\n multi_param_select_type: any \\\\ Optional\n add_cases_without_multi_param: true \\\\ Optional\n add_multi_param_to_case_header: false \\\\ Optional\n add_multi_param_to_std_table: false \\\\ Optional\n checkbox_param_name: \\\\ Optional\n checkbox_param_select_type: checked \\\\ Optional\n choose_priorities: \\\\ Optional\n add_priority_to_case_header: false \\\\ Optional\n add_priority_to_std_table: false \\\\ Optional\n resolve_urls: true \\\\ Optional\n screenshots_url: https://gitlab_repository.url \\\\ Optional\n screenshots_ext: .png \\\\ Optional\n print_case_structure: true \\\\ For debugging\n```\n\n`testrail_url`\n: URL of TestRail deployed.\n\n`testrail_login`\n: Your TestRail username.\n\n`testrail_pass`\n: Your TestRail password.\n\n`project_id`\n: TestRail project ID. You can find it in the project URL, for example http://testrails.url/index.php?/projects/overview/17 <-.\n\n`suite_ids`\n: If you have several suites in your project, you can download test cases from certain suites. You can find suite ID in the URL again, for example http://testrails.url/index.php?/suites/view/63... <-.\n\n`section_ids`\n: Also you can download any sections you want regardless of it's level. Just keep in mind that this setting overrides previous *suite_ids* (but if you set *suite_ids* and then *section_ids* from another suite, nothing will be downloaded). And suddenly you can find section ID in it's URL, for example http://testrails.url/index.php?/suites/view/124&group_by=cases:section_id&group_order=asc&group_id=3926 <-.\n\n`exclude_suite_ids`\n: You can exclude any suites (even stated in *suite_ids*) from the document.\n\n`exclude_section_ids`\n: The same with the sections. \n\n`exclude_case_ids`\n: And the same with the cases.\n\n`filename`\n: Path to the test cases file. It should be added to project chapters in *foliant.yml*. Default: *test_cases.md*. For example:\n\n```yaml\ntitle: &title Test procedure\n\nchapters:\n - intro.md\n - conditions.md\n - awesome_test_cases.md <- This one for test cases\n - appendum.md\n\npreprocessors:\n - testrail:\n testrail_url: http://testrails.url\n testrail_login: username\n testrail_pass: password\n project_id: 35\n filename: awesome_test_cases.md\n```\n\n`rewrite_src_file`\n: You can update (*true*) test cases file after each use of preprocessor. Be careful, previous data will be deleted.\n\n`template_folder`\n: Preprocessor uses Jinja2 templates to compose the file with test cases. Here you can find documentation: http://jinja.pocoo.org/docs/2.10/ . You can store templates in folder inside the foliant project, but if it's not default *case_templates* you have to write it here.\n\nIf this parameter not set and there is no default *case_templates* folder in the project, it will be created automatically with two jinja files for TestRail templates by default \u2014 *Test Case (Text)* with *template_id=1* and *Test Case (Steps)* with *template_id=2*.\n\nYou can create TestRail templates by yourself in *Administration* panel, *Customizations* section, *Templates* part. Then you have to create jinja templates whith the names *{template_id}.j2* for them. For example, file *2.j2* for *Test Case (Steps)* TestRail template:\n\n```\n\n{% if case['custom_steps_separated'][0]['content'] %}\n{% if case['custom_preconds'] %}\n**Preconditions:**\n\n{{ case['custom_preconds'] }}\n{% endif %}\n\n**Scenario:**\n\n{% for case_step in case['custom_steps_separated'] %}\n\n*Step {{ loop.index }}.* {{ case_step['content'] }}\n\n*Expected result:*\n\n{{ case_step['expected'] }}\n\n{% endfor %}\n{% endif %}\n\n```\n\nYou can use all parameters of two variables in the template \u2014 *case* and *params*. Case parameters depends on TestRail template. All custom parameters have prefix 'custom_' before system name set in TestRail.\n\nHere is an example of *case* variable (parameters depends on case template):\n\n```\ncase = {\n 'created_by': 3,\n 'created_on': 1524909903,\n 'custom_expected': None,\n 'custom_goals': None,\n 'custom_mission': None,\n 'custom_preconds': '- The user is not registered in the system.\\r\\n'\n '- Registration form opened.',\n 'custom_steps': '',\n 'custom_steps_separated': [{\n 'content': 'Enter mobile phone number.',\n 'expected': '- Entered phone number '\n 'is visible in the form field.'\n },\n {'content': 'Press OK button.',\n 'expected': '- SMS with registration code '\n 'received.\\n'}],\n 'custom_test_androidtv': None,\n 'custom_test_appletv': None,\n 'custom_test_smarttv': 'None,\n 'custom_tp': True,\n 'estimate': None,\n 'estimate_forecast': None,\n 'id': 15940,\n 'milestone_id': None,\n 'priority_id': 4,\n 'refs': None,\n 'section_id': 3441,\n 'suite_id': 101,\n 'template_id': 7,\n 'title': 'Registration by mobile phone number.',\n 'type_id': 7,\n 'updated_by': 10,\n 'updated_on': 1528978979\n}\n```\n\nAnd here is an example of *params* variable (parameters are always the same):\n\n```\nparams = {\n 'multi_param_name': 'platform',\n 'multi_param_sys_name': 'custom_platform',\n 'multi_param_select': ['android', 'ios'],\n 'multi_param_select_type': any,\n 'add_cases_without_multi_param': False,\n 'checkbox_param_name': 'publish',\n 'checkbox_param_sys_name': 'custom_publish',\n 'checkbox_param_select_type': 'checked',\n 'choose_priorities': ['critical', 'high', 'medium'],\n 'add_multi_param_to_case_header': True,\n 'add_multi_param_to_std_table': True,\n 'add_priority_to_case_header': True,\n 'add_priority_to_std_table': True,\n 'add_case_id_to_case_header': False,\n 'add_case_id_to_std_table': False\n}\n```\n\nNext three fields are necessary due localization issues. While markdown document with test cases is composed on the go, you have to set up some document headers. Definitely not the best solution in my life. \n\n`section_header`\n: First level header of section with test cases. By default it's *Testing program* in Russian.\n\n`add_std_table`\n: You can exclude (*false*) a testing table from the document.\n\n`std_table_header`\n: First level header of section with test results table. By default it's *Testing table* in Russian.\n\n`std_table_column_headers`\n: Semicolon separated headers of testing table columns. By default it's *\u2116; Priority; Platform; ID; Test case name; Result; Comment* in Russian.\n\n`add_suite_headers`\n: With *false* you can exclude all suite headers from the final document.\n\n`add_section_headers`\n: With *false* you can exclude all section headers from the final document.\n\n`add_case_id_to_case_header`\n: Every test case in TestRail has unique ID, which, as usual, you can find in the header or test case URL: http://testrails.url/index.php?/cases/view/15920... <-. So you can add (*true*) this ID to the test case headers and testing table. Or not (*false*).\n\n`add_case_id_to_std_table`\n: Also you can add (*true*) the column with the test case IDs to the testing table.\n\nIn TestRail you can add custom parameters to your test case template. With next settings you can use one *multi-select* or *dropdown* (good for platforms, for example) and one *checkbox* (publishing) plus default *priority* parameter for cases sampling.\n\n`multi_param_name`\n: Parameter name of *multi-select* or *dropdown* type you set in *System Name* field of *Add Custom Field* form in TestRail. For example, *platforms* with values *Android*, *iOS*, *PC*, *Mac* and *web*. If *multi_param_select* not set, all test cases will be downloaded (useful when you need just to add parameter value to the test headers or testing table).\n\n`multi_param_select`\n: Here you can set the platforms for which you want to get test cases (case insensitive). For example, you have similar UX for mobile platforms and want to combine them:\n\n```yaml\npreprocessors:\n - testrail:\n ...\n multi_param_name: platforms\n multi_param_select: android, ios\n ...\n```\n\n`multi_param_select_type`\n: With this parameter you can make test cases sampling in different ways. It has several options:\n\n- *any* (by default) \u2014 at least one of *multi_param_select* values should be set for the case,\n- *all* \u2014 all of *multi_param_select* values should be set and any other can be set for the case,\n- *only* \u2014 only *multi_param_select* values in any combination should be set for the case,\n- *match* \u2014 all and only *multi_param_select* values should be set for the case.\n\nWith *multi_param_select: android, ios* we will get the following cases:\n\n| Test cases | Android | iOS | PC | Mac | web | | any | all | only | match |\n|-------------|:-------:|:---:|:--:|:---:|:---:|---|:---:|:---:|:----:|:-----:|\n| Test case 1 | + | + | | | | | + | + | + | + |\n| Test case 2 | + | + | | | | | + | + | + | + |\n| Test case 3 | | | + | + | | | | | | |\n| Test case 4 | | + | + | + | | | + | | | |\n| Test case 5 | + | + | | | + | | + | + | | |\n| Test case 6 | + | + | | | + | | + | + | | |\n| Test case 7 | | | + | + | + | | | | | |\n| Test case 8 | | | + | + | + | | | | | |\n| Test case 9 | | + | | | | | + | | + | |\n\n`add_cases_without_multi_param`\n: Also you can include (by default) or exclude (*false*) cases without any value of *multi-select* or *dropdown* parameter.\n\n`add_multi_param_to_case_header`\n: You can add (*true*) values of *multi-select* or *dropdown* parameter to the case headers or not (by default).\n\n`add_multi_param_to_std_table`\n: You can add (*true*) column with values of *multi-select* or *dropdown* parameter to the testing table or not (by default).\n\n`checkbox_param_name`\n: Parameter name of *checkbox* type you set in *System Name* field of *Add Custom Field* form in TestRail. For example, *publish*. Without parameter name set all of cases will be downloaded.\n\n`checkbox_param_select_type`\n: With this parameter you can make test cases sampling in different ways. It has several options:\n\n- *checked* (by default) \u2014 only cases whith checked field will be downloaded,\n- *unchecked* \u2014 only cases whith unchecked field will be downloaded.\n\n`choose_priorities`\n: Here you can set test case priorities to download (case insensitive).\n\n```yaml\npreprocessors:\n - testrail:\n ...\n choose_priorities: critical, high, medium\n ...\n```\n\n`add_priority_to_case_header`\n: You can add (*true*) priority to the case headers or not (by default).\n\n`add_priority_to_std_table`\n: You can add (*true*) column with case priority to the testing table or not (by default).\n\nUsing described setting you can flexibly adjust test cases sampling. For example, you can download only published *critical* test cases for both and only *Mac* and *PC*.\n\nNow strange things, mostly made specially for my project, but may be useful for others.\n\nScreenshots. There is no possibility to store screenshots in TestRail projects, but you can store them in the GitLab repository (link to which should be stated in one of the following parameters). GitLab project should have following structure:\n\n```\nimages/\n\u251c\u2500\u2500 smarttv/\n| \u251c\u2500\u2500 screenshot1_smarttv.png\n| \u251c\u2500\u2500 screenshot2_smarttv.png\n| \u2514\u2500\u2500 ...\n\u251c\u2500\u2500 androidtv/\n| \u251c\u2500\u2500 screenshot1_androidtv.png\n| \u251c\u2500\u2500 screenshot2_androidtv.png\n| \u2514\u2500\u2500 ...\n\u251c\u2500\u2500 appletv/\n| \u251c\u2500\u2500 screenshot1_appletv.png\n| \u251c\u2500\u2500 screenshot2_appletv.png\n| \u2514\u2500\u2500 ...\n\u251c\u2500\u2500 web/\n| \u251c\u2500\u2500 screenshot1_web.png\n| \u251c\u2500\u2500 screenshot2_web.png\n| \u2514\u2500\u2500 ...\n\u251c\u2500\u2500 screenshot1.png\n\u251c\u2500\u2500 screenshot2.png\n\u2514\u2500\u2500 ...\n```\n\n*images* folder used for projects without platforms.\n\nFilename ending is a first value of *multi_param_select* parameter (*platform*). Now to add screenshot to your document just add following string to the test case (unfortunately, in TestRail interface it will looks like broken image link):\n\n```\n(leading exclamation mark here!)[Image title](main_filename_part)\n```\n\nPreprocessor will convert to the following format:\n\n```\nhttps://gitlab.url/gitlab_group_name/gitlab_project_name/raw/master/images/platform_name/main_filename_part_platform_name.png\n```\n\nFor example, in the project with *multi_param_select: smarttv* the string\n\n```\n(leading exclamation mark here!)[Application main screen](main_screen)\n```\n\nwill be converted to:\n\n```\n(leading exclamation mark here!)[Application main screen](https://gitlab.url/documentation/application-screenshots/raw/master/images/smarttv/main_screen_smarttv.png)\n```\n\nThat's it.\n\n`resolve_urls`\n: Turn on (*true*) or off (*false*, by default) image urls resolving.\n\n`screenshots_url`\n: GitLab repository URL, in our example: https://gitlab.url/documentation/application-screenshots/ .\n\n`screenshots_ext`\n: Screenshots extension. Yes, it must be only one and the same for all screenshots.\n\nAnd the last one emergency tool. If you have no jinja template for any type of TestRail case, you'll see this message like this: *There is no jinja template for test case template_id 5 (case_id 1325) in folder case_templates*. So you have to write jinja template by yourself. To do this it's necessary to know case structure. This parameter shows it to you.\n\n`print_case_structure`\n: Turn on (*true*) or off (*false*, by default) printing out of case structure with all data in it if any problem occurs.\n\n\n## Usage\n\nJust add the preprocessor to the project config, set it up and enjoy the automatically collected test cases to your document.\n\n\n### Tips\n\nIn some cases you may encounter a problem with test cases text format, so composed markdown file will be converted to the document with bad formatting. In this cases *replace* preprocessor could be useful: https://foliant-docs.github.io/docs/preprocessors/replace/ .\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/foliant-docs/foliantcontrib.testrail", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "foliantcontrib.testrail", "package_url": "https://pypi.org/project/foliantcontrib.testrail/", "platform": "any", "project_url": "https://pypi.org/project/foliantcontrib.testrail/", "project_urls": { "Homepage": "https://github.com/foliant-docs/foliantcontrib.testrail" }, "release_url": "https://pypi.org/project/foliantcontrib.testrail/1.1.8/", "requires_dist": null, "requires_python": "", "summary": "Downloader of test cases from TestRail projects.", "version": "1.1.8" }, "last_serial": 4849829, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "92bbd268d20825f5aeb987f43b12fa1d", "sha256": "399bea92178c22b43d718e5c110228447a4ebb960a8b0b4da5e9cf5f026430dc" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.0.0.tar.gz", "has_sig": false, "md5_digest": "92bbd268d20825f5aeb987f43b12fa1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9438, "upload_time": "2018-09-13T11:51:15", "url": "https://files.pythonhosted.org/packages/a0/40/1367f305ebe0844d5f2fb6aa54a216bdfd629d6b2b41e588300c047221d3/foliantcontrib.testrail-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "eff388c773547f2c66ad846eb4edbfeb", "sha256": "bd0a63e1b09f0264579625c71bb6325ed187a71231eb144f5e96813595da5f1c" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.0.1.tar.gz", "has_sig": false, "md5_digest": "eff388c773547f2c66ad846eb4edbfeb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13030, "upload_time": "2018-09-14T05:14:15", "url": "https://files.pythonhosted.org/packages/0d/14/5d919d2f20603a6e0f29c2ecf8ae14755039df835e7b3a8c8b66387de0d1/foliantcontrib.testrail-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "3abee042081213f0b53c557274168af6", "sha256": "9153138a31871aa352f7bead67816dc9a24f92f4c1478e8fdcc57b987286b1f7" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.0.2.tar.gz", "has_sig": false, "md5_digest": "3abee042081213f0b53c557274168af6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13062, "upload_time": "2018-10-29T08:36:44", "url": "https://files.pythonhosted.org/packages/1c/e6/782495735660dd3375e5349246b4706c6fb19eb4bfb8167fa59b24846822/foliantcontrib.testrail-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "6f19ba31dfc9a2d5a784941fd9b3180d", "sha256": "39b198f63baf118035349e801511fa4a335e73535226694b4b91100269fbcce9" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.0.3.tar.gz", "has_sig": false, "md5_digest": "6f19ba31dfc9a2d5a784941fd9b3180d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13175, "upload_time": "2018-10-30T07:16:06", "url": "https://files.pythonhosted.org/packages/a7/ce/dc517eb501c5cc9e094247ec1df043fea87092166bfa9b51ca6f56bdc3e3/foliantcontrib.testrail-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "9b84f0e82fb4fa5a8902599344547c75", "sha256": "e982c1f0f8935c915b792561ad241e9d9086ee815ae5b7f28811b7cbf7ac3d55" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.0.4.tar.gz", "has_sig": false, "md5_digest": "9b84f0e82fb4fa5a8902599344547c75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13209, "upload_time": "2018-11-07T11:22:04", "url": "https://files.pythonhosted.org/packages/01/9a/a67058ec8ddc961a80b238b47c4ce61e3fd252e4d76c88eb6a9fe268e027/foliantcontrib.testrail-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "35cd2b7c55f96381d6604b1a028502d6", "sha256": "a8ba156af100a03a65a5b89944662b95d384447d75fa3a4311653e47447e8958" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.0.5.tar.gz", "has_sig": false, "md5_digest": "35cd2b7c55f96381d6604b1a028502d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13198, "upload_time": "2018-11-07T11:34:31", "url": "https://files.pythonhosted.org/packages/7e/23/8db1ab6a79f0df79a303883cda7bdaef44841885ff9e4f63a438963843eb/foliantcontrib.testrail-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "9ae43d63ff2264d97a671c9a1f625f28", "sha256": "e696babf6f0d7e48186f00878fa4bd1ffd0fe028bee6741f2d91ee533507a4c6" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.0.6.tar.gz", "has_sig": false, "md5_digest": "9ae43d63ff2264d97a671c9a1f625f28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13387, "upload_time": "2018-11-08T08:05:11", "url": "https://files.pythonhosted.org/packages/fb/f6/8d67d275f688835b0979ddef7a524425724666d85495d36cafad925af62a/foliantcontrib.testrail-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "d385dbbbc38ca5975995bae6b538e936", "sha256": "65078e65273d22ac0d795cfc9dcfdbcb4358a6082f671175de065c317593ef8f" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.0.7.tar.gz", "has_sig": false, "md5_digest": "d385dbbbc38ca5975995bae6b538e936", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13385, "upload_time": "2018-11-08T11:12:31", "url": "https://files.pythonhosted.org/packages/82/10/17034b409117847f644d1991aa1415db45d9852b89b41203bc1403d36ad5/foliantcontrib.testrail-1.0.7.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "28e3772145e032738258e04f2707bf9b", "sha256": "19a97f5757ae09bfca42f82beb609c12b48a99cfafbadfa38aa687221cbbd133" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.1.0.tar.gz", "has_sig": false, "md5_digest": "28e3772145e032738258e04f2707bf9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14419, "upload_time": "2018-11-19T08:35:12", "url": "https://files.pythonhosted.org/packages/17/48/d963b91c87d6b9a1ac911696bb7d17622131aef6200c7cda4261443333af/foliantcontrib.testrail-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "33937746af38930606a6548e2ff050c9", "sha256": "6dee959390e7284fc79cbda021b1e6188da7154808802ac07c42113f3adf094b" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.1.1.tar.gz", "has_sig": false, "md5_digest": "33937746af38930606a6548e2ff050c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16050, "upload_time": "2018-11-19T08:53:01", "url": "https://files.pythonhosted.org/packages/d2/de/9e97f3d949d79be38e9c4435fad48bc31bb5aa75f8f4b5e7ead95c4af815/foliantcontrib.testrail-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "4836c2832688e39afe1ed76fc017da58", "sha256": "42d1435a7723193c0a1e39bad7e112320278eb87ca79830279b88b1179f160d6" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.1.2.tar.gz", "has_sig": false, "md5_digest": "4836c2832688e39afe1ed76fc017da58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16217, "upload_time": "2018-11-19T12:11:43", "url": "https://files.pythonhosted.org/packages/7c/80/ae62917aa5bb3ce45d07575b18faad7ae2710abd20afd8111a76b865230a/foliantcontrib.testrail-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "b356d955ad4fb26bc20c66a3a557687f", "sha256": "00187497608cddb0b65100e4784509c07fe1d7b897e38d24f726ad0dba2e5a15" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.1.3.tar.gz", "has_sig": false, "md5_digest": "b356d955ad4fb26bc20c66a3a557687f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16238, "upload_time": "2018-11-20T07:32:28", "url": "https://files.pythonhosted.org/packages/7c/6c/69bbffe7b20e5110d346e179b9b3dcc1d1ceab5f249dac77937913188963/foliantcontrib.testrail-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "1c79019a732f129af5c7e18466d742d5", "sha256": "5d75b13812d6c9cd72238fb85152abb8e01107bff4ed0fd77fe81818d8ce7f2e" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.1.4.tar.gz", "has_sig": false, "md5_digest": "1c79019a732f129af5c7e18466d742d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16240, "upload_time": "2018-11-20T10:22:10", "url": "https://files.pythonhosted.org/packages/88/19/c1e728098cb8b7bbf021d2b1013cb214fb885a5ab9afed5a1056edb602a7/foliantcontrib.testrail-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "011c3f1bd76278ac5ab18f492f27b618", "sha256": "9f8b86e3679ef18cf24e06a0af9c381db7b2563ee88faf0b3ea7862dc1457fab" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.1.5.tar.gz", "has_sig": false, "md5_digest": "011c3f1bd76278ac5ab18f492f27b618", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17969, "upload_time": "2019-02-01T07:41:19", "url": "https://files.pythonhosted.org/packages/7c/9e/402bf4d575473b40460d7401732cae5cd8cb93663817044bb9ab4b02faad/foliantcontrib.testrail-1.1.5.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "f3410e69a04a1447477ed3fccb974a02", "sha256": "0a3c5fc27046be41256d3fd73bde69c4ab46fd982f56e2845f4359a87825385d" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.1.6.tar.gz", "has_sig": false, "md5_digest": "f3410e69a04a1447477ed3fccb974a02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17994, "upload_time": "2019-02-08T07:59:16", "url": "https://files.pythonhosted.org/packages/49/df/9f343ead16e03700f12077cc1712d5f6df43114e5846cccab72f3dbffa82/foliantcontrib.testrail-1.1.6.tar.gz" } ], "1.1.7": [ { "comment_text": "", "digests": { "md5": "fc6766072c2414bd27e9ba82c592554e", "sha256": "c35f5544d1aa67f49dab56d1345cd106264bee4f6d3be39e21d1ff63d80f50f7" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.1.7.tar.gz", "has_sig": false, "md5_digest": "fc6766072c2414bd27e9ba82c592554e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18039, "upload_time": "2019-02-12T09:54:33", "url": "https://files.pythonhosted.org/packages/58/e0/37d5baaf7d456829ea0a0ace1485aa0abca104764529994a1a945a131151/foliantcontrib.testrail-1.1.7.tar.gz" } ], "1.1.8": [ { "comment_text": "", "digests": { "md5": "44030eb1071b528a2c5cf4cf87b7a341", "sha256": "23ccf301dd619a11eb751807c401343e42de5248cbf0df68dec5fcda0ecf158a" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.1.8.tar.gz", "has_sig": false, "md5_digest": "44030eb1071b528a2c5cf4cf87b7a341", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17968, "upload_time": "2019-02-21T11:31:04", "url": "https://files.pythonhosted.org/packages/a9/d8/e09d37da9a6b2e97191257d7a0fd1189b95c7b47be29bf1a51615a6b9a2e/foliantcontrib.testrail-1.1.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "44030eb1071b528a2c5cf4cf87b7a341", "sha256": "23ccf301dd619a11eb751807c401343e42de5248cbf0df68dec5fcda0ecf158a" }, "downloads": -1, "filename": "foliantcontrib.testrail-1.1.8.tar.gz", "has_sig": false, "md5_digest": "44030eb1071b528a2c5cf4cf87b7a341", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17968, "upload_time": "2019-02-21T11:31:04", "url": "https://files.pythonhosted.org/packages/a9/d8/e09d37da9a6b2e97191257d7a0fd1189b95c7b47be29bf1a51615a6b9a2e/foliantcontrib.testrail-1.1.8.tar.gz" } ] }