{ "info": { "author": "Erik van Widenfelt", "author_email": "ew2789@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "|pypi| |travis| |codecov| |downloads|\n\nedc-consent\n-----------\n\nAdd classes for the Informed Consent form and process.\n\nInstallation\n============\n\nRegister your consent model, its version and period of validity, with ``site_consents``. ``site_consents`` will ``autodiscover`` ``consents.py`` in any app listed in ``INSTALLED_APPS``. For now we just create a version 1 consent. In ``consents.py`` add something like this: \n\n\n.. code-block:: python\n\n import arrow\n from datetime import datetime\n\n from edc_consent.consent import Consent\n from edc_consent.site_consents import site_consents\n from edc_constants.constants import MALE, FEMALE\n\n subjectconsent_v1 = Consent(\n 'edc_example.subjectconsent',\n version='1',\n start=arrow.get(datetime(2013, 10, 15)).datetime,\n end=arrow.get(datetime(2016, 10, 15)).datetime,\n age_min=16,\n age_is_adult=18,\n age_max=64,\n gender=[MALE, FEMALE])\n\n site_consents.register(subjectconsent_v1)\n\nadd to settings:\n\n.. code-block:: python\n\n INSTALLED_APPS = [\n ...\n 'edc_consent.apps.AppConfig',\n ...\n ]\n\n\n\n Below needs to be updated\n\nFeatures\n========\n\n* base class for an informed consent document\n* data for models that require consent cannot be add until the consent is added\n* consents have a version number and validity period\n* maximum number of consented subjects can be controlled.\n* data collection is only allowed within the validity period of the consent per consented participant\n* data for models that require consent are tagged with the consent version\n\nTODO\n====\n\n- link subject type to the consent model. e.g. maternal, infant, adult, etc.\n- version at model field level (e.g. a new consent period adds additional questions to a form)\n- allow a different subject's consent to cover for another, for example mother and infant. \n\nUsage\n=====\n\nFirst, it's a good idea to limit the number of consents created to match your enrollment targets. Do this by creating a mixin for the consent model class:\n\n.. code-block:: python\n\n\tfrom edc_quota.client.models import QuotaMixin, QuotaManager\n\n\tclass ConsentQuotaMixin(QuotaMixin):\n\n\t QUOTA_REACHED_MESSAGE = 'Maximum number of subjects has been reached or exceeded for {}. Got {} >= {}.'\n\n\t class Meta:\n\t abstract = True\n\nThen declare the consent model:\n\n.. code-block:: python\n\n\tclass MyConsent(ConsentQuotaMixin, BaseConsent):\n\n \tquota = QuotaManager()\n\n\t\tclass Meta:\n\t\t\tapp_label = 'my_app'\n\nDeclare the ModelForm:\n\n.. code-block:: python\n\n\tclass MyConsentForm(BaseConsentForm):\n\n\t\tclass Meta:\n\t\t\tmodel = MyConsent\n\n\nNow that you have a consent model class, identify and declare the models that will require this consent:\n\n.. code-block:: python\n\n\tclass Questionnaire(RequiresConsentMixin, models.Model):\n\n \tconsent_model = MyConsent # or tuple (app_label, model_name)\n\n \treport_datetime = models.DateTimeField(default=timezone.now)\n\n \tquestion1 = models.CharField(max_length=10)\n\n \tquestion2 = models.CharField(max_length=10)\n\n \tquestion3 = models.CharField(max_length=10)\n\n\t@property\n\tdef subject_identifier(self):\n\t\t\"\"\"Returns the subject identifier from ...\"\"\"\n\t\treturn subject_identifier\n\n class Meta:\n app_label = 'my_app'\n verbose_name = 'My Questionnaire'\n\nNotice above the first two class attributes, namely:\n\n* consent_model: this is the consent model class that was declared above;\n* report_datetime: a required field used to lookup the correct consent version from ConsentType and to find, together with ``subject_identifier``, a valid instance of ``MyConsent``;\n\nAlso note the property ``subject_identifier``. \n\n* subject_identifier: a required property that knows how to find the ``subject_identifier`` for the instance of ``Questionnaire``. \n\nOnce all is declared you need to:\n\n* define the consent version and validity period for the consent version in ``ConsentType``;\n* add a Quota for the consent model.\n\nAs subjects are identified:\n\n* add a consent\n* add the models (e.g. ``Questionnaire``)\n\nIf a consent version cannot be found given the consent model class and report_datetime a ``ConsentTypeError`` is raised.\n\nIf a consent for this subject_identifier cannot be found that matches the ``ConsentType`` a ``NotConsentedError`` is raised.\n\nSpecimen Consent\n================\n\nA participant may consent to the study but not agree to have specimens stored long term. A specimen consent is administered separately to clarify the participant\\'s intention.\n\nThe specimen consent is declared using the base class ``BaseSpecimenConsent``. This is an abridged version of ``BaseConsent``. The specimen consent also uses the ``RequiresConsentMixin`` as it cannot stand alone as an ICF. The ``RequiresConsentMixin`` ensures the specimen consent is administered after the main study ICF, in this case ``MyStudyConsent``.\n\nA specimen consent is declared in your app like this: \n\n.. code-block:: python\n\n class SpecimenConsent(BaseSpecimenConsent, SampleCollectionFieldsMixin, RequiresConsentMixin,\n VulnerabilityFieldsMixin, AppointmentMixin, BaseUuidModel):\n\n consent_model = MyStudyConsent\n\n registered_subject = models.OneToOneField(RegisteredSubject, null=True)\n\n objects = models.Manager()\n\n history = AuditTrail()\n\n class Meta:\n app_label = 'my_app'\n verbose_name = 'Specimen Consent'\n\n\nValidators\n==========\n\nThe ``ConsentAgeValidator`` validates the date of birth to within a given age range, for example:\n\n.. code-block:: python\n\n\tfrom edc_consent.validtors import ConsentAgeValidator\n\n\tclass MyConsent(ConsentQuotaMixin, BaseConsent):\n\n\t\tdob = models.DateField(\n\t validators=[ConsentAgeValidator(16, 64)])\n\n \tquota = QuotaManager()\n\n\t\tclass Meta:\n\t\t\tapp_label = 'my_app'\n\nThe ``PersonalFieldsMixin`` includes a date of birth field and you can set the age bounds like this:\n\n.. code-block:: python\n\n\tfrom edc_consent.validtors import ConsentAgeValidator\n\tfrom edc_consent.models.fields import PersonalFieldsMixin\n\n\tclass MyConsent(ConsentQuotaMixin, PersonalFieldsMixin, BaseConsent):\n\n \tquota = QuotaManager()\n\n MIN_AGE_OF_CONSENT = 18\n MAX_AGE_OF_CONSENT = 64\n\n\t\tclass Meta:\n\t\t\tapp_label = 'my_app'\n\n\nCommon senarios\n===============\n\nTracking the consent version with collected data\n++++++++++++++++++++++++++++++++++++++++++++++++\n\nAll model data is tagged with the consent version identified in ``ConsentType`` for the consent model class and report_datetime.\n\nReconsenting consented subjects when the consent changes\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\nThe consent model is unique on subject_identifier, identity and version. If a new consent version is added to ``ConsentType``, a new consent will be required for each subject as data is reported within the validity period of the new consent.\n\nSome care must be taken to ensure that the consent model is queried with an understanding of the unique constraint. \n\n\nLinking the consent version to added or removed model fields on models that require consent\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\nTODO\n\nInfants use mother's consent\n++++++++++++++++++++++++++++\n\nTODO\n\nBy adding the property ``consenting_subject_identifier`` to the consent\n\n\nOther TODO\n==========\n\n* ``Timepoint`` model update in ``save`` method of models requiring consent\n* handle added or removed model fields (questions) because of consent version change\n* review verification actions\n* management command to update version on models that require consent (if edc_consent added after instances were created)\n* handle re-consenting issues, for example, if original consent was restricted by age (16-64) but the re-consent is not. May need to open upper bound.\n\n\n\n.. |pypi| image:: https://img.shields.io/pypi/v/edc-consent.svg\n :target: https://pypi.python.org/pypi/edc-consent\n\n.. |travis| image:: https://travis-ci.org/clinicedc/edc-consent.svg?branch=develop\n :target: https://travis-ci.org/clinicedc/edc-consent\n\n.. |codecov| image:: https://codecov.io/gh/clinicedc/edc-consent/branch/develop/graph/badge.svg\n :target: https://codecov.io/gh/clinicedc/edc-consent\n\n.. |downloads| image:: https://pepy.tech/badge/edc-consent\n :target: https://pepy.tech/project/edc-consent\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/clinicedc/edc-consent", "keywords": "django participant ICF", "license": "GPL license, see LICENSE", "maintainer": "", "maintainer_email": "", "name": "edc-consent", "package_url": "https://pypi.org/project/edc-consent/", "platform": "", "project_url": "https://pypi.org/project/edc-consent/", "project_urls": { "Homepage": "https://github.com/clinicedc/edc-consent" }, "release_url": "https://pypi.org/project/edc-consent/0.2.35/", "requires_dist": [ "edc-consent", "edc-model-admin", "edc-registration", "toolz" ], "requires_python": ">=3.7", "summary": "Base models, forms and admin for participant ICF for clinicedc/edc projects.", "version": "0.2.35" }, "last_serial": 5888708, "releases": { "0.2.10": [ { "comment_text": "", "digests": { "md5": "115a879d1dcb31b2853360e8768ef431", "sha256": "0bce077bb7297fec7d034fa69cd335e4e4454ea49566262571e99f6f2495998d" }, "downloads": -1, "filename": "edc-consent-0.2.10.macosx-10.13-x86_64.tar.gz", "has_sig": false, "md5_digest": "115a879d1dcb31b2853360e8768ef431", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67391, "upload_time": "2018-08-01T01:24:06", "url": "https://files.pythonhosted.org/packages/cc/55/e14f9edc691d8cdc22ef86fd1464f491e10fd1e13687a2a3cc645d7bb6d6/edc-consent-0.2.10.macosx-10.13-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "ac8065c0da620fa6338ac3732c4fda33", "sha256": "3063da49afe268fb8ff048833d5819e562927ad0aa81df8e2862b5a3fb757575" }, "downloads": -1, "filename": "edc_consent-0.2.10-py3-none-any.whl", "has_sig": false, "md5_digest": "ac8065c0da620fa6338ac3732c4fda33", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44972, "upload_time": "2018-08-01T01:24:04", "url": "https://files.pythonhosted.org/packages/d2/91/59ebcf524c6031dce5ff1e9f61881b1a249961a800c10eefe85b162fadc2/edc_consent-0.2.10-py3-none-any.whl" } ], "0.2.11": [ { "comment_text": "", "digests": { "md5": "bd73f6225e69ca5781aaef92d4fa9799", "sha256": "5d593cd76d1f162f8e190f9bc08f2606b057dd5e475b8b1a2e909a2adafac71e" }, "downloads": -1, "filename": "edc-consent-0.2.11.macosx-10.13-x86_64.tar.gz", "has_sig": false, "md5_digest": "bd73f6225e69ca5781aaef92d4fa9799", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67749, "upload_time": "2018-08-07T21:15:37", "url": "https://files.pythonhosted.org/packages/4b/d6/b23da6647c99ea67c64a1bc2a3c70283e2985da984f90c2558f9a52fff2e/edc-consent-0.2.11.macosx-10.13-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "2488e5a1db6dec143dc9976f17eb4663", "sha256": "952437d96afb1d62741672e99f2aa3d0f651bc1807b91e6467345179e50f2e9d" }, "downloads": -1, "filename": "edc_consent-0.2.11-py3-none-any.whl", "has_sig": false, "md5_digest": "2488e5a1db6dec143dc9976f17eb4663", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45673, "upload_time": "2018-08-07T21:15:34", "url": "https://files.pythonhosted.org/packages/d4/17/7b235f6c8f334eef44f949b9527e6a665b50b64bffd9c043dda727f2168e/edc_consent-0.2.11-py3-none-any.whl" } ], "0.2.12": [ { "comment_text": "", "digests": { "md5": "e903ec5687e3b66116a7a98728af27f4", "sha256": "4c21490eae6ade139f03762bed73007045bbbe4afa233a52f7ed28798143c91f" }, "downloads": -1, "filename": "edc-consent-0.2.12.macosx-10.13-x86_64.tar.gz", "has_sig": false, "md5_digest": "e903ec5687e3b66116a7a98728af27f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66722, "upload_time": "2018-08-07T23:23:37", "url": "https://files.pythonhosted.org/packages/80/c4/32a5d424fcc2fda670a72711527b4288e90046282efe71f3838dda032842/edc-consent-0.2.12.macosx-10.13-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "f6b1f588496ee965a5cbbf5d417e5c0a", "sha256": "e84cddd081a0a3d5ecb02e1235f78c5362df30759053532f6b82c4c3462d344f" }, "downloads": -1, "filename": "edc_consent-0.2.12-py3-none-any.whl", "has_sig": false, "md5_digest": "f6b1f588496ee965a5cbbf5d417e5c0a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44548, "upload_time": "2018-08-07T23:23:36", "url": "https://files.pythonhosted.org/packages/f1/66/70a94093e344d7ce3c97391167f67e6cdf1cd405ff2d8e599b40e181347c/edc_consent-0.2.12-py3-none-any.whl" } ], "0.2.13": [ { "comment_text": "", "digests": { "md5": "3fa639cdc65d3cf80eefad75f550f198", "sha256": "ef3890e2d2ee766db08c76ac45dc552fb811b0149ee01412c62e388aa155d8c7" }, "downloads": -1, "filename": "edc-consent-0.2.13.macosx-10.13-x86_64.tar.gz", "has_sig": false, "md5_digest": "3fa639cdc65d3cf80eefad75f550f198", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67410, "upload_time": "2018-08-16T22:19:11", "url": "https://files.pythonhosted.org/packages/50/cb/61b37dfc47d5fc1741745849b41f83c1bed4a116ffa06c53120229aa245b/edc-consent-0.2.13.macosx-10.13-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "e9878dbc012692d5a10b50fcd3d535dc", "sha256": "ed84832f1db8c291b2ec59fdbb39e67c7fd00f73a264dccb8ec09110e516d09c" }, "downloads": -1, "filename": "edc_consent-0.2.13-py3-none-any.whl", "has_sig": false, "md5_digest": "e9878dbc012692d5a10b50fcd3d535dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44703, "upload_time": "2018-08-16T22:19:10", "url": "https://files.pythonhosted.org/packages/71/53/7f626746155adb18e49edaf69f6d1ecbd6fa215498ac038965de09038ff7/edc_consent-0.2.13-py3-none-any.whl" } ], "0.2.14": [ { "comment_text": "", "digests": { "md5": "f0a0c3b003d83b0761a4b6d98d52412d", "sha256": "91698821b85fc0b41c1ff1079bc2065f6f87d80c07b0d5244441de407e687b80" }, "downloads": -1, "filename": "edc-consent-0.2.14.macosx-10.13-x86_64.tar.gz", "has_sig": false, "md5_digest": "f0a0c3b003d83b0761a4b6d98d52412d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67598, "upload_time": "2018-09-03T00:26:55", "url": "https://files.pythonhosted.org/packages/b6/a2/fba4842a70ec7375e72720601b8d9c459d713732650b0897ce652cf23aea/edc-consent-0.2.14.macosx-10.13-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "d63f40ff4e5a705a1792f30afb85c510", "sha256": "6d1c2de0904c77fa485245beac0e1e5c220aba84de5fbc616be99eb2444d6e8a" }, "downloads": -1, "filename": "edc_consent-0.2.14-py3-none-any.whl", "has_sig": false, "md5_digest": "d63f40ff4e5a705a1792f30afb85c510", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44788, "upload_time": "2018-09-03T00:26:53", "url": "https://files.pythonhosted.org/packages/d5/11/2a28f00561d5fe5212162c24c8d022e227920252f9a4036a2d1dce25d72f/edc_consent-0.2.14-py3-none-any.whl" } ], "0.2.15": [ { "comment_text": "", "digests": { "md5": "bf820b6a09ba525ac48f68ab3bcae15b", "sha256": "12fa5f1788614567861dc8abb601143d5f313a1cc1d395e3137e28b975fb8f68" }, "downloads": -1, "filename": "edc-consent-0.2.15.macosx-10.13-x86_64.tar.gz", "has_sig": false, "md5_digest": "bf820b6a09ba525ac48f68ab3bcae15b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67952, "upload_time": "2018-09-06T05:30:37", "url": "https://files.pythonhosted.org/packages/0f/23/38a05ca6f4205b1c6330113be326e4820723ed3d3f80419158dcd2af03b6/edc-consent-0.2.15.macosx-10.13-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "8024bfebb5708cbcc3a50988f1420993", "sha256": "acea161f233f02b8eca5e7c34c5332d5c4917c46ebebd976176e50cff1d2b3f8" }, "downloads": -1, "filename": "edc_consent-0.2.15-py3-none-any.whl", "has_sig": false, "md5_digest": "8024bfebb5708cbcc3a50988f1420993", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44905, "upload_time": "2018-09-06T05:30:36", "url": "https://files.pythonhosted.org/packages/1a/3a/5dd7e7670cf246678671a311881b5f1169f127ffc627a53d82a4cb24542f/edc_consent-0.2.15-py3-none-any.whl" } ], "0.2.16": [ { "comment_text": "", "digests": { "md5": "cc82470cb073e43d0f64707960f0eb91", "sha256": "2203cb13a435d924c29f11d4dde388a1124b90a174ff01b968c00983a32080b6" }, "downloads": -1, "filename": "edc-consent-0.2.16.macosx-10.13-x86_64.tar.gz", "has_sig": false, "md5_digest": "cc82470cb073e43d0f64707960f0eb91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68162, "upload_time": "2018-11-15T03:55:16", "url": "https://files.pythonhosted.org/packages/ff/9f/7e07c072bd5e30215fe1e54a3d06717eb183cb463c5ea090f0f18fc95fa9/edc-consent-0.2.16.macosx-10.13-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "94d03f31f92ce55c4dc2890ca77f4825", "sha256": "0cabae94e1dc0a214e557623de30083a78cd44bc172deaa375ee43aafa3c8ba9" }, "downloads": -1, "filename": "edc_consent-0.2.16-py3-none-any.whl", "has_sig": false, "md5_digest": "94d03f31f92ce55c4dc2890ca77f4825", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44966, "upload_time": "2018-11-15T03:55:14", "url": "https://files.pythonhosted.org/packages/f7/50/4096ebe7cdbbbb6253234cb263537b8e53522fda02f2d71d4d1d5d12b707/edc_consent-0.2.16-py3-none-any.whl" } ], "0.2.17": [ { "comment_text": "", "digests": { "md5": "cd095d7283dd304cc1ba8b604cc59a84", "sha256": "44a1a856fe9fb665917317b5dfb79c69c2e4c45e392505a2d51a9397280dafe2" }, "downloads": -1, "filename": "edc-consent-0.2.17.macosx-10.13-x86_64.tar.gz", "has_sig": false, "md5_digest": "cd095d7283dd304cc1ba8b604cc59a84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68065, "upload_time": "2018-12-27T03:11:33", "url": "https://files.pythonhosted.org/packages/ef/ad/c98075494e134b407f5e7bbacf7307827208f5ad81b53aec0134771b8c57/edc-consent-0.2.17.macosx-10.13-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "42f90756674215f5214c5ec4d7e365fc", "sha256": "7c94cfca39840876e2521a5828ca758b7fc40abdfa238d0f0297a97b6258a557" }, "downloads": -1, "filename": "edc_consent-0.2.17-py3-none-any.whl", "has_sig": false, "md5_digest": "42f90756674215f5214c5ec4d7e365fc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44912, "upload_time": "2018-12-27T03:11:32", "url": "https://files.pythonhosted.org/packages/72/92/37ea0745ed6442c446d9e1f0294e170c55e6eeb227ebc95e97b0c95b3d5c/edc_consent-0.2.17-py3-none-any.whl" } ], "0.2.18": [ { "comment_text": "", "digests": { "md5": "a8104472d1aaf0272dd612aae01915bb", "sha256": "0caf271c97568a0c6eb8232fbb3183a33a635d7a9cc6d6c24091888ab85b1205" }, "downloads": -1, "filename": "edc_consent-0.2.18-py3-none-any.whl", "has_sig": false, "md5_digest": "a8104472d1aaf0272dd612aae01915bb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 57455, "upload_time": "2019-02-10T22:41:17", "url": "https://files.pythonhosted.org/packages/15/05/632e343c212c8e3640aa634b401501254643ca9e5ce9b511cdcb3c08c59f/edc_consent-0.2.18-py3-none-any.whl" } ], "0.2.19": [ { "comment_text": "", "digests": { "md5": "03e015c04297dcc384a808c0ff4edb4d", "sha256": "7b8d682700d140b82f64cd7c13c35226ce9e34f870db90d79a2b041815671d71" }, "downloads": -1, "filename": "edc_consent-0.2.19-py3-none-any.whl", "has_sig": false, "md5_digest": "03e015c04297dcc384a808c0ff4edb4d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 57462, "upload_time": "2019-02-11T01:49:40", "url": "https://files.pythonhosted.org/packages/f7/24/11e5be9f3b935a992c8b98498c820cbd865b0221ee62429685cbbd9d4bf5/edc_consent-0.2.19-py3-none-any.whl" } ], "0.2.20": [ { "comment_text": "", "digests": { "md5": "9e4b5b2d20e1760813035896215c1a46", "sha256": "e9f0cfcf1bfb7152b3a8e47cb701a78c4e116b97aa2c3f819979147ab5f7f181" }, "downloads": -1, "filename": "edc_consent-0.2.20-py3-none-any.whl", "has_sig": false, "md5_digest": "9e4b5b2d20e1760813035896215c1a46", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 57438, "upload_time": "2019-02-27T14:35:03", "url": "https://files.pythonhosted.org/packages/59/e7/56de83061dd3429350b8afbba1ce02c648831fd6c8b98c8634abd5372021/edc_consent-0.2.20-py3-none-any.whl" } ], "0.2.21": [ { "comment_text": "", "digests": { "md5": "980bfe430214c0f16307d24a2a544544", "sha256": "1d799cc0a75c152d86917d3d2005cccb01c200dc21556ba357d50d27d4b96598" }, "downloads": -1, "filename": "edc_consent-0.2.21-py3-none-any.whl", "has_sig": false, "md5_digest": "980bfe430214c0f16307d24a2a544544", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 57390, "upload_time": "2019-03-04T16:08:31", "url": "https://files.pythonhosted.org/packages/04/cc/f9b3d356f26df76c8a18ff396e5e98ba3b2c5c6deec33ea4ee5bda9b0ac7/edc_consent-0.2.21-py3-none-any.whl" } ], "0.2.22": [ { "comment_text": "", "digests": { "md5": "3970e1729259f13d8c20296ec96cc37f", "sha256": "9b3b06d7d3f7dd3f753771ed0b1a5a1076bada0c156a7ec0bf384668cc4d1071" }, "downloads": -1, "filename": "edc_consent-0.2.22-py3-none-any.whl", "has_sig": false, "md5_digest": "3970e1729259f13d8c20296ec96cc37f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 57493, "upload_time": "2019-03-23T19:00:59", "url": "https://files.pythonhosted.org/packages/93/f1/607e722ac0df75e87702cf4dc20f248f918ec9125ce63c582bca0e209c69/edc_consent-0.2.22-py3-none-any.whl" } ], "0.2.23": [ { "comment_text": "", "digests": { "md5": "edc72c7412d04c4b0b5dfbdfbc69bc30", "sha256": "7db8fac17f9518902ee804c3c70e68ed2aad14d94b16685f7d68cb3aa5b72b32" }, "downloads": -1, "filename": "edc_consent-0.2.23-py3-none-any.whl", "has_sig": false, "md5_digest": "edc72c7412d04c4b0b5dfbdfbc69bc30", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 57570, "upload_time": "2019-03-25T23:58:21", "url": "https://files.pythonhosted.org/packages/ac/c2/1e24db6ce58757ae13e469fbb7cc13cad6c2adb442272c683d9774d4db47/edc_consent-0.2.23-py3-none-any.whl" } ], "0.2.24": [ { "comment_text": "", "digests": { "md5": "47bd3cb553639dae869904daed4fab86", "sha256": "6ca45bb8d2be7f8f2a4ec6e254a338d0655d39d7e93e21119e523ea6e027b21b" }, "downloads": -1, "filename": "edc_consent-0.2.24-py3-none-any.whl", "has_sig": false, "md5_digest": "47bd3cb553639dae869904daed4fab86", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 57559, "upload_time": "2019-03-27T22:41:09", "url": "https://files.pythonhosted.org/packages/c3/a7/0c3c396f598b1f538b3a0d1f011d1d0dab8eef37e5f5ddb02dfcbab998e6/edc_consent-0.2.24-py3-none-any.whl" } ], "0.2.25": [ { "comment_text": "", "digests": { "md5": "c76021143c2df8c7cf2ebcd70821c5ad", "sha256": "ebe1395ed0caa61fd50a2661851d8d9a2024468195b24f20e139867ac9670750" }, "downloads": -1, "filename": "edc_consent-0.2.25-py3-none-any.whl", "has_sig": false, "md5_digest": "c76021143c2df8c7cf2ebcd70821c5ad", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 57555, "upload_time": "2019-04-04T19:53:56", "url": "https://files.pythonhosted.org/packages/00/c2/ecd6c351a6ae6a15c418b97968cfd1d63d32d2c83cb317de5c6fe4072ff5/edc_consent-0.2.25-py3-none-any.whl" } ], "0.2.26": [ { "comment_text": "", "digests": { "md5": "39fdc944e00ae104b2cf5a58d8ff6455", "sha256": "58d512ef64a68b0ae51bf65d91909cf647b03982239589f02a85534a33866c09" }, "downloads": -1, "filename": "edc_consent-0.2.26-py3-none-any.whl", "has_sig": false, "md5_digest": "39fdc944e00ae104b2cf5a58d8ff6455", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 55848, "upload_time": "2019-04-08T23:28:38", "url": "https://files.pythonhosted.org/packages/09/76/10a33cb7fe063b94129b26c1b27e8a4df2772a906ba99bec7df83b19a177/edc_consent-0.2.26-py3-none-any.whl" } ], "0.2.28": [ { "comment_text": "", "digests": { "md5": "5d354897bc555f9505b2d7eca0876d94", "sha256": "440af63b89f17d82ad66087552f7e9d2f2da1a6184eb835efc1fbc24a68cc419" }, "downloads": -1, "filename": "edc_consent-0.2.28-py3-none-any.whl", "has_sig": false, "md5_digest": "5d354897bc555f9505b2d7eca0876d94", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 55903, "upload_time": "2019-05-15T05:09:17", "url": "https://files.pythonhosted.org/packages/24/c9/ea968d7105deffb88b2eb8b41f6a85412fafcd74185f88fac2fac3f36461/edc_consent-0.2.28-py3-none-any.whl" } ], "0.2.29": [ { "comment_text": "", "digests": { "md5": "f1b46a3157be9b1ef2cd4b4ccf334794", "sha256": "ea94a7bc985e1a3c63005ceff1e6eea8e8603c81b6233c8a122f7719f8947920" }, "downloads": -1, "filename": "edc_consent-0.2.29-py3-none-any.whl", "has_sig": false, "md5_digest": "f1b46a3157be9b1ef2cd4b4ccf334794", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 76547, "upload_time": "2019-06-25T03:11:35", "url": "https://files.pythonhosted.org/packages/a2/9f/3228bdf52e234a0ee83c836b136750f09e26ac46393810fc9860b2b33283/edc_consent-0.2.29-py3-none-any.whl" } ], "0.2.30": [ { "comment_text": "", "digests": { "md5": "c09448b6957cbd102dd687f7ae732639", "sha256": "b472e121f0606da14fded5ae49753aae7b440530478494c626cf43b5af1a818d" }, "downloads": -1, "filename": "edc_consent-0.2.30-py3-none-any.whl", "has_sig": false, "md5_digest": "c09448b6957cbd102dd687f7ae732639", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 55967, "upload_time": "2019-06-27T21:30:32", "url": "https://files.pythonhosted.org/packages/56/8e/8c0d877172c094f2d45a447a20a8ff2f908b8dc992f1ea80983786bcae26/edc_consent-0.2.30-py3-none-any.whl" } ], "0.2.31": [ { "comment_text": "", "digests": { "md5": "f2bb03f90058283fb225890738fbb734", "sha256": "ef619649b28805ea90463fb7cbe3c4872d3666524c2807e535be392a9ddcfcf1" }, "downloads": -1, "filename": "edc_consent-0.2.31-py3-none-any.whl", "has_sig": false, "md5_digest": "f2bb03f90058283fb225890738fbb734", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 56026, "upload_time": "2019-07-20T16:48:42", "url": "https://files.pythonhosted.org/packages/33/10/7b4332ce553274a938d9a86d134f654b45ba6286074524ad1d301f52a9ed/edc_consent-0.2.31-py3-none-any.whl" } ], "0.2.32": [ { "comment_text": "", "digests": { "md5": "2f60bb98139a8eba3542eacf45282697", "sha256": "38912cd2e7b29262af261bcfcb67584d1d9b8f95827ab6b5dfa897e21aba2967" }, "downloads": -1, "filename": "edc_consent-0.2.32-py3-none-any.whl", "has_sig": false, "md5_digest": "2f60bb98139a8eba3542eacf45282697", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 56032, "upload_time": "2019-08-07T02:25:01", "url": "https://files.pythonhosted.org/packages/4d/0d/458fae0643ec879be3fdba383f50f80a8426904d389c487e354236144e5d/edc_consent-0.2.32-py3-none-any.whl" } ], "0.2.33": [ { "comment_text": "", "digests": { "md5": "df8033162f6453fbb4a638c782550c5a", "sha256": "4d5a7cfa3c8e519e2f241b0ba6c1543db286e0f8620ad40b9fedf30c33e9b37f" }, "downloads": -1, "filename": "edc_consent-0.2.33-py3-none-any.whl", "has_sig": false, "md5_digest": "df8033162f6453fbb4a638c782550c5a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 56067, "upload_time": "2019-08-31T07:42:20", "url": "https://files.pythonhosted.org/packages/45/dd/4d08cb3853a6584559f383bf62d7c54b0e431d675b184c740954503ee0f6/edc_consent-0.2.33-py3-none-any.whl" } ], "0.2.34": [ { "comment_text": "", "digests": { "md5": "ed1bc26dda1223e5b72176f55a648a5a", "sha256": "e5994c3396b3d3aee7919a3971cc2b356b57895f553d59c719ea7da813529432" }, "downloads": -1, "filename": "edc_consent-0.2.34-py3-none-any.whl", "has_sig": false, "md5_digest": "ed1bc26dda1223e5b72176f55a648a5a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 56066, "upload_time": "2019-09-01T12:00:05", "url": "https://files.pythonhosted.org/packages/7d/18/2220f473069469ccb343355e953baf0412cd32c53bafb878cc47be30184f/edc_consent-0.2.34-py3-none-any.whl" } ], "0.2.35": [ { "comment_text": "", "digests": { "md5": "3eaad9d961ae4c229a7d76bb8fe280f8", "sha256": "5befc588270744b001ef09b7a6a86a161b0f82c28277daddff75039ee7cc5f52" }, "downloads": -1, "filename": "edc_consent-0.2.35-py3-none-any.whl", "has_sig": false, "md5_digest": "3eaad9d961ae4c229a7d76bb8fe280f8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 56098, "upload_time": "2019-09-26T05:49:10", "url": "https://files.pythonhosted.org/packages/58/d1/5dd28bc1f82c5c5fa1bbac531d130e58032db78081289341ff76951eddf9/edc_consent-0.2.35-py3-none-any.whl" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "3e35b18c071d83d1ec5161ba22d164ce", "sha256": "d77c6be29e416afe18aa3f02cd02f513f177af22e03cb6b09ef4ddcde1b24c68" }, "downloads": -1, "filename": "edc-consent-0.2.9.macosx-10.13-x86_64.tar.gz", "has_sig": false, "md5_digest": "3e35b18c071d83d1ec5161ba22d164ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67276, "upload_time": "2018-07-20T11:28:28", "url": "https://files.pythonhosted.org/packages/bc/f6/c8c3fc5a0593b3cd65d53c20b597748b6cc053cb6b72c1fac55867e2151b/edc-consent-0.2.9.macosx-10.13-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "7a429d2eed4706c913c32d35dcd8b275", "sha256": "fc09e244f219a78fb900e4f86fb72165e71f0afc60d361bd017e998da183fa8b" }, "downloads": -1, "filename": "edc_consent-0.2.9-py3-none-any.whl", "has_sig": false, "md5_digest": "7a429d2eed4706c913c32d35dcd8b275", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44885, "upload_time": "2018-07-20T11:28:26", "url": "https://files.pythonhosted.org/packages/30/c6/e16eccda091d6a52ca75b427db7ce2ea161ad9e389957508e0e4cd4f3a2e/edc_consent-0.2.9-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3eaad9d961ae4c229a7d76bb8fe280f8", "sha256": "5befc588270744b001ef09b7a6a86a161b0f82c28277daddff75039ee7cc5f52" }, "downloads": -1, "filename": "edc_consent-0.2.35-py3-none-any.whl", "has_sig": false, "md5_digest": "3eaad9d961ae4c229a7d76bb8fe280f8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 56098, "upload_time": "2019-09-26T05:49:10", "url": "https://files.pythonhosted.org/packages/58/d1/5dd28bc1f82c5c5fa1bbac531d130e58032db78081289341ff76951eddf9/edc_consent-0.2.35-py3-none-any.whl" } ] }