crispy-forms-gds


Namecrispy-forms-gds JSON
Version 2.0.0 PyPI version JSON
download
home_pageNone
SummaryDjango application to add 'django-crispy-forms' layout objects for the GOV.UK Design System.
upload_time2024-12-30 12:55:46
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseThe MIT License (MIT) Copyright (c) 2024 Wildfish Ltd. <developers@wildfish.com> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords django django-crispy-forms gov.uk design system
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ================
Crispy Forms GDS
================

A `GOV.UK Design System`_ template pack for `Django Crispy Forms`_, for simple and
powerful form generation which is compliant with GDS usability and accessibility
guidelines.

.. _Django Crispy Forms: https://github.com/maraujop/django-crispy-forms/
.. _GOV.UK Design System: https://design-system.service.gov.uk/

.. image:: https://codecov.io/gh/wildfish/crispy-forms-gds/branch/master/graph/badge.svg
  :target: https://codecov.io/gh/wildfish/crispy-forms-gds

.. image:: https://badge.fury.io/py/crispy-forms-gds.svg
    :target: https://pypi.python.org/pypi/crispy-forms-gds/

.. image:: https://img.shields.io/pypi/pyversions/crispy-forms-gds.svg
    :target: https://pypi.python.org/pypi/crispy-forms-gds/


Compatibility
=============
+------------------+--------------------------+---------------------+------------------+
| crispy-forms-gds | Government Design System | django-crispy-forms | django           |
+------------------+--------------------------+---------------------+------------------+
| 0.x              | 3.5                      | 1.x - 2.2           | 3.2 LTS, 4.2 LTS |
+------------------+--------------------------+---------------------+------------------+
| 1.x              | 5.0 - 5.2                | 2.0 - 2.3           | 4.2 LTS          |
+------------------+--------------------------+---------------------+------------------+
| 2.x              | 5.0 - 5.2                | 2.0 - 2.3           | 5.0, 5.1         |
+------------------+--------------------------+---------------------+------------------+

Both Version 1.x and 2.x are still in development.

The Government Design System versions will be updated as each release is tested.

Quickstart
==========

This is a minimal howto without options or details - see the
`crispy-forms-gds documentation <http://crispy-forms-gds.readthedocs.io/>`_ for full
instructions for installation and usage.

Install using pip::

    pip install crispy-forms-gds

Add to installed apps, with settings to tell django-crispy-forms to use this theme::

    INSTALLED_APPS = [
      ...
      'crispy_forms',
      'crispy_forms_gds',
    ]
    CRISPY_ALLOWED_TEMPLATE_PACKS = ["gds"]
    CRISPY_TEMPLATE_PACK = "gds"


Build a regular crispy form using layout objects from ``crispy_forms_gds``::

    from django import forms

    from crispy_forms_gds.helper import FormHelper
    from crispy_forms_gds.layout import Submit


    class SimpleForm(forms.Form):

        name = forms.CharField(
            label="Name",
            help_text="Your full name.",
            widget=forms.TextInput(),
            error_messages={
                "required": "Enter your name as it appears on your passport"
            }
        )

        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.helper = FormHelper()
            self.helper.add_input(Submit("submit", "Submit"))


Render the form in your templates as normal::

    {% load crispy_forms_tags %}
    {% crispy form %}


Examples
========

The template pack supports all the basic components listed in the `GOV.UK Design
System`_. Here are some examples taken from the demo site included in the project.

Accordion
---------

.. _Accordion: https://design-system.service.gov.uk/components/accordion/

Layout components, such as the `Accordion`_ let you generate complex forms with
multiple sections::

    from django import forms

    from crispy_forms_gds.helper import FormHelper
    from crispy_forms_gds.layout import HTML, Accordion, AccordionSection, Layout


    class AccordionForm(forms.Form):
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.helper = FormHelper()
            self.helper.layout = Layout(
                Accordion(
                    AccordionSection(
                        "Writing well for the web",
                        HTML.p("This is the content for Writing well for the web."),
                        summary="An introduction to clear and concise writing.",
                    ),
                    AccordionSection(
                        "Writing well for specialists",
                        HTML.p("This is the content for Writing well for specialists."),
                    ),
                    AccordionSection(
                        "Know your audience",
                        HTML.p("This is the content for Know your audience."),
                    ),
                    AccordionSection(
                        "How people read",
                        HTML.p("This is the content for How people read."),
                    ),
                )
            )

.. image:: docs/screenshots/accordion.png

Radio Buttons
-------------

.. _Radio: https://design-system.service.gov.uk/components/radios/
.. _Select: https://design-system.service.gov.uk/components/select/

ChoiceFields can be displayed as `Select`_ or `Radio`_ components. Radio buttons also support
Design System features such as sizing, hinting and dividers::

    from django import forms

    from crispy_forms_gds.choices import Choice
    from crispy_forms_gds.helper import FormHelper
    from crispy_forms_gds.layout import Button, Field, Layout, Size


    class RadiosForm(forms.Form):

        name = forms.ChoiceField(
            choices=(("yes", "Yes"), ("no", "No")),
            widget=forms.RadioSelect,
            label="Have you changed your name?",
            help_text="This includes changing your last name or spelling your name differently.",
            error_messages={"required": "Enter whether your name has changed"},
        )

        METHODS = (
            Choice("email", "Email", hint="Do not use an email address from work"),
            Choice("phone", "Phone", divider="Or"),
            Choice("text", "Text message"),
        )

        method = forms.ChoiceField(
            choices=METHODS,
            widget=forms.RadioSelect,
            label="How would you like to be contacted?",
            help_text="Select the options that is best for you.",
            error_messages={
                "required": "Select the best way to send a confirmation message"
            },
        )

        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.helper = FormHelper()
            self.helper.layout = Layout(
                Field.radios("name", legend_size=Size.MEDIUM, legend_tag="h1", inline=True),
                Field.radios("method", legend_size=Size.MEDIUM, small=True),
                Button("submit", "Submit"),
            )

.. image:: docs/screenshots/radio-buttons.png

Validation Errors
-----------------

.. _Error Summary: https://design-system.service.gov.uk/components/error-summary/
.. _Error Message: https://design-system.service.gov.uk/components/error-message/

Forms fully support the `Error Message`_ and `Error Summary`_ components with no
extra effort on your part::

    from django import forms

    from crispy_forms_gds.helper import FormHelper
    from crispy_forms_gds.layout import (
        Button,
        Field,
        Fieldset,
        Fixed,
        Fluid,
        Layout,
        Size,
    )


    class UserForm(forms.Form):

        name = forms.CharField(
            label="Your name",
            help_text="Enter your name as it appears on your passport.",
        )

        email = forms.CharField(
            label="Email",
            help_text="Enter your email address.",
            widget=forms.EmailInput,
        )

        phone = forms.CharField(
            label="Phone",
            help_text="Enter your home or mobile telephone number.",
        )

        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.helper = FormHelper()
            self.helper.label_size = Size.SMALL
            self.helper.layout = Layout(
                Fieldset(
                    Field.text("name"),
                    Field.text("email", field_width=Fluid.TWO_THIRDS),
                    Field.text("phone", field_width=Fixed.TEN),
                ),
                Button("submit", "Submit"),
            )

.. image:: docs/screenshots/validation-errors.png

Demo
====
If you checkout the code from the repository, there is a Django site you can run to see
the forms in action:

.. code-block:: console

    git clone git@github.com:wildfish/crispy-forms-gds.git
    cd crispy-forms-gds

First, create a virtual environment:

.. code-block:: console

    uv venv

Activate it:

.. code-block:: console

    source .venv/bin/activate

Install all the dependencies:

.. code-block:: console

    uv sync

Next, copy and install the precompiled govuk-frontend files in the ``assets``
directory in the project root:

1. Download the pre-compiled files provided at bottom of each `GOV.UK Frontend
release note`_.
2. Unzip the zip file.
3. Copy the files in ``assets/fonts`` to ``assets/fonts``.
4. Copy the files in ``assets/images`` to ``assets/images``.
5. Copy the file, assets/manifest.json to ``assets``.
6. Copy the .css and .css.map files to ``assets/stylesheets``.
7. Copy the .js and .js.map files to ``assets/javascripts``.
8. Edit ``demo/settings.py`` to set ``GDS_VERSION`` to the version you downloaded.

Now, setup and run Django:

.. code-block:: console

    python manage.py migrate
    python manage.py runserver

Open http://localhost:8000/ in your browser to see forms built with `Django Crispy Forms`_
styled using the `GOV.UK Design System`_.

.. _GOV.UK Frontend release note: https://github.com/alphagov/govuk-frontend/releases/latest

Project Information
===================

* Documentation: https://ebird-checklists.readthedocs.io/en/latest/
* Issues: https://github.com/wildfish/crispy-forms-gds/issues
* Repository: https://github.com/wildfish/crispy-forms-gds/

The app is tested with Python 3.10+, and version 1.x officially supports Django
4.2 LTS, and `Django Crispy Forms`_ 2.x. Version 2.x supports Django 5.0, 5.1,
and Django Crispy Forms 2.x. The app simply generates HTML, so it can probably
be used with earlier versions of Django and Django Crispy Forms.

Crispy Forms GDS is released under the terms of the `MIT`_ license.

.. _MIT: https://opensource.org/licenses/MIT

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "crispy-forms-gds",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "Django, django-crispy-forms, gov.uk, design system",
    "author": null,
    "author_email": "Wildfish <developers@wildfish.com>",
    "download_url": "https://files.pythonhosted.org/packages/30/b4/e9266ab36a4e1ba80fc5c9103371690cb25322baf4c45845c48ba539e96a/crispy_forms_gds-2.0.0.tar.gz",
    "platform": null,
    "description": "================\nCrispy Forms GDS\n================\n\nA `GOV.UK Design System`_ template pack for `Django Crispy Forms`_, for simple and\npowerful form generation which is compliant with GDS usability and accessibility\nguidelines.\n\n.. _Django Crispy Forms: https://github.com/maraujop/django-crispy-forms/\n.. _GOV.UK Design System: https://design-system.service.gov.uk/\n\n.. image:: https://codecov.io/gh/wildfish/crispy-forms-gds/branch/master/graph/badge.svg\n  :target: https://codecov.io/gh/wildfish/crispy-forms-gds\n\n.. image:: https://badge.fury.io/py/crispy-forms-gds.svg\n    :target: https://pypi.python.org/pypi/crispy-forms-gds/\n\n.. image:: https://img.shields.io/pypi/pyversions/crispy-forms-gds.svg\n    :target: https://pypi.python.org/pypi/crispy-forms-gds/\n\n\nCompatibility\n=============\n+------------------+--------------------------+---------------------+------------------+\n| crispy-forms-gds | Government Design System | django-crispy-forms | django           |\n+------------------+--------------------------+---------------------+------------------+\n| 0.x              | 3.5                      | 1.x - 2.2           | 3.2 LTS, 4.2 LTS |\n+------------------+--------------------------+---------------------+------------------+\n| 1.x              | 5.0 - 5.2                | 2.0 - 2.3           | 4.2 LTS          |\n+------------------+--------------------------+---------------------+------------------+\n| 2.x              | 5.0 - 5.2                | 2.0 - 2.3           | 5.0, 5.1         |\n+------------------+--------------------------+---------------------+------------------+\n\nBoth Version 1.x and 2.x are still in development.\n\nThe Government Design System versions will be updated as each release is tested.\n\nQuickstart\n==========\n\nThis is a minimal howto without options or details - see the\n`crispy-forms-gds documentation <http://crispy-forms-gds.readthedocs.io/>`_ for full\ninstructions for installation and usage.\n\nInstall using pip::\n\n    pip install crispy-forms-gds\n\nAdd to installed apps, with settings to tell django-crispy-forms to use this theme::\n\n    INSTALLED_APPS = [\n      ...\n      'crispy_forms',\n      'crispy_forms_gds',\n    ]\n    CRISPY_ALLOWED_TEMPLATE_PACKS = [\"gds\"]\n    CRISPY_TEMPLATE_PACK = \"gds\"\n\n\nBuild a regular crispy form using layout objects from ``crispy_forms_gds``::\n\n    from django import forms\n\n    from crispy_forms_gds.helper import FormHelper\n    from crispy_forms_gds.layout import Submit\n\n\n    class SimpleForm(forms.Form):\n\n        name = forms.CharField(\n            label=\"Name\",\n            help_text=\"Your full name.\",\n            widget=forms.TextInput(),\n            error_messages={\n                \"required\": \"Enter your name as it appears on your passport\"\n            }\n        )\n\n        def __init__(self, *args, **kwargs):\n            super().__init__(*args, **kwargs)\n            self.helper = FormHelper()\n            self.helper.add_input(Submit(\"submit\", \"Submit\"))\n\n\nRender the form in your templates as normal::\n\n    {% load crispy_forms_tags %}\n    {% crispy form %}\n\n\nExamples\n========\n\nThe template pack supports all the basic components listed in the `GOV.UK Design\nSystem`_. Here are some examples taken from the demo site included in the project.\n\nAccordion\n---------\n\n.. _Accordion: https://design-system.service.gov.uk/components/accordion/\n\nLayout components, such as the `Accordion`_ let you generate complex forms with\nmultiple sections::\n\n    from django import forms\n\n    from crispy_forms_gds.helper import FormHelper\n    from crispy_forms_gds.layout import HTML, Accordion, AccordionSection, Layout\n\n\n    class AccordionForm(forms.Form):\n        def __init__(self, *args, **kwargs):\n            super().__init__(*args, **kwargs)\n            self.helper = FormHelper()\n            self.helper.layout = Layout(\n                Accordion(\n                    AccordionSection(\n                        \"Writing well for the web\",\n                        HTML.p(\"This is the content for Writing well for the web.\"),\n                        summary=\"An introduction to clear and concise writing.\",\n                    ),\n                    AccordionSection(\n                        \"Writing well for specialists\",\n                        HTML.p(\"This is the content for Writing well for specialists.\"),\n                    ),\n                    AccordionSection(\n                        \"Know your audience\",\n                        HTML.p(\"This is the content for Know your audience.\"),\n                    ),\n                    AccordionSection(\n                        \"How people read\",\n                        HTML.p(\"This is the content for How people read.\"),\n                    ),\n                )\n            )\n\n.. image:: docs/screenshots/accordion.png\n\nRadio Buttons\n-------------\n\n.. _Radio: https://design-system.service.gov.uk/components/radios/\n.. _Select: https://design-system.service.gov.uk/components/select/\n\nChoiceFields can be displayed as `Select`_ or `Radio`_ components. Radio buttons also support\nDesign System features such as sizing, hinting and dividers::\n\n    from django import forms\n\n    from crispy_forms_gds.choices import Choice\n    from crispy_forms_gds.helper import FormHelper\n    from crispy_forms_gds.layout import Button, Field, Layout, Size\n\n\n    class RadiosForm(forms.Form):\n\n        name = forms.ChoiceField(\n            choices=((\"yes\", \"Yes\"), (\"no\", \"No\")),\n            widget=forms.RadioSelect,\n            label=\"Have you changed your name?\",\n            help_text=\"This includes changing your last name or spelling your name differently.\",\n            error_messages={\"required\": \"Enter whether your name has changed\"},\n        )\n\n        METHODS = (\n            Choice(\"email\", \"Email\", hint=\"Do not use an email address from work\"),\n            Choice(\"phone\", \"Phone\", divider=\"Or\"),\n            Choice(\"text\", \"Text message\"),\n        )\n\n        method = forms.ChoiceField(\n            choices=METHODS,\n            widget=forms.RadioSelect,\n            label=\"How would you like to be contacted?\",\n            help_text=\"Select the options that is best for you.\",\n            error_messages={\n                \"required\": \"Select the best way to send a confirmation message\"\n            },\n        )\n\n        def __init__(self, *args, **kwargs):\n            super().__init__(*args, **kwargs)\n            self.helper = FormHelper()\n            self.helper.layout = Layout(\n                Field.radios(\"name\", legend_size=Size.MEDIUM, legend_tag=\"h1\", inline=True),\n                Field.radios(\"method\", legend_size=Size.MEDIUM, small=True),\n                Button(\"submit\", \"Submit\"),\n            )\n\n.. image:: docs/screenshots/radio-buttons.png\n\nValidation Errors\n-----------------\n\n.. _Error Summary: https://design-system.service.gov.uk/components/error-summary/\n.. _Error Message: https://design-system.service.gov.uk/components/error-message/\n\nForms fully support the `Error Message`_ and `Error Summary`_ components with no\nextra effort on your part::\n\n    from django import forms\n\n    from crispy_forms_gds.helper import FormHelper\n    from crispy_forms_gds.layout import (\n        Button,\n        Field,\n        Fieldset,\n        Fixed,\n        Fluid,\n        Layout,\n        Size,\n    )\n\n\n    class UserForm(forms.Form):\n\n        name = forms.CharField(\n            label=\"Your name\",\n            help_text=\"Enter your name as it appears on your passport.\",\n        )\n\n        email = forms.CharField(\n            label=\"Email\",\n            help_text=\"Enter your email address.\",\n            widget=forms.EmailInput,\n        )\n\n        phone = forms.CharField(\n            label=\"Phone\",\n            help_text=\"Enter your home or mobile telephone number.\",\n        )\n\n        def __init__(self, *args, **kwargs):\n            super().__init__(*args, **kwargs)\n            self.helper = FormHelper()\n            self.helper.label_size = Size.SMALL\n            self.helper.layout = Layout(\n                Fieldset(\n                    Field.text(\"name\"),\n                    Field.text(\"email\", field_width=Fluid.TWO_THIRDS),\n                    Field.text(\"phone\", field_width=Fixed.TEN),\n                ),\n                Button(\"submit\", \"Submit\"),\n            )\n\n.. image:: docs/screenshots/validation-errors.png\n\nDemo\n====\nIf you checkout the code from the repository, there is a Django site you can run to see\nthe forms in action:\n\n.. code-block:: console\n\n    git clone git@github.com:wildfish/crispy-forms-gds.git\n    cd crispy-forms-gds\n\nFirst, create a virtual environment:\n\n.. code-block:: console\n\n    uv venv\n\nActivate it:\n\n.. code-block:: console\n\n    source .venv/bin/activate\n\nInstall all the dependencies:\n\n.. code-block:: console\n\n    uv sync\n\nNext, copy and install the precompiled govuk-frontend files in the ``assets``\ndirectory in the project root:\n\n1. Download the pre-compiled files provided at bottom of each `GOV.UK Frontend\nrelease note`_.\n2. Unzip the zip file.\n3. Copy the files in ``assets/fonts`` to ``assets/fonts``.\n4. Copy the files in ``assets/images`` to ``assets/images``.\n5. Copy the file, assets/manifest.json to ``assets``.\n6. Copy the .css and .css.map files to ``assets/stylesheets``.\n7. Copy the .js and .js.map files to ``assets/javascripts``.\n8. Edit ``demo/settings.py`` to set ``GDS_VERSION`` to the version you downloaded.\n\nNow, setup and run Django:\n\n.. code-block:: console\n\n    python manage.py migrate\n    python manage.py runserver\n\nOpen http://localhost:8000/ in your browser to see forms built with `Django Crispy Forms`_\nstyled using the `GOV.UK Design System`_.\n\n.. _GOV.UK Frontend release note: https://github.com/alphagov/govuk-frontend/releases/latest\n\nProject Information\n===================\n\n* Documentation: https://ebird-checklists.readthedocs.io/en/latest/\n* Issues: https://github.com/wildfish/crispy-forms-gds/issues\n* Repository: https://github.com/wildfish/crispy-forms-gds/\n\nThe app is tested with Python 3.10+, and version 1.x officially supports Django\n4.2 LTS, and `Django Crispy Forms`_ 2.x. Version 2.x supports Django 5.0, 5.1,\nand Django Crispy Forms 2.x. The app simply generates HTML, so it can probably\nbe used with earlier versions of Django and Django Crispy Forms.\n\nCrispy Forms GDS is released under the terms of the `MIT`_ license.\n\n.. _MIT: https://opensource.org/licenses/MIT\n",
    "bugtrack_url": null,
    "license": "The MIT License (MIT)  Copyright (c) 2024 Wildfish Ltd. <developers@wildfish.com>  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ",
    "summary": "Django application to add 'django-crispy-forms' layout objects for the GOV.UK Design System.",
    "version": "2.0.0",
    "project_urls": null,
    "split_keywords": [
        "django",
        " django-crispy-forms",
        " gov.uk",
        " design system"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ce3bc601423f80e8cca770d0562be2c8c42af702d1241164ab02615534e2983e",
                "md5": "480169b25bc05461702b95463448dbef",
                "sha256": "a03a259983847d5e173c66ed43de94462aeaff00e1f85a49c044cb90ee12af69"
            },
            "downloads": -1,
            "filename": "crispy_forms_gds-2.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "480169b25bc05461702b95463448dbef",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 43632,
            "upload_time": "2024-12-30T12:55:44",
            "upload_time_iso_8601": "2024-12-30T12:55:44.110759Z",
            "url": "https://files.pythonhosted.org/packages/ce/3b/c601423f80e8cca770d0562be2c8c42af702d1241164ab02615534e2983e/crispy_forms_gds-2.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "30b4e9266ab36a4e1ba80fc5c9103371690cb25322baf4c45845c48ba539e96a",
                "md5": "1f514b519977187571b492942d1a0d01",
                "sha256": "6d273461d170606174256b7f9590bda1d21a0ca1a75a2bcb265cfaa0ec4ec36f"
            },
            "downloads": -1,
            "filename": "crispy_forms_gds-2.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "1f514b519977187571b492942d1a0d01",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 36291,
            "upload_time": "2024-12-30T12:55:46",
            "upload_time_iso_8601": "2024-12-30T12:55:46.867773Z",
            "url": "https://files.pythonhosted.org/packages/30/b4/e9266ab36a4e1ba80fc5c9103371690cb25322baf4c45845c48ba539e96a/crispy_forms_gds-2.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-30 12:55:46",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "crispy-forms-gds"
}
        
Elapsed time: 0.40637s