{ "info": { "author": "Bioinformatics Team at Genomics England", "author_email": "antonio.rueda-martin@genomicsengland.co.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Healthcare Industry", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering :: Bio-Informatics" ], "description": "\n# GelReportModels\n\nThis project contains several models used by Genomics England systems. This is a development guide, the models documentation can be found at [https://gelreportmodels.genomicsengland.co.uk](https://gelreportmodels.genomicsengland.co.uk). \n\n\nThese models are defined using Avro Interface Design Language (IDL) which is agnostic of any implementation language. The models are then used to generate source code employed to store the information. The source code is either Python or Java so far, but this can be easily extended.\n\nFrom the Avro models you can generate:\n* Java source code\n* Python source code\n* JSON schemas\n* AVPR schemas\n* HTML documentation\n\nMaven is employed for Java dependency management. Particularly, OpenCB [https://github.com/opencb/biodata](https://github.com/opencb/biodata) models are imported through a maven dependency and then extracted into the local folder for schemas.\nThis is not required unless you upgrade OpenCB models version, as the OpenCB models are commited in the repository under `schemas/IDLs/org.opencb.biodata.models`.\n\nTo import the OpenCB dependency and extract the models in your local environment run:\n```\n% mvn clean initialize\n```\n\n## Versioning\n\nModels are organised in **packages**:\n* Internal\n - org.gel.models.report.avro\n - org.gel.models.participant.avro\n - org.gel.models.metrics.avro\n - org.gel.models.cva.avro\n - org.gel.models.system.avro\n* External\n - org.ga4gh.models\n - org.opencb.biodata.models\n\nA package is formed by a set of **schema files** having `.avdl` extension.\n\nThere are dependencies between packages that require that we **build** packages together.\n\nEach of those packages support independent versioning. Also there are build versions that determine a set of specific packages that are built together. These information is contained within `builds.json` in an array of build descriptions.\n\nThe following represents the build version `4.3.0-SNAPSHOT` having package org.ga4gh.models version 3.0.0, package org.gel.models.cva.avro version 0.4.0-SNAPSHOT and so on.\n```\n{\n \"version\": \"4.3.0-SNAPSHOT\",\n \"packages\": [\n {\n \"package\": \"org.ga4gh.models\",\n \"python_package\": \"ga4gh\",\n \"version\": \"3.0.0\",\n \"dependencies\": []\n },\n {\n \"package\": \"org.gel.models.cva.avro\",\n \"python_package\": \"cva\",\n \"version\": \"0.4.0-SNAPSHOT\",\n \"dependencies\": [\n \"org.gel.models.report.avro\",\n \"org.gel.models.participant.avro\",\n \"org.gel.models.system.avro\",\n \"org.opencb.biodata.models\"\n ]\n },\n {\n \"package\": \"org.gel.models.metrics.avro\",\n \"python_package\": \"metrics\",\n \"version\": \"1.1.0-SNAPSHOT\",\n \"dependencies\": []\n },\n {\n \"package\": \"org.gel.models.participant.avro\",\n \"python_package\": \"participant\",\n \"version\": \"1.0.4-SNAPSHOT\",\n \"dependencies\": []\n },\n {\n \"package\": \"org.gel.models.report.avro\",\n \"python_package\": \"reports\",\n \"version\": \"4.2.0-SNAPSHOT\",\n \"dependencies\": [\n \"org.gel.models.participant.avro\"\n ]\n },\n {\n \"package\": \"org.gel.models.system.avro\",\n \"python_package\": \"system\",\n \"version\": \"0.1.0-SNAPSHOT\",\n \"dependencies\": []\n },\n {\n \"package\": \"org.opencb.biodata.models\",\n \"python_package\": \"opencb\",\n \"version\": \"1.3.0-SNAPSHOT\",\n \"dependencies\": []\n }\n ]\n}\n```\n\nEvery package in a build is built in a sandbox folder under `schemas/IDLs/build` together with those packages in the list of dependencies for each package. This introduces two strong constraints in the models:\n* The same package cannot contain two records named equally in different schema files\n* Schema files in different packages cannot be named equally\n\nThe build sandbox is deleted after every build.\n\n\n## Getting started\n\n### Install requirements\n\nInstall `sphynx`:\n```\nsudo apt-get install python-sphinx\n```\n\nInstall `avrodoc`:\n```\nsudo apt-get install nodejs nodejs-legacy\nsudo apt-get install npm\nsudo npm install avrodoc -g\n```\n\nInstall python dependencies:\n```\npip install -r requirements.txt\n```\n\n### Build the models\n\nTo build all builds described in `builds.json` run:\n```\n% python build.py\n```\n\nThis will create the following:\n* Python source code representing the Avro records in the folder `./protocols/models`\n* Java source code representing the Avro records in the folder `./target/generated-sources/avro`\n* The models HTML documentation under `./docs/html_schemas`\n\nIt may be handy to skip the documentation generation by using the flag `--skip-docs`.\n\n#### Building legacy versions of the models\n\nSee `builds.json` for the information on all legacy versions and the specific package versions and dependencies in each of those.\n\nTo build a specific version run:\n```\n% python build.py --version 3.0.0\n```\n\n#### Using custom tools to build the models\n\nTo facilitate using custom tools to build the models you can prepare the sandbox for a specific version running:\n```\n% python build.py --version 4.0.0 --only-prepare-sandbox\n```\n\nThis will copy all required schemas for that build under the folder `schemas/IDLs/build`.\n\n#### Other build options\n\nUse `--skip-docs` to avoid generating documentation which affects build time greatly.\n\nUse `--skip-java` to avoid generating Java source code.\n\nUse `--update-docs-index` to update the documentation landing page with the latest documentation generated.\n\n### Java Packaging\n\nTo pack the Java source code representing these models in a jar file use:\n```\n% mvn package\n```\n\nTo install it in your system so it is accessible as a maven dependency to other Java applications run:\n```\n% mvn install\n```\n\n## Unit tests\n\nTo run some unit tests implemented in Python run:\n```\n% ./run_tests.sh\n```\n\n## Mock data\n\nGenerate a mocked object with custom fields as follows:\n```\nfrom protocols.util.dependency_manager import VERSION_500\nfrom protocols.util.factories.avro_factory import GenericFactoryAvro\n\ninterpretation_request_factory = GenericFactoryAvro.get_factory_avro(\n protocols.reports_4_2_0.InterpretationRequestRD,\n version = VERSION_500\n)\ninstance = interpretation_request_factory(analysisReturnUri = \"myURI\")\nself.assertTrue(instance.validate(instance.toJsonDict()))\nself.assertTrue(instance.analysisReturnUri == \"myURI\")\n```\n\n## Migrations\nTODO\n\n## Building Resources From a Container\nFrom your starting directory, eg. ~/gel/:\n\nClone this repo\n```\ngit@github.com:genomicsengland/GelReportModels.git\n```\n\nThen run the following (you may need `sudo` depending on your system configuration):\n\n```\n./build_models\n```\nOnce the build is successful, check the resources are there:\n```\nroot@e444d27c16b9:/gel# ls GelReportModels/protocols/\nGelProtocols.pyc cva_0_3_0.py migration protocol.py\n__init__.py ga4gh.py opencb.py protocol.pyc\n__init__.pyc ga4gh_3_0_0.py opencb_1_2_0-SNAPSHOT.py reports.py\ncatalog_variable_set metrics.py participant.py reports_2_1_0.py\ncva.py metrics_1_0_0.py participant_1_0_0.py reports_3_0_0.py\nroot@e444d27c16b9:/gel# \n```\n\nAlso check that Java resources are there:\n```\nroot@4dabae77118d:/gel# ls -l GelReportModels/target/\ntotal 53620\ndrwxr-xr-x 2 root root 4096 Aug 18 08:35 antrun\ndrwxr-xr-x 3 root root 4096 Aug 18 08:45 classes\ndrwxr-xr-x 2 root root 4096 Aug 18 08:35 dependency-maven-plugin-markers\ndrwxr-xr-x 17 root root 4096 Aug 18 08:55 gel-models-4.3.0-SNAPSHOT\n-rw-r--r-- 1 root root 1819234 Aug 18 08:45 gel-models-4.3.0-SNAPSHOT.jar\n-rw-r--r-- 1 root root 53054906 Aug 18 08:55 gel-models-docs-4.3.0-SNAPSHOT.war\ndrwxr-xr-x 4 root root 4096 Aug 18 08:45 generated-sources\ndrwxr-xr-x 2 root root 4096 Aug 18 08:45 maven-archiver\ndrwxr-xr-x 3 root root 4096 Aug 18 08:45 maven-status\n```\n\nthen in a separate tab/window, from the GelReportModels directory:\n```\n$ sudo docker ps -alq\ncontainerID\n```\nand use this container ID to copy the python files from GelReportModels/protocols:\n```\n$ sudo docker cp containerID:/GelReportModels/protocols .\n```\nthen check you have them present:\n```\n$ ls ./protocols/\ncatalog_variable_set GelProtocols.pyc migration protocol.py\ncva_0_3_0.py __init__.py opencb_1_2_0-SNAPSHOT.py protocol.pyc\ncva.py __init__.pyc opencb.py reports_2_1_0.py\nga4gh_3_0_0.py metrics_1_0_0.py participant_1_0_0.py reports_3_0_0.py\nga4gh.py metrics.py participant.py reports.py\n```\n\n## Additional tools\n\nThe conversion between the different Avro schema formats, source code and documentation are available through the following utility:\n```\n$ cd resources/GelModelsTools/\n$ python gel_models_tools.py --help\nusage: gel_models_tools.py []\n\nGEL models toolbox\n\npositional arguments:\n command Subcommand to run\n (idl2json|idl2avpr|json2java|idl2python|json2python|avpr2html)\n\noptional arguments:\n -h, --help show this help message and exit\n```\n\n## Deploying\n\nTo deploy to GELs internal pypi instance, run the `GEL-models/Deploy GelReportModels into Pypi` bio jenkins job and this will automate the deploy. \n\nTo deploy to public PyPi you can use one of the Dockerfiles in this repo. Create an image and run it as follows:\n\n\n docker build -f Dockerfile-python3 .\n docker run -it /bin/bash\n\nOnce inside the container you need to create a file called ~/.pypirc with contents as follows: \n\n```\n[distutils]\nindex-servers =\n pypi\n\n[pypi]\nrepository: https://upload.pypi.org/legacy/\nusername: \npassword: \n```\n\nOnce you have this file, you can run the following commands:\n\n```bash\npython3 build.py --skip-java --skip-docs\n\npip3 install --upgrade twine wheel setuptools keyrings.alt\npython3 setup.py sdist bdist_wheel\n\ntwine upload dist/GelReportModels-7.3.6.tar.gz\n```\n\nSee https://packaging.python.org/tutorials/packaging-projects/\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/genomicsengland/GelReportModels/archive/v7.8.0.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gelreportmodels.genomicsengland.co.uk", "keywords": "", "license": "Apache", "maintainer": "", "maintainer_email": "", "name": "GelReportModels", "package_url": "https://pypi.org/project/GelReportModels/", "platform": "", "project_url": "https://pypi.org/project/GelReportModels/", "project_urls": { "Download": "https://github.com/genomicsengland/GelReportModels/archive/v7.8.0.tar.gz", "Homepage": "https://gelreportmodels.genomicsengland.co.uk" }, "release_url": "https://pypi.org/project/GelReportModels/7.8.0/", "requires_dist": [ "Sphinx (==1.6.2)", "sphinx-rtd-theme (==0.2.4)", "factory-boy (==2.9.2)", "humanize (==0.5.1)", "pyyaml (>=4.2b1)", "dictdiffer", "future (==0.16.0)", "six", "avro-python3 (==1.8.2)" ], "requires_python": "", "summary": "Genomics England Bioinformatics team model definitions", "version": "7.8.0", "yanked": false, "yanked_reason": null }, "last_serial": 8878218, "releases": { "7.2.10": [ { "comment_text": "", "digests": { "md5": "69725526a67f285bf2b05f005249485e", "sha256": "7c1bb7397cd1d0b890a7560118733913fa3c00ad77ccd17c56e01be1a7cb3b5d" }, "downloads": -1, "filename": "GelReportModels-7.2.10.tar.gz", "has_sig": false, "md5_digest": "69725526a67f285bf2b05f005249485e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1185776, "upload_time": "2019-06-11T09:28:37", "upload_time_iso_8601": "2019-06-11T09:28:37.912164Z", "url": "https://files.pythonhosted.org/packages/5e/3a/a1f7bb2f1251631ae1791a999906229c6b1fb915b493cffd251760562ce6/GelReportModels-7.2.10.tar.gz", "yanked": false, "yanked_reason": null } ], "7.2.9": [ { "comment_text": "", "digests": { "md5": "bbcf7d878a56c66c32e1b91e17308ab3", "sha256": "b88add9c08fbd079c68189e817b6ac0e9196a1810c0921e8665d63bdb2987399" }, "downloads": -1, "filename": "GelReportModels-7.2.9.tar.gz", "has_sig": false, "md5_digest": "bbcf7d878a56c66c32e1b91e17308ab3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1178931, "upload_time": "2019-05-30T21:01:51", "upload_time_iso_8601": "2019-05-30T21:01:51.645441Z", "url": "https://files.pythonhosted.org/packages/7d/bb/2344fa545fa0c171f4b1b0145624001fef8b2a751eca29681431ddd6c25e/GelReportModels-7.2.9.tar.gz", "yanked": false, "yanked_reason": null } ], "7.3.3": [ { "comment_text": "", "digests": { "md5": "423b11930a0d2899e3556a67f4d51022", "sha256": "0f1a4f1069f0d5e1f9e21157bb8599fd60c2d660d7acafef1455472819cddc07" }, "downloads": -1, "filename": "GelReportModels-7.3.3.tar.gz", "has_sig": false, "md5_digest": "423b11930a0d2899e3556a67f4d51022", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1289921, "upload_time": "2019-08-19T12:14:18", "upload_time_iso_8601": "2019-08-19T12:14:18.658782Z", "url": "https://files.pythonhosted.org/packages/cf/4e/7b05689afa556771aef3213957700c6a6b1ab2366f88b2c332e79a404e09/GelReportModels-7.3.3.tar.gz", "yanked": false, "yanked_reason": null } ], "7.3.4": [ { "comment_text": "", "digests": { "md5": "32e729d601d3c94f04bf777085649cd7", "sha256": "98bdf346b10c1248d9187383b29ad7c2b84125448552c0c9b03f29da3f0492a5" }, "downloads": -1, "filename": "GelReportModels-7.3.4.tar.gz", "has_sig": false, "md5_digest": "32e729d601d3c94f04bf777085649cd7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1290584, "upload_time": "2019-10-25T12:15:17", "upload_time_iso_8601": "2019-10-25T12:15:17.854387Z", "url": "https://files.pythonhosted.org/packages/f6/15/562c8719829ca5b2ad5e6c7949508ac4c2718ccfe0996db11cfd3959573f/GelReportModels-7.3.4.tar.gz", "yanked": false, "yanked_reason": null } ], "7.3.5": [ { "comment_text": "", "digests": { "md5": "d56a948dd08e0018a8729a361dc42d45", "sha256": "68e333319224252852c4cb1c37b93c340e837cbf287c2ad4d9a7f7b27e6f9d98" }, "downloads": -1, "filename": "GelReportModels-7.3.5.tar.gz", "has_sig": false, "md5_digest": "d56a948dd08e0018a8729a361dc42d45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1291744, "upload_time": "2019-12-19T15:32:41", "upload_time_iso_8601": "2019-12-19T15:32:41.407333Z", "url": "https://files.pythonhosted.org/packages/2f/ed/fe884d7800dd1088b2b469775efe361c2eb5de5eeb274f37540d4e2f595e/GelReportModels-7.3.5.tar.gz", "yanked": false, "yanked_reason": null } ], "7.3.6": [ { "comment_text": "", "digests": { "md5": "821b19cd79bf0d04a932ec90ef0b9492", "sha256": "11350e0db308d2874054210fe45dc604fe6178dba389d3dd744e1b0f5b2fc82a" }, "downloads": -1, "filename": "GelReportModels-7.3.6.tar.gz", "has_sig": false, "md5_digest": "821b19cd79bf0d04a932ec90ef0b9492", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1290613, "upload_time": "2020-01-06T16:29:42", "upload_time_iso_8601": "2020-01-06T16:29:42.544368Z", "url": "https://files.pythonhosted.org/packages/76/c1/1f564c858792b94dec8cc1fd520055d99101f7c133b889b12235e6feed0e/GelReportModels-7.3.6.tar.gz", "yanked": false, "yanked_reason": null } ], "7.4.1": [ { "comment_text": "", "digests": { "md5": "311975705a8671eaf873788ee4de7fea", "sha256": "35a9f327b1e8e8a5004324fbb744d4510af9041f956899435daf69d1ebe251a7" }, "downloads": -1, "filename": "GelReportModels-7.4.1.tar.gz", "has_sig": false, "md5_digest": "311975705a8671eaf873788ee4de7fea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1434188, "upload_time": "2020-02-10T13:50:58", "upload_time_iso_8601": "2020-02-10T13:50:58.327561Z", "url": "https://files.pythonhosted.org/packages/95/6d/f018d64ad10643cebae6c5264a9599653596b5b5c1a7323a4d8ab5d65eda/GelReportModels-7.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "7.4.2": [ { "comment_text": "", "digests": { "md5": "51dcffe5106d332955cd1e5578865c31", "sha256": "7b6a8f44a24d70a25a5dc90fec774f01659baee3df902d5506533516ed7f3eea" }, "downloads": -1, "filename": "GelReportModels-7.4.2.tar.gz", "has_sig": false, "md5_digest": "51dcffe5106d332955cd1e5578865c31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1438350, "upload_time": "2020-04-17T11:53:28", "upload_time_iso_8601": "2020-04-17T11:53:28.395043Z", "url": "https://files.pythonhosted.org/packages/59/44/7124da7cb2af96b34ec6f9d47567f1d00454f8d28db8239938257c1c44f2/GelReportModels-7.4.2.tar.gz", "yanked": false, "yanked_reason": null } ], "7.5.0": [ { "comment_text": "", "digests": { "md5": "e051bc37a002f3d0d55ce7737036e7b1", "sha256": "07e6531be120d5a40e04b11038860c6029813120e1b70bc3b6a6ec92ca786b1b" }, "downloads": -1, "filename": "GelReportModels-7.5.0.tar.gz", "has_sig": false, "md5_digest": "e051bc37a002f3d0d55ce7737036e7b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1452703, "upload_time": "2020-04-27T16:05:23", "upload_time_iso_8601": "2020-04-27T16:05:23.251113Z", "url": "https://files.pythonhosted.org/packages/95/0f/c961cc798fcc89d1fbcca7becf92426df18146667805fa1d6a1ec12535a1/GelReportModels-7.5.0.tar.gz", "yanked": false, "yanked_reason": null } ], "7.5.1": [ { "comment_text": "", "digests": { "md5": "8131d02b06b0a452e953e078682ab5cb", "sha256": "15c925bb5d550ee9f64fbcfb137acfd878fbcdd3c2e0a8321a7f023f7eb907fa" }, "downloads": -1, "filename": "GelReportModels-7.5.1.tar.gz", "has_sig": false, "md5_digest": "8131d02b06b0a452e953e078682ab5cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1463343, "upload_time": "2020-04-30T11:14:18", "upload_time_iso_8601": "2020-04-30T11:14:18.199795Z", "url": "https://files.pythonhosted.org/packages/3b/7a/8a40aca217993dce3c441f92627013dc5dc68ea5d92de76ff27932b860b7/GelReportModels-7.5.1.tar.gz", "yanked": false, "yanked_reason": null } ], "7.5.2": [ { "comment_text": "", "digests": { "md5": "1476c4fce964870671437ab58cf40e2c", "sha256": "02c3396eb8a4f823e8182583aebb9bcfd50177ee670726ddc2c121d10039019d" }, "downloads": -1, "filename": "GelReportModels-7.5.2.tar.gz", "has_sig": false, "md5_digest": "1476c4fce964870671437ab58cf40e2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1466937, "upload_time": "2020-05-13T11:23:15", "upload_time_iso_8601": "2020-05-13T11:23:15.168651Z", "url": "https://files.pythonhosted.org/packages/ea/97/21b9ba80a64c60f8575c70b278949f6f5b31989251abd509ae287a8f7977/GelReportModels-7.5.2.tar.gz", "yanked": false, "yanked_reason": null } ], "7.6.0": [ { "comment_text": "", "digests": { "md5": "5418b90a1b7c1cf51ac3e45531e8f1b3", "sha256": "8d865cd3f00f6befda97ed054297a9b2cce727d93103bcfa4535148e71637034" }, "downloads": -1, "filename": "GelReportModels-7.6.0.tar.gz", "has_sig": false, "md5_digest": "5418b90a1b7c1cf51ac3e45531e8f1b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1472969, "upload_time": "2020-07-31T08:56:22", "upload_time_iso_8601": "2020-07-31T08:56:22.514810Z", "url": "https://files.pythonhosted.org/packages/39/6e/b729728fc6f802325c0f283722e8489461765eac5f00f6ba552ba7d490fc/GelReportModels-7.6.0.tar.gz", "yanked": false, "yanked_reason": null } ], "7.6.1": [ { "comment_text": "", "digests": { "md5": "7be5dbdf3c016b92e7dc369847657020", "sha256": "b140aee0d2ff60eb0e68f709476d77360a45b29c3c72425366ae0eee73f53098" }, "downloads": -1, "filename": "GelReportModels-7.6.1.tar.gz", "has_sig": false, "md5_digest": "7be5dbdf3c016b92e7dc369847657020", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1524324, "upload_time": "2020-08-09T21:04:45", "upload_time_iso_8601": "2020-08-09T21:04:45.527665Z", "url": "https://files.pythonhosted.org/packages/1f/ea/db37208e73b88cb1d46a9a87901e775686c138c734a5b1200d19be79b7f0/GelReportModels-7.6.1.tar.gz", "yanked": false, "yanked_reason": null } ], "7.8.0": [ { "comment_text": "", "digests": { "md5": "507698e9ac61db1b4e40cfbb616fcbd2", "sha256": "9606a59352aed2016d023d3b13439755bfa425d7e10d687083c5415c470f9c68" }, "downloads": -1, "filename": "GelReportModels-7.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "507698e9ac61db1b4e40cfbb616fcbd2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2356124, "upload_time": "2020-12-11T17:06:00", "upload_time_iso_8601": "2020-12-11T17:06:00.641028Z", "url": "https://files.pythonhosted.org/packages/c7/c4/7254f0ded9e2f52f8678d13199a6365016782d70ea7e81e58583aa727a55/GelReportModels-7.8.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2631b59f214c5c04659a2cda0dbf5a59", "sha256": "cab8d4ff65a1ada1a5b97d38dab682f2fa6c1ffe31738b01cb9e23d011de092b" }, "downloads": -1, "filename": "GelReportModels-7.8.0.tar.gz", "has_sig": false, "md5_digest": "2631b59f214c5c04659a2cda0dbf5a59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2204816, "upload_time": "2020-12-11T17:06:05", "upload_time_iso_8601": "2020-12-11T17:06:05.743307Z", "url": "https://files.pythonhosted.org/packages/c6/0a/b3567951daa8eab049d77b1c6f0407eeb33c719e32fc11c5334e5eaa5251/GelReportModels-7.8.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "507698e9ac61db1b4e40cfbb616fcbd2", "sha256": "9606a59352aed2016d023d3b13439755bfa425d7e10d687083c5415c470f9c68" }, "downloads": -1, "filename": "GelReportModels-7.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "507698e9ac61db1b4e40cfbb616fcbd2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2356124, "upload_time": "2020-12-11T17:06:00", "upload_time_iso_8601": "2020-12-11T17:06:00.641028Z", "url": "https://files.pythonhosted.org/packages/c7/c4/7254f0ded9e2f52f8678d13199a6365016782d70ea7e81e58583aa727a55/GelReportModels-7.8.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2631b59f214c5c04659a2cda0dbf5a59", "sha256": "cab8d4ff65a1ada1a5b97d38dab682f2fa6c1ffe31738b01cb9e23d011de092b" }, "downloads": -1, "filename": "GelReportModels-7.8.0.tar.gz", "has_sig": false, "md5_digest": "2631b59f214c5c04659a2cda0dbf5a59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2204816, "upload_time": "2020-12-11T17:06:05", "upload_time_iso_8601": "2020-12-11T17:06:05.743307Z", "url": "https://files.pythonhosted.org/packages/c6/0a/b3567951daa8eab049d77b1c6f0407eeb33c719e32fc11c5334e5eaa5251/GelReportModels-7.8.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }