diff --git a/app/apps.py b/app/apps.py
index a8afd70a..b3c7396d 100644
--- a/app/apps.py
+++ b/app/apps.py
@@ -17,6 +17,10 @@ def ready(self):
self.configure_posthog()
self.configure_shopify()
+ from .slippers_autoload_components import register
+
+ register()
+
def configure_shopify(self):
stripe.api_key = djstripe.settings.djstripe_settings.STRIPE_SECRET_KEY
stripe.api_version = "2020-08-27"
diff --git a/app/forms.py b/app/forms.py
index e84eb238..b38c5c58 100644
--- a/app/forms.py
+++ b/app/forms.py
@@ -578,7 +578,7 @@ def update_subscription(self, *args, **kwargs):
# Create a form with a field for user_id, donation_amount, and on submission add a donation product to the subscription
class DonationForm(forms.Form):
- user_id = forms.IntegerField(widget=forms.HiddenInput)
+ user_id = forms.IntegerField(widget=forms.HiddenInput, required=False)
donation_amount = forms.DecimalField(
min_value=0,
max_value=1000,
@@ -714,3 +714,18 @@ def process_request(self, *args, **kwargs):
else None,
},
)
+
+
+### V2 flow forms
+
+
+class SelectDeliveriesForm(forms.Form):
+ delivery_plan_id = forms.CharField(widget=forms.HiddenInput)
+
+
+class SelectSyllabusForm(forms.Form):
+ syllabus_id = forms.CharField(widget=forms.HiddenInput)
+
+
+class SelectPaymentPlanForm(forms.Form):
+ payment_plan_id = forms.CharField(widget=forms.HiddenInput)
diff --git a/app/management/commands/create_gift_sub.py b/app/management/commands/create_gift_sub.py
index 9c7c15e3..afb2c86c 100644
--- a/app/management/commands/create_gift_sub.py
+++ b/app/management/commands/create_gift_sub.py
@@ -6,7 +6,7 @@
from django.core.management.base import BaseCommand
from django.urls import reverse
from djmoney.money import Money
-from wagtail.core.models import Page
+from wagtail.models import Page
from app.models import MembershipPlanPage, MembershipPlanPrice, User
from app.utils.python import uid
diff --git a/app/migrations/0019_alter_homepage_layout.py b/app/migrations/0019_alter_homepage_layout.py
index 68c86f62..64eb586f 100644
--- a/app/migrations/0019_alter_homepage_layout.py
+++ b/app/migrations/0019_alter_homepage_layout.py
@@ -49,7 +49,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0027_alter_homepage_layout.py b/app/migrations/0027_alter_homepage_layout.py
index 45ebac1d..e6c135e5 100644
--- a/app/migrations/0027_alter_homepage_layout.py
+++ b/app/migrations/0027_alter_homepage_layout.py
@@ -44,7 +44,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0031_remove_informationpage_body_informationpage_layout_and_more.py b/app/migrations/0031_remove_informationpage_body_informationpage_layout_and_more.py
index b2fc4198..700d4098 100644
--- a/app/migrations/0031_remove_informationpage_body_informationpage_layout_and_more.py
+++ b/app/migrations/0031_remove_informationpage_body_informationpage_layout_and_more.py
@@ -49,7 +49,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -977,7 +977,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0033_alter_homepage_layout_alter_informationpage_layout.py b/app/migrations/0033_alter_homepage_layout_alter_informationpage_layout.py
index a70c73b8..f88d922f 100644
--- a/app/migrations/0033_alter_homepage_layout_alter_informationpage_layout.py
+++ b/app/migrations/0033_alter_homepage_layout_alter_informationpage_layout.py
@@ -44,7 +44,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -1242,7 +1242,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0034_alter_homepage_layout_alter_informationpage_layout.py b/app/migrations/0034_alter_homepage_layout_alter_informationpage_layout.py
index 228c1d7e..aef13b43 100644
--- a/app/migrations/0034_alter_homepage_layout_alter_informationpage_layout.py
+++ b/app/migrations/0034_alter_homepage_layout_alter_informationpage_layout.py
@@ -44,7 +44,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -367,7 +367,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0040_remove_bookindexpage_body_bookindexpage_layout.py b/app/migrations/0040_remove_bookindexpage_body_bookindexpage_layout.py
index 70f0e720..136813d3 100644
--- a/app/migrations/0040_remove_bookindexpage_body_bookindexpage_layout.py
+++ b/app/migrations/0040_remove_bookindexpage_body_bookindexpage_layout.py
@@ -48,7 +48,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0041_user_gdpr_email_consent_alter_bookindexpage_layout_and_more.py b/app/migrations/0041_user_gdpr_email_consent_alter_bookindexpage_layout_and_more.py
index 55555966..ef0a32b7 100644
--- a/app/migrations/0041_user_gdpr_email_consent_alter_bookindexpage_layout_and_more.py
+++ b/app/migrations/0041_user_gdpr_email_consent_alter_bookindexpage_layout_and_more.py
@@ -54,7 +54,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -896,7 +896,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -1738,7 +1738,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0042_alter_bookindexpage_layout_alter_homepage_layout_and_more.py b/app/migrations/0042_alter_bookindexpage_layout_alter_homepage_layout_and_more.py
index cee8851a..6b820de6 100644
--- a/app/migrations/0042_alter_bookindexpage_layout_alter_homepage_layout_and_more.py
+++ b/app/migrations/0042_alter_bookindexpage_layout_alter_homepage_layout_and_more.py
@@ -46,7 +46,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -888,7 +888,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -1730,7 +1730,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -2583,7 +2583,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0044_membershipplanpage_layout.py b/app/migrations/0044_membershipplanpage_layout.py
index ad45cd9e..56ae8bcf 100644
--- a/app/migrations/0044_membershipplanpage_layout.py
+++ b/app/migrations/0044_membershipplanpage_layout.py
@@ -44,7 +44,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0045_alter_membershipplanpage_layout.py b/app/migrations/0045_alter_membershipplanpage_layout.py
index 8c9b4391..12f68fac 100644
--- a/app/migrations/0045_alter_membershipplanpage_layout.py
+++ b/app/migrations/0045_alter_membershipplanpage_layout.py
@@ -44,7 +44,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0047_bookpage_layout_alter_membershipplanpage_layout.py b/app/migrations/0047_bookpage_layout_alter_membershipplanpage_layout.py
index 4cc447fe..7a96875c 100644
--- a/app/migrations/0047_bookpage_layout_alter_membershipplanpage_layout.py
+++ b/app/migrations/0047_bookpage_layout_alter_membershipplanpage_layout.py
@@ -44,7 +44,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -886,7 +886,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0048_alter_blogpage_body_alter_bookindexpage_layout_and_more.py b/app/migrations/0048_alter_blogpage_body_alter_bookindexpage_layout_and_more.py
index 1a0a7da2..35580d4b 100644
--- a/app/migrations/0048_alter_blogpage_body_alter_bookindexpage_layout_and_more.py
+++ b/app/migrations/0048_alter_blogpage_body_alter_bookindexpage_layout_and_more.py
@@ -65,7 +65,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -915,7 +915,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -1772,7 +1772,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -2622,7 +2622,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -3472,7 +3472,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -4322,7 +4322,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0050_alter_bookpage_options_alter_bookindexpage_layout_and_more.py b/app/migrations/0050_alter_bookpage_options_alter_bookindexpage_layout_and_more.py
index 4e03282e..352d4561 100644
--- a/app/migrations/0050_alter_bookpage_options_alter_bookindexpage_layout_and_more.py
+++ b/app/migrations/0050_alter_bookpage_options_alter_bookindexpage_layout_and_more.py
@@ -48,7 +48,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -908,7 +908,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -1768,7 +1768,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -2628,7 +2628,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -3488,7 +3488,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -4348,7 +4348,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -5222,7 +5222,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0054_circleevent_alter_bookindexpage_layout_and_more.py b/app/migrations/0054_circleevent_alter_bookindexpage_layout_and_more.py
index 7dee0fac..9d72ecb5 100644
--- a/app/migrations/0054_circleevent_alter_bookindexpage_layout_and_more.py
+++ b/app/migrations/0054_circleevent_alter_bookindexpage_layout_and_more.py
@@ -94,7 +94,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -982,7 +982,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -1870,7 +1870,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -2758,7 +2758,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -3646,7 +3646,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -4551,7 +4551,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -5439,7 +5439,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0059_alter_bookindexpage_layout_alter_bookpage_layout_and_more.py b/app/migrations/0059_alter_bookindexpage_layout_alter_bookpage_layout_and_more.py
index 41661da7..89deda38 100644
--- a/app/migrations/0059_alter_bookindexpage_layout_alter_bookpage_layout_and_more.py
+++ b/app/migrations/0059_alter_bookindexpage_layout_alter_bookpage_layout_and_more.py
@@ -44,7 +44,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -1029,7 +1029,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -2014,7 +2014,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -2999,7 +2999,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -3984,7 +3984,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -4986,7 +4986,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -5971,7 +5971,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -7779,7 +7779,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0063_alter_bookindexpage_layout_alter_bookpage_layout_and_more.py b/app/migrations/0063_alter_bookindexpage_layout_alter_bookpage_layout_and_more.py
index d939c544..2a968b24 100644
--- a/app/migrations/0063_alter_bookindexpage_layout_alter_bookpage_layout_and_more.py
+++ b/app/migrations/0063_alter_bookindexpage_layout_alter_bookpage_layout_and_more.py
@@ -44,7 +44,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -1030,7 +1030,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -2016,7 +2016,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -3002,7 +3002,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -3988,7 +3988,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -4991,7 +4991,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -5977,7 +5977,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
@@ -6966,7 +6966,7 @@ class Migration(migrations.Migration):
(
"plans",
wagtail.blocks.ListBlock(
- app.models.wagtail.PlanBlock
+ app.models.blocks.PlanBlock
),
),
]
diff --git a/app/migrations/0069_membershipplanpage_benefits_and_more.py b/app/migrations/0069_membershipplanpage_benefits_and_more.py
new file mode 100644
index 00000000..2bdf9950
--- /dev/null
+++ b/app/migrations/0069_membershipplanpage_benefits_and_more.py
@@ -0,0 +1,115 @@
+# Generated by Django 4.0.8 on 2023-11-22 14:58
+
+import django.contrib.postgres.fields
+import django.db.models.deletion
+import modelcluster.fields
+import wagtail.fields
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("wagtailcore", "0069_log_entry_jsonfield"),
+ ("app", "0068_bookpage_authors_bookpage_forward_by_and_more"),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name="membershipplanpage",
+ name="benefits",
+ field=django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(blank=True, max_length=100),
+ default=list,
+ help_text="List of pithy beneficial features of this plan",
+ size=None,
+ ),
+ preserve_default=False,
+ ),
+ migrations.AddField(
+ model_name="membershipplanpage",
+ name="display_in_quiz_flow",
+ field=models.BooleanField(default=False),
+ ),
+ migrations.AddField(
+ model_name="membershipplanprice",
+ name="benefits",
+ field=django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(blank=True, max_length=100),
+ default=list,
+ help_text="List of pithy beneficial features of this plan",
+ size=None,
+ ),
+ preserve_default=False,
+ ),
+ migrations.AddField(
+ model_name="membershipplanprice",
+ name="title",
+ field=models.CharField(blank=True, max_length=150, null=True),
+ ),
+ migrations.AlterField(
+ model_name="membershipplanprice",
+ name="products",
+ field=modelcluster.fields.ParentalManyToManyField(
+ blank=True,
+ help_text="(Not used in the new flow). The stripe product that the user will be subscribed to. If multiple products are set here, then the user will be asked to pick which one they want, e.g. Classic or Contemporary books.",
+ to="app.lbcproduct",
+ ),
+ ),
+ migrations.CreateModel(
+ name="SyllabusPage",
+ fields=[
+ (
+ "page_ptr",
+ models.OneToOneField(
+ auto_created=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ parent_link=True,
+ primary_key=True,
+ serialize=False,
+ to="wagtailcore.page",
+ ),
+ ),
+ (
+ "sort_order",
+ models.IntegerField(blank=True, editable=False, null=True),
+ ),
+ ("description", wagtail.fields.RichTextField(blank=True, null=True)),
+ (
+ "book_types",
+ models.CharField(
+ choices=[
+ ("classic", "classic"),
+ ("contemporary", "contemporary"),
+ ("all-books", "all-books"),
+ ],
+ default="all-books",
+ help_text="Used to display relevant books",
+ max_length=100,
+ ),
+ ),
+ (
+ "stripe_product",
+ models.ForeignKey(
+ help_text="The stripe product that the user will be subscribed to.",
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="syllabi",
+ to="app.lbcproduct",
+ ),
+ ),
+ ],
+ options={
+ "abstract": False,
+ },
+ bases=("wagtailcore.page", models.Model),
+ ),
+ migrations.AddField(
+ model_name="membershipplanpage",
+ name="syllabi",
+ field=modelcluster.fields.ParentalManyToManyField(
+ help_text="The syllabi available for this plan",
+ related_name="plans",
+ to="app.syllabuspage",
+ ),
+ ),
+ ]
diff --git a/app/migrations/0070_alter_membershipplanpage_benefits_and_more.py b/app/migrations/0070_alter_membershipplanpage_benefits_and_more.py
new file mode 100644
index 00000000..b163ed91
--- /dev/null
+++ b/app/migrations/0070_alter_membershipplanpage_benefits_and_more.py
@@ -0,0 +1,47 @@
+# Generated by Django 4.0.8 on 2023-11-22 15:25
+
+import wagtail.fields
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("app", "0069_membershipplanpage_benefits_and_more"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="membershipplanpage",
+ name="benefits",
+ field=wagtail.fields.RichTextField(
+ blank=True,
+ help_text="List of pithy beneficial features of this plan",
+ null=True,
+ ),
+ ),
+ migrations.AlterField(
+ model_name="membershipplanprice",
+ name="benefits",
+ field=wagtail.fields.RichTextField(
+ blank=True,
+ help_text="List of pithy beneficial features of this plan",
+ null=True,
+ ),
+ ),
+ migrations.AlterField(
+ model_name="syllabuspage",
+ name="book_types",
+ field=models.CharField(
+ blank=True,
+ choices=[
+ ("classic", "classic"),
+ ("contemporary", "contemporary"),
+ ("all-books", "all-books"),
+ ],
+ default="all-books",
+ help_text="Used to display relevant books",
+ max_length=100,
+ ),
+ ),
+ ]
diff --git a/app/migrations/0071_syllabuspage_layout_and_more.py b/app/migrations/0071_syllabuspage_layout_and_more.py
new file mode 100644
index 00000000..369b2b11
--- /dev/null
+++ b/app/migrations/0071_syllabuspage_layout_and_more.py
@@ -0,0 +1,2023 @@
+# Generated by Django 4.0.8 on 2023-11-24 17:16
+
+import modelcluster.fields
+import wagtail.blocks
+import wagtail.fields
+import wagtail.images.blocks
+from django.db import migrations, models
+
+import app.models.blocks
+import app.models.wagtail
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("app", "0070_alter_membershipplanpage_benefits_and_more"),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name="syllabuspage",
+ name="layout",
+ field=wagtail.fields.StreamField(
+ [
+ (
+ "membership_options",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "heading",
+ wagtail.blocks.CharBlock(
+ default="Choose your plan",
+ form_classname="full title",
+ required=False,
+ ),
+ ),
+ (
+ "description",
+ wagtail.blocks.RichTextBlock(
+ default="
Your subscription will begin with the most recently published book in your chosen collection.
",
+ required=False,
+ ),
+ ),
+ (
+ "plans",
+ wagtail.blocks.ListBlock(
+ app.models.blocks.PlanBlock
+ ),
+ ),
+ ]
+ ),
+ ),
+ ("image", wagtail.images.blocks.ImageChooserBlock()),
+ (
+ "featured_book",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "book",
+ wagtail.blocks.PageChooserBlock(
+ can_choose_root=False,
+ page_type=["app.BookPage"],
+ ),
+ ),
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("bg-black text-white", "black"),
+ ("bg-white", "white"),
+ ("tw-bg-yellow", "yellow"),
+ ("tw-bg-teal", "teal"),
+ ("tw-bg-darkgreen", "darkgreen"),
+ ("tw-bg-lilacgrey", "lilacgrey"),
+ ("tw-bg-coral", "coral"),
+ ("tw-bg-purple", "purple"),
+ ("tw-bg-magenta", "magenta"),
+ ("tw-bg-pink", "pink"),
+ ("tw-bg-lightgreen", "lightgreen"),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "promotion_label",
+ wagtail.blocks.CharBlock(
+ help_text="Label that highlights this product",
+ required=False,
+ ),
+ ),
+ (
+ "description",
+ wagtail.blocks.RichTextBlock(
+ help_text="This will replace the book's default description. You can use this to provide a more contextualised description of the book",
+ required=False,
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "book_selection",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "column_width",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("small", "small"),
+ ("medium", "medium"),
+ ("large", "large"),
+ ]
+ ),
+ ),
+ (
+ "books",
+ wagtail.blocks.ListBlock(
+ wagtail.blocks.PageChooserBlock(
+ can_choose_root=False,
+ page_type=["app.BookPage"],
+ )
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "recently_published_books",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "column_width",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("small", "small"),
+ ("medium", "medium"),
+ ("large", "large"),
+ ]
+ ),
+ ),
+ (
+ "max_books",
+ wagtail.blocks.IntegerBlock(
+ default=4,
+ help_text="How many books should show up?",
+ ),
+ ),
+ (
+ "type",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("classic", "classic"),
+ ("contemporary", "contemporary"),
+ ("all-books", "all-books"),
+ ]
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "featured_product",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "product",
+ wagtail.blocks.PageChooserBlock(
+ can_choose_root=False,
+ page_type=["app.MerchandisePage"],
+ ),
+ ),
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("bg-black text-white", "black"),
+ ("bg-white", "white"),
+ ("tw-bg-yellow", "yellow"),
+ ("tw-bg-teal", "teal"),
+ ("tw-bg-darkgreen", "darkgreen"),
+ ("tw-bg-lilacgrey", "lilacgrey"),
+ ("tw-bg-coral", "coral"),
+ ("tw-bg-purple", "purple"),
+ ("tw-bg-magenta", "magenta"),
+ ("tw-bg-pink", "pink"),
+ ("tw-bg-lightgreen", "lightgreen"),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "promotion_label",
+ wagtail.blocks.CharBlock(
+ help_text="Label that highlights this product",
+ required=False,
+ ),
+ ),
+ (
+ "description",
+ wagtail.blocks.RichTextBlock(
+ help_text="This will replace the product's default description. You can use this to provide a more contextualised description of the product",
+ required=False,
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "product_selection",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "column_width",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("small", "small"),
+ ("medium", "medium"),
+ ("large", "large"),
+ ]
+ ),
+ ),
+ (
+ "products",
+ wagtail.blocks.ListBlock(
+ wagtail.blocks.PageChooserBlock(
+ can_choose_root=False,
+ page_type=["app.MerchandisePage"],
+ )
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "full_product_list",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "column_width",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("small", "small"),
+ ("medium", "medium"),
+ ("large", "large"),
+ ]
+ ),
+ ),
+ (
+ "max_products",
+ wagtail.blocks.IntegerBlock(
+ default=10,
+ help_text="How many products should show up?",
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "hero_text",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "heading",
+ wagtail.blocks.CharBlock(
+ form_classname="full title", max_length=250
+ ),
+ ),
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("bg-black text-white", "black"),
+ ("bg-white", "white"),
+ ("tw-bg-yellow", "yellow"),
+ ("tw-bg-teal", "teal"),
+ ("tw-bg-darkgreen", "darkgreen"),
+ ("tw-bg-lilacgrey", "lilacgrey"),
+ ("tw-bg-coral", "coral"),
+ ("tw-bg-purple", "purple"),
+ ("tw-bg-magenta", "magenta"),
+ ("tw-bg-pink", "pink"),
+ ("tw-bg-lightgreen", "lightgreen"),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "button",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "text",
+ wagtail.blocks.CharBlock(
+ max_length=100, required=False
+ ),
+ ),
+ (
+ "page",
+ wagtail.blocks.PageChooserBlock(
+ help_text="Pick a page or specify a URL",
+ required=False,
+ ),
+ ),
+ (
+ "href",
+ wagtail.blocks.URLBlock(
+ help_text="Pick a page or specify a URL",
+ label="URL",
+ required=False,
+ ),
+ ),
+ (
+ "size",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("sm", "small"),
+ ("md", "medium"),
+ ("lg", "large"),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "style",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "btn-outline-dark",
+ "outlined",
+ ),
+ (
+ "btn-dark text-yellow",
+ "filled",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ ]
+ ),
+ ),
+ ("heading", wagtail.blocks.CharBlock(form_classname="full title")),
+ (
+ "richtext",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "text",
+ wagtail.blocks.RichTextBlock(
+ features=[
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "bold",
+ "italic",
+ "link",
+ "ol",
+ "ul",
+ "hr",
+ "link",
+ "document-link",
+ "image",
+ "embed",
+ "blockquote",
+ ],
+ form_classname="full",
+ ),
+ ),
+ (
+ "alignment",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("left", "left"),
+ ("center", "center"),
+ ("right", "right"),
+ ],
+ help_text="Doesn't apply when used inside a column.",
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "list_of_heading_image_text",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "column_width",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("small", "small"),
+ ("medium", "medium"),
+ ("large", "large"),
+ ]
+ ),
+ ),
+ (
+ "items",
+ wagtail.blocks.ListBlock(
+ app.models.blocks.ListItemBlock
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "single_column",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("bg-black text-white", "black"),
+ ("bg-white", "white"),
+ ("tw-bg-yellow", "yellow"),
+ ("tw-bg-teal", "teal"),
+ ("tw-bg-darkgreen", "darkgreen"),
+ ("tw-bg-lilacgrey", "lilacgrey"),
+ ("tw-bg-coral", "coral"),
+ ("tw-bg-purple", "purple"),
+ ("tw-bg-magenta", "magenta"),
+ ("tw-bg-pink", "pink"),
+ ("tw-bg-lightgreen", "lightgreen"),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "content",
+ wagtail.blocks.StreamBlock(
+ [
+ (
+ "hero_text",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "heading",
+ wagtail.blocks.CharBlock(
+ form_classname="full title",
+ max_length=250,
+ ),
+ ),
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "bg-black text-white",
+ "black",
+ ),
+ (
+ "bg-white",
+ "white",
+ ),
+ (
+ "tw-bg-yellow",
+ "yellow",
+ ),
+ (
+ "tw-bg-teal",
+ "teal",
+ ),
+ (
+ "tw-bg-darkgreen",
+ "darkgreen",
+ ),
+ (
+ "tw-bg-lilacgrey",
+ "lilacgrey",
+ ),
+ (
+ "tw-bg-coral",
+ "coral",
+ ),
+ (
+ "tw-bg-purple",
+ "purple",
+ ),
+ (
+ "tw-bg-magenta",
+ "magenta",
+ ),
+ (
+ "tw-bg-pink",
+ "pink",
+ ),
+ (
+ "tw-bg-lightgreen",
+ "lightgreen",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "button",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "text",
+ wagtail.blocks.CharBlock(
+ max_length=100,
+ required=False,
+ ),
+ ),
+ (
+ "page",
+ wagtail.blocks.PageChooserBlock(
+ help_text="Pick a page or specify a URL",
+ required=False,
+ ),
+ ),
+ (
+ "href",
+ wagtail.blocks.URLBlock(
+ help_text="Pick a page or specify a URL",
+ label="URL",
+ required=False,
+ ),
+ ),
+ (
+ "size",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "sm",
+ "small",
+ ),
+ (
+ "md",
+ "medium",
+ ),
+ (
+ "lg",
+ "large",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "style",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "btn-outline-dark",
+ "outlined",
+ ),
+ (
+ "btn-dark text-yellow",
+ "filled",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "title_image_caption",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "title",
+ wagtail.blocks.CharBlock(
+ form_classname="full title",
+ max_length=250,
+ ),
+ ),
+ (
+ "image",
+ wagtail.images.blocks.ImageChooserBlock(
+ required=False
+ ),
+ ),
+ (
+ "image_css",
+ wagtail.blocks.CharBlock(
+ max_length=500,
+ required=False,
+ ),
+ ),
+ (
+ "caption",
+ wagtail.blocks.RichTextBlock(
+ max_length=500
+ ),
+ ),
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "bg-black text-white",
+ "black",
+ ),
+ (
+ "bg-white",
+ "white",
+ ),
+ (
+ "tw-bg-yellow",
+ "yellow",
+ ),
+ (
+ "tw-bg-teal",
+ "teal",
+ ),
+ (
+ "tw-bg-darkgreen",
+ "darkgreen",
+ ),
+ (
+ "tw-bg-lilacgrey",
+ "lilacgrey",
+ ),
+ (
+ "tw-bg-coral",
+ "coral",
+ ),
+ (
+ "tw-bg-purple",
+ "purple",
+ ),
+ (
+ "tw-bg-magenta",
+ "magenta",
+ ),
+ (
+ "tw-bg-pink",
+ "pink",
+ ),
+ (
+ "tw-bg-lightgreen",
+ "lightgreen",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "button",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "text",
+ wagtail.blocks.CharBlock(
+ max_length=100,
+ required=False,
+ ),
+ ),
+ (
+ "page",
+ wagtail.blocks.PageChooserBlock(
+ help_text="Pick a page or specify a URL",
+ required=False,
+ ),
+ ),
+ (
+ "href",
+ wagtail.blocks.URLBlock(
+ help_text="Pick a page or specify a URL",
+ label="URL",
+ required=False,
+ ),
+ ),
+ (
+ "size",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "sm",
+ "small",
+ ),
+ (
+ "md",
+ "medium",
+ ),
+ (
+ "lg",
+ "large",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "style",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "btn-outline-dark",
+ "outlined",
+ ),
+ (
+ "btn-dark text-yellow",
+ "filled",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "image",
+ wagtail.images.blocks.ImageChooserBlock(),
+ ),
+ (
+ "single_book",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "book",
+ wagtail.blocks.PageChooserBlock(
+ can_choose_root=False,
+ page_type=[
+ "app.BookPage"
+ ],
+ ),
+ )
+ ]
+ ),
+ ),
+ (
+ "membership_plan",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "plan",
+ wagtail.blocks.PageChooserBlock(
+ can_choose_root=False,
+ page_type=[
+ "app.MembershipPlanPage"
+ ],
+ ),
+ ),
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "bg-black text-white",
+ "black",
+ ),
+ (
+ "bg-white",
+ "white",
+ ),
+ (
+ "tw-bg-yellow",
+ "yellow",
+ ),
+ (
+ "tw-bg-teal",
+ "teal",
+ ),
+ (
+ "tw-bg-darkgreen",
+ "darkgreen",
+ ),
+ (
+ "tw-bg-lilacgrey",
+ "lilacgrey",
+ ),
+ (
+ "tw-bg-coral",
+ "coral",
+ ),
+ (
+ "tw-bg-purple",
+ "purple",
+ ),
+ (
+ "tw-bg-magenta",
+ "magenta",
+ ),
+ (
+ "tw-bg-pink",
+ "pink",
+ ),
+ (
+ "tw-bg-lightgreen",
+ "lightgreen",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "promotion_label",
+ wagtail.blocks.CharBlock(
+ help_text="Label that highlights this product",
+ required=False,
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "richtext",
+ wagtail.blocks.RichTextBlock(
+ features=[
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "bold",
+ "italic",
+ "link",
+ "ol",
+ "ul",
+ "hr",
+ "link",
+ "document-link",
+ "image",
+ "embed",
+ "blockquote",
+ ]
+ ),
+ ),
+ (
+ "button",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "text",
+ wagtail.blocks.CharBlock(
+ max_length=100,
+ required=False,
+ ),
+ ),
+ (
+ "page",
+ wagtail.blocks.PageChooserBlock(
+ help_text="Pick a page or specify a URL",
+ required=False,
+ ),
+ ),
+ (
+ "href",
+ wagtail.blocks.URLBlock(
+ help_text="Pick a page or specify a URL",
+ label="URL",
+ required=False,
+ ),
+ ),
+ (
+ "size",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("sm", "small"),
+ ("md", "medium"),
+ ("lg", "large"),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "style",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "btn-outline-dark",
+ "outlined",
+ ),
+ (
+ "btn-dark text-yellow",
+ "filled",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "newsletter_signup",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "heading",
+ wagtail.blocks.CharBlock(
+ max_length=150,
+ required=False,
+ ),
+ )
+ ]
+ ),
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "column_width",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("small", "small"),
+ ("medium", "medium"),
+ ("large", "large"),
+ ]
+ ),
+ ),
+ (
+ "alignment",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("left", "left"),
+ ("center", "center"),
+ ("right", "right"),
+ ],
+ help_text="Doesn't apply when used inside a column.",
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "columns",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("bg-black text-white", "black"),
+ ("bg-white", "white"),
+ ("tw-bg-yellow", "yellow"),
+ ("tw-bg-teal", "teal"),
+ ("tw-bg-darkgreen", "darkgreen"),
+ ("tw-bg-lilacgrey", "lilacgrey"),
+ ("tw-bg-coral", "coral"),
+ ("tw-bg-purple", "purple"),
+ ("tw-bg-magenta", "magenta"),
+ ("tw-bg-pink", "pink"),
+ ("tw-bg-lightgreen", "lightgreen"),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "columns",
+ wagtail.blocks.ListBlock(
+ app.models.blocks.ColumnBlock,
+ max_num=5,
+ min_num=1,
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "events_list_and_map",
+ wagtail.blocks.StructBlock(
+ [
+ ("title", wagtail.blocks.CharBlock(required=False)),
+ ("intro", wagtail.blocks.RichTextBlock(required=False)),
+ (
+ "number_of_events",
+ wagtail.blocks.IntegerBlock(
+ default=3, required=True
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "events_list_block",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "number_of_events",
+ wagtail.blocks.IntegerBlock(
+ default=3, required=True
+ ),
+ )
+ ]
+ ),
+ ),
+ ("syllabus_title", wagtail.blocks.StructBlock([])),
+ ],
+ blank=True,
+ default=app.models.wagtail.create_default_layout_syllabus,
+ null=True,
+ use_json_field=True,
+ ),
+ ),
+ migrations.AlterField(
+ model_name="membershipplanpage",
+ name="benefits",
+ field=wagtail.fields.RichTextField(
+ blank=True,
+ help_text="List of pithy beneficial features of this plan. Bullet points are automatically formatted as ticks.",
+ null=True,
+ ),
+ ),
+ migrations.AlterField(
+ model_name="membershipplanpage",
+ name="display_in_quiz_flow",
+ field=models.BooleanField(
+ default=False, verbose_name="Display in v2 signup flow"
+ ),
+ ),
+ migrations.AlterField(
+ model_name="membershipplanpage",
+ name="layout",
+ field=wagtail.fields.StreamField(
+ [
+ (
+ "membership_options",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "heading",
+ wagtail.blocks.CharBlock(
+ default="Choose your plan",
+ form_classname="full title",
+ required=False,
+ ),
+ ),
+ (
+ "description",
+ wagtail.blocks.RichTextBlock(
+ default="Your subscription will begin with the most recently published book in your chosen collection.
",
+ required=False,
+ ),
+ ),
+ (
+ "plans",
+ wagtail.blocks.ListBlock(
+ app.models.blocks.PlanBlock
+ ),
+ ),
+ ]
+ ),
+ ),
+ ("image", wagtail.images.blocks.ImageChooserBlock()),
+ (
+ "featured_book",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "book",
+ wagtail.blocks.PageChooserBlock(
+ can_choose_root=False,
+ page_type=["app.BookPage"],
+ ),
+ ),
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("bg-black text-white", "black"),
+ ("bg-white", "white"),
+ ("tw-bg-yellow", "yellow"),
+ ("tw-bg-teal", "teal"),
+ ("tw-bg-darkgreen", "darkgreen"),
+ ("tw-bg-lilacgrey", "lilacgrey"),
+ ("tw-bg-coral", "coral"),
+ ("tw-bg-purple", "purple"),
+ ("tw-bg-magenta", "magenta"),
+ ("tw-bg-pink", "pink"),
+ ("tw-bg-lightgreen", "lightgreen"),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "promotion_label",
+ wagtail.blocks.CharBlock(
+ help_text="Label that highlights this product",
+ required=False,
+ ),
+ ),
+ (
+ "description",
+ wagtail.blocks.RichTextBlock(
+ help_text="This will replace the book's default description. You can use this to provide a more contextualised description of the book",
+ required=False,
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "book_selection",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "column_width",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("small", "small"),
+ ("medium", "medium"),
+ ("large", "large"),
+ ]
+ ),
+ ),
+ (
+ "books",
+ wagtail.blocks.ListBlock(
+ wagtail.blocks.PageChooserBlock(
+ can_choose_root=False,
+ page_type=["app.BookPage"],
+ )
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "recently_published_books",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "column_width",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("small", "small"),
+ ("medium", "medium"),
+ ("large", "large"),
+ ]
+ ),
+ ),
+ (
+ "max_books",
+ wagtail.blocks.IntegerBlock(
+ default=4,
+ help_text="How many books should show up?",
+ ),
+ ),
+ (
+ "type",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("classic", "classic"),
+ ("contemporary", "contemporary"),
+ ("all-books", "all-books"),
+ ]
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "featured_product",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "product",
+ wagtail.blocks.PageChooserBlock(
+ can_choose_root=False,
+ page_type=["app.MerchandisePage"],
+ ),
+ ),
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("bg-black text-white", "black"),
+ ("bg-white", "white"),
+ ("tw-bg-yellow", "yellow"),
+ ("tw-bg-teal", "teal"),
+ ("tw-bg-darkgreen", "darkgreen"),
+ ("tw-bg-lilacgrey", "lilacgrey"),
+ ("tw-bg-coral", "coral"),
+ ("tw-bg-purple", "purple"),
+ ("tw-bg-magenta", "magenta"),
+ ("tw-bg-pink", "pink"),
+ ("tw-bg-lightgreen", "lightgreen"),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "promotion_label",
+ wagtail.blocks.CharBlock(
+ help_text="Label that highlights this product",
+ required=False,
+ ),
+ ),
+ (
+ "description",
+ wagtail.blocks.RichTextBlock(
+ help_text="This will replace the product's default description. You can use this to provide a more contextualised description of the product",
+ required=False,
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "product_selection",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "column_width",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("small", "small"),
+ ("medium", "medium"),
+ ("large", "large"),
+ ]
+ ),
+ ),
+ (
+ "products",
+ wagtail.blocks.ListBlock(
+ wagtail.blocks.PageChooserBlock(
+ can_choose_root=False,
+ page_type=["app.MerchandisePage"],
+ )
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "full_product_list",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "column_width",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("small", "small"),
+ ("medium", "medium"),
+ ("large", "large"),
+ ]
+ ),
+ ),
+ (
+ "max_products",
+ wagtail.blocks.IntegerBlock(
+ default=10,
+ help_text="How many products should show up?",
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "hero_text",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "heading",
+ wagtail.blocks.CharBlock(
+ form_classname="full title", max_length=250
+ ),
+ ),
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("bg-black text-white", "black"),
+ ("bg-white", "white"),
+ ("tw-bg-yellow", "yellow"),
+ ("tw-bg-teal", "teal"),
+ ("tw-bg-darkgreen", "darkgreen"),
+ ("tw-bg-lilacgrey", "lilacgrey"),
+ ("tw-bg-coral", "coral"),
+ ("tw-bg-purple", "purple"),
+ ("tw-bg-magenta", "magenta"),
+ ("tw-bg-pink", "pink"),
+ ("tw-bg-lightgreen", "lightgreen"),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "button",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "text",
+ wagtail.blocks.CharBlock(
+ max_length=100, required=False
+ ),
+ ),
+ (
+ "page",
+ wagtail.blocks.PageChooserBlock(
+ help_text="Pick a page or specify a URL",
+ required=False,
+ ),
+ ),
+ (
+ "href",
+ wagtail.blocks.URLBlock(
+ help_text="Pick a page or specify a URL",
+ label="URL",
+ required=False,
+ ),
+ ),
+ (
+ "size",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("sm", "small"),
+ ("md", "medium"),
+ ("lg", "large"),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "style",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "btn-outline-dark",
+ "outlined",
+ ),
+ (
+ "btn-dark text-yellow",
+ "filled",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ ]
+ ),
+ ),
+ ("heading", wagtail.blocks.CharBlock(form_classname="full title")),
+ (
+ "richtext",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "text",
+ wagtail.blocks.RichTextBlock(
+ features=[
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "bold",
+ "italic",
+ "link",
+ "ol",
+ "ul",
+ "hr",
+ "link",
+ "document-link",
+ "image",
+ "embed",
+ "blockquote",
+ ],
+ form_classname="full",
+ ),
+ ),
+ (
+ "alignment",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("left", "left"),
+ ("center", "center"),
+ ("right", "right"),
+ ],
+ help_text="Doesn't apply when used inside a column.",
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "list_of_heading_image_text",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "column_width",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("small", "small"),
+ ("medium", "medium"),
+ ("large", "large"),
+ ]
+ ),
+ ),
+ (
+ "items",
+ wagtail.blocks.ListBlock(
+ app.models.blocks.ListItemBlock
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "single_column",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("bg-black text-white", "black"),
+ ("bg-white", "white"),
+ ("tw-bg-yellow", "yellow"),
+ ("tw-bg-teal", "teal"),
+ ("tw-bg-darkgreen", "darkgreen"),
+ ("tw-bg-lilacgrey", "lilacgrey"),
+ ("tw-bg-coral", "coral"),
+ ("tw-bg-purple", "purple"),
+ ("tw-bg-magenta", "magenta"),
+ ("tw-bg-pink", "pink"),
+ ("tw-bg-lightgreen", "lightgreen"),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "content",
+ wagtail.blocks.StreamBlock(
+ [
+ (
+ "hero_text",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "heading",
+ wagtail.blocks.CharBlock(
+ form_classname="full title",
+ max_length=250,
+ ),
+ ),
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "bg-black text-white",
+ "black",
+ ),
+ (
+ "bg-white",
+ "white",
+ ),
+ (
+ "tw-bg-yellow",
+ "yellow",
+ ),
+ (
+ "tw-bg-teal",
+ "teal",
+ ),
+ (
+ "tw-bg-darkgreen",
+ "darkgreen",
+ ),
+ (
+ "tw-bg-lilacgrey",
+ "lilacgrey",
+ ),
+ (
+ "tw-bg-coral",
+ "coral",
+ ),
+ (
+ "tw-bg-purple",
+ "purple",
+ ),
+ (
+ "tw-bg-magenta",
+ "magenta",
+ ),
+ (
+ "tw-bg-pink",
+ "pink",
+ ),
+ (
+ "tw-bg-lightgreen",
+ "lightgreen",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "button",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "text",
+ wagtail.blocks.CharBlock(
+ max_length=100,
+ required=False,
+ ),
+ ),
+ (
+ "page",
+ wagtail.blocks.PageChooserBlock(
+ help_text="Pick a page or specify a URL",
+ required=False,
+ ),
+ ),
+ (
+ "href",
+ wagtail.blocks.URLBlock(
+ help_text="Pick a page or specify a URL",
+ label="URL",
+ required=False,
+ ),
+ ),
+ (
+ "size",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "sm",
+ "small",
+ ),
+ (
+ "md",
+ "medium",
+ ),
+ (
+ "lg",
+ "large",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "style",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "btn-outline-dark",
+ "outlined",
+ ),
+ (
+ "btn-dark text-yellow",
+ "filled",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "title_image_caption",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "title",
+ wagtail.blocks.CharBlock(
+ form_classname="full title",
+ max_length=250,
+ ),
+ ),
+ (
+ "image",
+ wagtail.images.blocks.ImageChooserBlock(
+ required=False
+ ),
+ ),
+ (
+ "image_css",
+ wagtail.blocks.CharBlock(
+ max_length=500,
+ required=False,
+ ),
+ ),
+ (
+ "caption",
+ wagtail.blocks.RichTextBlock(
+ max_length=500
+ ),
+ ),
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "bg-black text-white",
+ "black",
+ ),
+ (
+ "bg-white",
+ "white",
+ ),
+ (
+ "tw-bg-yellow",
+ "yellow",
+ ),
+ (
+ "tw-bg-teal",
+ "teal",
+ ),
+ (
+ "tw-bg-darkgreen",
+ "darkgreen",
+ ),
+ (
+ "tw-bg-lilacgrey",
+ "lilacgrey",
+ ),
+ (
+ "tw-bg-coral",
+ "coral",
+ ),
+ (
+ "tw-bg-purple",
+ "purple",
+ ),
+ (
+ "tw-bg-magenta",
+ "magenta",
+ ),
+ (
+ "tw-bg-pink",
+ "pink",
+ ),
+ (
+ "tw-bg-lightgreen",
+ "lightgreen",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "button",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "text",
+ wagtail.blocks.CharBlock(
+ max_length=100,
+ required=False,
+ ),
+ ),
+ (
+ "page",
+ wagtail.blocks.PageChooserBlock(
+ help_text="Pick a page or specify a URL",
+ required=False,
+ ),
+ ),
+ (
+ "href",
+ wagtail.blocks.URLBlock(
+ help_text="Pick a page or specify a URL",
+ label="URL",
+ required=False,
+ ),
+ ),
+ (
+ "size",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "sm",
+ "small",
+ ),
+ (
+ "md",
+ "medium",
+ ),
+ (
+ "lg",
+ "large",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "style",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "btn-outline-dark",
+ "outlined",
+ ),
+ (
+ "btn-dark text-yellow",
+ "filled",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "image",
+ wagtail.images.blocks.ImageChooserBlock(),
+ ),
+ (
+ "single_book",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "book",
+ wagtail.blocks.PageChooserBlock(
+ can_choose_root=False,
+ page_type=[
+ "app.BookPage"
+ ],
+ ),
+ )
+ ]
+ ),
+ ),
+ (
+ "membership_plan",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "plan",
+ wagtail.blocks.PageChooserBlock(
+ can_choose_root=False,
+ page_type=[
+ "app.MembershipPlanPage"
+ ],
+ ),
+ ),
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "bg-black text-white",
+ "black",
+ ),
+ (
+ "bg-white",
+ "white",
+ ),
+ (
+ "tw-bg-yellow",
+ "yellow",
+ ),
+ (
+ "tw-bg-teal",
+ "teal",
+ ),
+ (
+ "tw-bg-darkgreen",
+ "darkgreen",
+ ),
+ (
+ "tw-bg-lilacgrey",
+ "lilacgrey",
+ ),
+ (
+ "tw-bg-coral",
+ "coral",
+ ),
+ (
+ "tw-bg-purple",
+ "purple",
+ ),
+ (
+ "tw-bg-magenta",
+ "magenta",
+ ),
+ (
+ "tw-bg-pink",
+ "pink",
+ ),
+ (
+ "tw-bg-lightgreen",
+ "lightgreen",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "promotion_label",
+ wagtail.blocks.CharBlock(
+ help_text="Label that highlights this product",
+ required=False,
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "richtext",
+ wagtail.blocks.RichTextBlock(
+ features=[
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "bold",
+ "italic",
+ "link",
+ "ol",
+ "ul",
+ "hr",
+ "link",
+ "document-link",
+ "image",
+ "embed",
+ "blockquote",
+ ]
+ ),
+ ),
+ (
+ "button",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "text",
+ wagtail.blocks.CharBlock(
+ max_length=100,
+ required=False,
+ ),
+ ),
+ (
+ "page",
+ wagtail.blocks.PageChooserBlock(
+ help_text="Pick a page or specify a URL",
+ required=False,
+ ),
+ ),
+ (
+ "href",
+ wagtail.blocks.URLBlock(
+ help_text="Pick a page or specify a URL",
+ label="URL",
+ required=False,
+ ),
+ ),
+ (
+ "size",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("sm", "small"),
+ ("md", "medium"),
+ ("lg", "large"),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "style",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ (
+ "btn-outline-dark",
+ "outlined",
+ ),
+ (
+ "btn-dark text-yellow",
+ "filled",
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "newsletter_signup",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "heading",
+ wagtail.blocks.CharBlock(
+ max_length=150,
+ required=False,
+ ),
+ )
+ ]
+ ),
+ ),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "column_width",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("small", "small"),
+ ("medium", "medium"),
+ ("large", "large"),
+ ]
+ ),
+ ),
+ (
+ "alignment",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("left", "left"),
+ ("center", "center"),
+ ("right", "right"),
+ ],
+ help_text="Doesn't apply when used inside a column.",
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "columns",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "background_color",
+ wagtail.blocks.ChoiceBlock(
+ choices=[
+ ("bg-black text-white", "black"),
+ ("bg-white", "white"),
+ ("tw-bg-yellow", "yellow"),
+ ("tw-bg-teal", "teal"),
+ ("tw-bg-darkgreen", "darkgreen"),
+ ("tw-bg-lilacgrey", "lilacgrey"),
+ ("tw-bg-coral", "coral"),
+ ("tw-bg-purple", "purple"),
+ ("tw-bg-magenta", "magenta"),
+ ("tw-bg-pink", "pink"),
+ ("tw-bg-lightgreen", "lightgreen"),
+ ],
+ required=False,
+ ),
+ ),
+ (
+ "columns",
+ wagtail.blocks.ListBlock(
+ app.models.blocks.ColumnBlock,
+ max_num=5,
+ min_num=1,
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "events_list_and_map",
+ wagtail.blocks.StructBlock(
+ [
+ ("title", wagtail.blocks.CharBlock(required=False)),
+ ("intro", wagtail.blocks.RichTextBlock(required=False)),
+ (
+ "number_of_events",
+ wagtail.blocks.IntegerBlock(
+ default=3, required=True
+ ),
+ ),
+ ]
+ ),
+ ),
+ (
+ "events_list_block",
+ wagtail.blocks.StructBlock(
+ [
+ (
+ "number_of_events",
+ wagtail.blocks.IntegerBlock(
+ default=3, required=True
+ ),
+ )
+ ]
+ ),
+ ),
+ ("plan_title", wagtail.blocks.StructBlock([])),
+ ("plan_pricing", wagtail.blocks.StructBlock([])),
+ ],
+ blank=True,
+ default=app.models.wagtail.create_default_layout_plan,
+ null=True,
+ use_json_field=True,
+ ),
+ ),
+ migrations.AlterField(
+ model_name="membershipplanprice",
+ name="products",
+ field=modelcluster.fields.ParentalManyToManyField(
+ blank=True,
+ help_text="(For V1-only signup flow.) The stripe product that the user will be subscribed to. If multiple products are set here, then the user will be asked to pick which one they want, e.g. Classic or Contemporary books.",
+ to="app.lbcproduct",
+ verbose_name="[V1] stripe products",
+ ),
+ ),
+ ]
diff --git a/app/migrations/0072_alter_customimage_file_alter_imagerendition_file_and_more.py b/app/migrations/0072_alter_customimage_file_alter_imagerendition_file_and_more.py
new file mode 100644
index 00000000..87ffbbe8
--- /dev/null
+++ b/app/migrations/0072_alter_customimage_file_alter_imagerendition_file_and_more.py
@@ -0,0 +1,691 @@
+# Generated by Django 4.2 on 2023-11-24 19:54
+
+import django.db.models.deletion
+import djmoney.models.fields
+import wagtail.images.models
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("app", "0071_syllabuspage_layout_and_more"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="customimage",
+ name="file",
+ field=wagtail.images.models.WagtailImageField(
+ height_field="height",
+ upload_to=wagtail.images.models.get_upload_to,
+ verbose_name="file",
+ width_field="width",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="imagerendition",
+ name="file",
+ field=wagtail.images.models.WagtailImageField(
+ height_field="height",
+ storage=wagtail.images.models.get_rendition_storage,
+ upload_to=wagtail.images.models.get_rendition_upload_to,
+ width_field="width",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="membershipplanprice",
+ name="price_currency",
+ field=djmoney.models.fields.CurrencyField(
+ choices=[
+ ("XUA", "ADB Unit of Account"),
+ ("AFN", "Afghan Afghani"),
+ ("AFA", "Afghan Afghani (1927–2002)"),
+ ("ALL", "Albanian Lek"),
+ ("ALK", "Albanian Lek (1946–1965)"),
+ ("DZD", "Algerian Dinar"),
+ ("ADP", "Andorran Peseta"),
+ ("AOA", "Angolan Kwanza"),
+ ("AOK", "Angolan Kwanza (1977–1991)"),
+ ("AON", "Angolan New Kwanza (1990–2000)"),
+ ("AOR", "Angolan Readjusted Kwanza (1995–1999)"),
+ ("ARA", "Argentine Austral"),
+ ("ARS", "Argentine Peso"),
+ ("ARM", "Argentine Peso (1881–1970)"),
+ ("ARP", "Argentine Peso (1983–1985)"),
+ ("ARL", "Argentine Peso Ley (1970–1983)"),
+ ("AMD", "Armenian Dram"),
+ ("AWG", "Aruban Florin"),
+ ("AUD", "Australian Dollar"),
+ ("ATS", "Austrian Schilling"),
+ ("AZN", "Azerbaijani Manat"),
+ ("AZM", "Azerbaijani Manat (1993–2006)"),
+ ("BSD", "Bahamian Dollar"),
+ ("BHD", "Bahraini Dinar"),
+ ("BDT", "Bangladeshi Taka"),
+ ("BBD", "Barbadian Dollar"),
+ ("BYN", "Belarusian Ruble"),
+ ("BYB", "Belarusian Ruble (1994–1999)"),
+ ("BYR", "Belarusian Ruble (2000–2016)"),
+ ("BEF", "Belgian Franc"),
+ ("BEC", "Belgian Franc (convertible)"),
+ ("BEL", "Belgian Franc (financial)"),
+ ("BZD", "Belize Dollar"),
+ ("BMD", "Bermudan Dollar"),
+ ("BTN", "Bhutanese Ngultrum"),
+ ("BOB", "Bolivian Boliviano"),
+ ("BOL", "Bolivian Boliviano (1863–1963)"),
+ ("BOV", "Bolivian Mvdol"),
+ ("BOP", "Bolivian Peso"),
+ ("VED", "BolÃvar Soberano"),
+ ("BAM", "Bosnia-Herzegovina Convertible Mark"),
+ ("BAD", "Bosnia-Herzegovina Dinar (1992–1994)"),
+ ("BAN", "Bosnia-Herzegovina New Dinar (1994–1997)"),
+ ("BWP", "Botswanan Pula"),
+ ("BRC", "Brazilian Cruzado (1986–1989)"),
+ ("BRZ", "Brazilian Cruzeiro (1942–1967)"),
+ ("BRE", "Brazilian Cruzeiro (1990–1993)"),
+ ("BRR", "Brazilian Cruzeiro (1993–1994)"),
+ ("BRN", "Brazilian New Cruzado (1989–1990)"),
+ ("BRB", "Brazilian New Cruzeiro (1967–1986)"),
+ ("BRL", "Brazilian Real"),
+ ("GBP", "British Pound"),
+ ("BND", "Brunei Dollar"),
+ ("BGL", "Bulgarian Hard Lev"),
+ ("BGN", "Bulgarian Lev"),
+ ("BGO", "Bulgarian Lev (1879–1952)"),
+ ("BGM", "Bulgarian Socialist Lev"),
+ ("BUK", "Burmese Kyat"),
+ ("BIF", "Burundian Franc"),
+ ("XPF", "CFP Franc"),
+ ("KHR", "Cambodian Riel"),
+ ("CAD", "Canadian Dollar"),
+ ("CVE", "Cape Verdean Escudo"),
+ ("KYD", "Cayman Islands Dollar"),
+ ("XAF", "Central African CFA Franc"),
+ ("CLE", "Chilean Escudo"),
+ ("CLP", "Chilean Peso"),
+ ("CLF", "Chilean Unit of Account (UF)"),
+ ("CNX", "Chinese People’s Bank Dollar"),
+ ("CNY", "Chinese Yuan"),
+ ("CNH", "Chinese Yuan (offshore)"),
+ ("COP", "Colombian Peso"),
+ ("COU", "Colombian Real Value Unit"),
+ ("KMF", "Comorian Franc"),
+ ("CDF", "Congolese Franc"),
+ ("CRC", "Costa Rican Colón"),
+ ("HRD", "Croatian Dinar"),
+ ("HRK", "Croatian Kuna"),
+ ("CUC", "Cuban Convertible Peso"),
+ ("CUP", "Cuban Peso"),
+ ("CYP", "Cypriot Pound"),
+ ("CZK", "Czech Koruna"),
+ ("CSK", "Czechoslovak Hard Koruna"),
+ ("DKK", "Danish Krone"),
+ ("DJF", "Djiboutian Franc"),
+ ("DOP", "Dominican Peso"),
+ ("NLG", "Dutch Guilder"),
+ ("XCD", "East Caribbean Dollar"),
+ ("DDM", "East German Mark"),
+ ("ECS", "Ecuadorian Sucre"),
+ ("ECV", "Ecuadorian Unit of Constant Value"),
+ ("EGP", "Egyptian Pound"),
+ ("GQE", "Equatorial Guinean Ekwele"),
+ ("ERN", "Eritrean Nakfa"),
+ ("EEK", "Estonian Kroon"),
+ ("ETB", "Ethiopian Birr"),
+ ("EUR", "Euro"),
+ ("XBA", "European Composite Unit"),
+ ("XEU", "European Currency Unit"),
+ ("XBB", "European Monetary Unit"),
+ ("XBC", "European Unit of Account (XBC)"),
+ ("XBD", "European Unit of Account (XBD)"),
+ ("FKP", "Falkland Islands Pound"),
+ ("FJD", "Fijian Dollar"),
+ ("FIM", "Finnish Markka"),
+ ("FRF", "French Franc"),
+ ("XFO", "French Gold Franc"),
+ ("XFU", "French UIC-Franc"),
+ ("GMD", "Gambian Dalasi"),
+ ("GEK", "Georgian Kupon Larit"),
+ ("GEL", "Georgian Lari"),
+ ("DEM", "German Mark"),
+ ("GHS", "Ghanaian Cedi"),
+ ("GHC", "Ghanaian Cedi (1979–2007)"),
+ ("GIP", "Gibraltar Pound"),
+ ("XAU", "Gold"),
+ ("GRD", "Greek Drachma"),
+ ("GTQ", "Guatemalan Quetzal"),
+ ("GWP", "Guinea-Bissau Peso"),
+ ("GNF", "Guinean Franc"),
+ ("GNS", "Guinean Syli"),
+ ("GYD", "Guyanaese Dollar"),
+ ("HTG", "Haitian Gourde"),
+ ("HNL", "Honduran Lempira"),
+ ("HKD", "Hong Kong Dollar"),
+ ("HUF", "Hungarian Forint"),
+ ("IMP", "IMP"),
+ ("ISK", "Icelandic Króna"),
+ ("ISJ", "Icelandic Króna (1918–1981)"),
+ ("INR", "Indian Rupee"),
+ ("IDR", "Indonesian Rupiah"),
+ ("IRR", "Iranian Rial"),
+ ("IQD", "Iraqi Dinar"),
+ ("IEP", "Irish Pound"),
+ ("ILS", "Israeli New Shekel"),
+ ("ILP", "Israeli Pound"),
+ ("ILR", "Israeli Shekel (1980–1985)"),
+ ("ITL", "Italian Lira"),
+ ("JMD", "Jamaican Dollar"),
+ ("JPY", "Japanese Yen"),
+ ("JOD", "Jordanian Dinar"),
+ ("KZT", "Kazakhstani Tenge"),
+ ("KES", "Kenyan Shilling"),
+ ("KWD", "Kuwaiti Dinar"),
+ ("KGS", "Kyrgystani Som"),
+ ("LAK", "Laotian Kip"),
+ ("LVL", "Latvian Lats"),
+ ("LVR", "Latvian Ruble"),
+ ("LBP", "Lebanese Pound"),
+ ("LSL", "Lesotho Loti"),
+ ("LRD", "Liberian Dollar"),
+ ("LYD", "Libyan Dinar"),
+ ("LTL", "Lithuanian Litas"),
+ ("LTT", "Lithuanian Talonas"),
+ ("LUL", "Luxembourg Financial Franc"),
+ ("LUC", "Luxembourgian Convertible Franc"),
+ ("LUF", "Luxembourgian Franc"),
+ ("MOP", "Macanese Pataca"),
+ ("MKD", "Macedonian Denar"),
+ ("MKN", "Macedonian Denar (1992–1993)"),
+ ("MGA", "Malagasy Ariary"),
+ ("MGF", "Malagasy Franc"),
+ ("MWK", "Malawian Kwacha"),
+ ("MYR", "Malaysian Ringgit"),
+ ("MVR", "Maldivian Rufiyaa"),
+ ("MVP", "Maldivian Rupee (1947–1981)"),
+ ("MLF", "Malian Franc"),
+ ("MTL", "Maltese Lira"),
+ ("MTP", "Maltese Pound"),
+ ("MRU", "Mauritanian Ouguiya"),
+ ("MRO", "Mauritanian Ouguiya (1973–2017)"),
+ ("MUR", "Mauritian Rupee"),
+ ("MXV", "Mexican Investment Unit"),
+ ("MXN", "Mexican Peso"),
+ ("MXP", "Mexican Silver Peso (1861–1992)"),
+ ("MDC", "Moldovan Cupon"),
+ ("MDL", "Moldovan Leu"),
+ ("MCF", "Monegasque Franc"),
+ ("MNT", "Mongolian Tugrik"),
+ ("MAD", "Moroccan Dirham"),
+ ("MAF", "Moroccan Franc"),
+ ("MZE", "Mozambican Escudo"),
+ ("MZN", "Mozambican Metical"),
+ ("MZM", "Mozambican Metical (1980–2006)"),
+ ("MMK", "Myanmar Kyat"),
+ ("NAD", "Namibian Dollar"),
+ ("NPR", "Nepalese Rupee"),
+ ("ANG", "Netherlands Antillean Guilder"),
+ ("TWD", "New Taiwan Dollar"),
+ ("NZD", "New Zealand Dollar"),
+ ("NIO", "Nicaraguan Córdoba"),
+ ("NIC", "Nicaraguan Córdoba (1988–1991)"),
+ ("NGN", "Nigerian Naira"),
+ ("KPW", "North Korean Won"),
+ ("NOK", "Norwegian Krone"),
+ ("OMR", "Omani Rial"),
+ ("PKR", "Pakistani Rupee"),
+ ("XPD", "Palladium"),
+ ("PAB", "Panamanian Balboa"),
+ ("PGK", "Papua New Guinean Kina"),
+ ("PYG", "Paraguayan Guarani"),
+ ("PEI", "Peruvian Inti"),
+ ("PEN", "Peruvian Sol"),
+ ("PES", "Peruvian Sol (1863–1965)"),
+ ("PHP", "Philippine Peso"),
+ ("XPT", "Platinum"),
+ ("PLN", "Polish Zloty"),
+ ("PLZ", "Polish Zloty (1950–1995)"),
+ ("PTE", "Portuguese Escudo"),
+ ("GWE", "Portuguese Guinea Escudo"),
+ ("QAR", "Qatari Rial"),
+ ("XRE", "RINET Funds"),
+ ("RHD", "Rhodesian Dollar"),
+ ("RON", "Romanian Leu"),
+ ("ROL", "Romanian Leu (1952–2006)"),
+ ("RUB", "Russian Ruble"),
+ ("RUR", "Russian Ruble (1991–1998)"),
+ ("RWF", "Rwandan Franc"),
+ ("SVC", "Salvadoran Colón"),
+ ("WST", "Samoan Tala"),
+ ("SAR", "Saudi Riyal"),
+ ("RSD", "Serbian Dinar"),
+ ("CSD", "Serbian Dinar (2002–2006)"),
+ ("SCR", "Seychellois Rupee"),
+ ("SLL", "Sierra Leonean Leone"),
+ ("SLE", "Sierra Leonean New Leone"),
+ ("XAG", "Silver"),
+ ("SGD", "Singapore Dollar"),
+ ("SKK", "Slovak Koruna"),
+ ("SIT", "Slovenian Tolar"),
+ ("SBD", "Solomon Islands Dollar"),
+ ("SOS", "Somali Shilling"),
+ ("ZAR", "South African Rand"),
+ ("ZAL", "South African Rand (financial)"),
+ ("KRH", "South Korean Hwan (1953–1962)"),
+ ("KRW", "South Korean Won"),
+ ("KRO", "South Korean Won (1945–1953)"),
+ ("SSP", "South Sudanese Pound"),
+ ("SUR", "Soviet Rouble"),
+ ("ESP", "Spanish Peseta"),
+ ("ESA", "Spanish Peseta (A account)"),
+ ("ESB", "Spanish Peseta (convertible account)"),
+ ("XDR", "Special Drawing Rights"),
+ ("LKR", "Sri Lankan Rupee"),
+ ("SHP", "St. Helena Pound"),
+ ("XSU", "Sucre"),
+ ("SDD", "Sudanese Dinar (1992–2007)"),
+ ("SDG", "Sudanese Pound"),
+ ("SDP", "Sudanese Pound (1957–1998)"),
+ ("SRD", "Surinamese Dollar"),
+ ("SRG", "Surinamese Guilder"),
+ ("SZL", "Swazi Lilangeni"),
+ ("SEK", "Swedish Krona"),
+ ("CHF", "Swiss Franc"),
+ ("SYP", "Syrian Pound"),
+ ("STN", "São Tomé & PrÃncipe Dobra"),
+ ("STD", "São Tomé & PrÃncipe Dobra (1977–2017)"),
+ ("TVD", "TVD"),
+ ("TJR", "Tajikistani Ruble"),
+ ("TJS", "Tajikistani Somoni"),
+ ("TZS", "Tanzanian Shilling"),
+ ("XTS", "Testing Currency Code"),
+ ("THB", "Thai Baht"),
+ (
+ "XXX",
+ "The codes assigned for transactions where no currency is involved",
+ ),
+ ("TPE", "Timorese Escudo"),
+ ("TOP", "Tongan Paʻanga"),
+ ("TTD", "Trinidad & Tobago Dollar"),
+ ("TND", "Tunisian Dinar"),
+ ("TRY", "Turkish Lira"),
+ ("TRL", "Turkish Lira (1922–2005)"),
+ ("TMT", "Turkmenistani Manat"),
+ ("TMM", "Turkmenistani Manat (1993–2009)"),
+ ("USD", "US Dollar"),
+ ("USN", "US Dollar (Next day)"),
+ ("USS", "US Dollar (Same day)"),
+ ("UGX", "Ugandan Shilling"),
+ ("UGS", "Ugandan Shilling (1966–1987)"),
+ ("UAH", "Ukrainian Hryvnia"),
+ ("UAK", "Ukrainian Karbovanets"),
+ ("AED", "United Arab Emirates Dirham"),
+ ("UYW", "Uruguayan Nominal Wage Index Unit"),
+ ("UYU", "Uruguayan Peso"),
+ ("UYP", "Uruguayan Peso (1975–1993)"),
+ ("UYI", "Uruguayan Peso (Indexed Units)"),
+ ("UZS", "Uzbekistani Som"),
+ ("VUV", "Vanuatu Vatu"),
+ ("VES", "Venezuelan BolÃvar"),
+ ("VEB", "Venezuelan BolÃvar (1871–2008)"),
+ ("VEF", "Venezuelan BolÃvar (2008–2018)"),
+ ("VND", "Vietnamese Dong"),
+ ("VNN", "Vietnamese Dong (1978–1985)"),
+ ("CHE", "WIR Euro"),
+ ("CHW", "WIR Franc"),
+ ("XOF", "West African CFA Franc"),
+ ("YDD", "Yemeni Dinar"),
+ ("YER", "Yemeni Rial"),
+ ("YUN", "Yugoslavian Convertible Dinar (1990–1992)"),
+ ("YUD", "Yugoslavian Hard Dinar (1966–1990)"),
+ ("YUM", "Yugoslavian New Dinar (1994–2002)"),
+ ("YUR", "Yugoslavian Reformed Dinar (1992–1993)"),
+ ("ZWN", "ZWN"),
+ ("ZRN", "Zairean New Zaire (1993–1998)"),
+ ("ZRZ", "Zairean Zaire (1971–1993)"),
+ ("ZMW", "Zambian Kwacha"),
+ ("ZMK", "Zambian Kwacha (1968–2012)"),
+ ("ZWD", "Zimbabwean Dollar (1980–2008)"),
+ ("ZWR", "Zimbabwean Dollar (2008)"),
+ ("ZWL", "Zimbabwean Dollar (2009)"),
+ ],
+ default="GBP",
+ editable=False,
+ max_length=3,
+ ),
+ ),
+ migrations.AlterField(
+ model_name="shippingzone",
+ name="rate_currency",
+ field=djmoney.models.fields.CurrencyField(
+ choices=[
+ ("XUA", "ADB Unit of Account"),
+ ("AFN", "Afghan Afghani"),
+ ("AFA", "Afghan Afghani (1927–2002)"),
+ ("ALL", "Albanian Lek"),
+ ("ALK", "Albanian Lek (1946–1965)"),
+ ("DZD", "Algerian Dinar"),
+ ("ADP", "Andorran Peseta"),
+ ("AOA", "Angolan Kwanza"),
+ ("AOK", "Angolan Kwanza (1977–1991)"),
+ ("AON", "Angolan New Kwanza (1990–2000)"),
+ ("AOR", "Angolan Readjusted Kwanza (1995–1999)"),
+ ("ARA", "Argentine Austral"),
+ ("ARS", "Argentine Peso"),
+ ("ARM", "Argentine Peso (1881–1970)"),
+ ("ARP", "Argentine Peso (1983–1985)"),
+ ("ARL", "Argentine Peso Ley (1970–1983)"),
+ ("AMD", "Armenian Dram"),
+ ("AWG", "Aruban Florin"),
+ ("AUD", "Australian Dollar"),
+ ("ATS", "Austrian Schilling"),
+ ("AZN", "Azerbaijani Manat"),
+ ("AZM", "Azerbaijani Manat (1993–2006)"),
+ ("BSD", "Bahamian Dollar"),
+ ("BHD", "Bahraini Dinar"),
+ ("BDT", "Bangladeshi Taka"),
+ ("BBD", "Barbadian Dollar"),
+ ("BYN", "Belarusian Ruble"),
+ ("BYB", "Belarusian Ruble (1994–1999)"),
+ ("BYR", "Belarusian Ruble (2000–2016)"),
+ ("BEF", "Belgian Franc"),
+ ("BEC", "Belgian Franc (convertible)"),
+ ("BEL", "Belgian Franc (financial)"),
+ ("BZD", "Belize Dollar"),
+ ("BMD", "Bermudan Dollar"),
+ ("BTN", "Bhutanese Ngultrum"),
+ ("BOB", "Bolivian Boliviano"),
+ ("BOL", "Bolivian Boliviano (1863–1963)"),
+ ("BOV", "Bolivian Mvdol"),
+ ("BOP", "Bolivian Peso"),
+ ("VED", "BolÃvar Soberano"),
+ ("BAM", "Bosnia-Herzegovina Convertible Mark"),
+ ("BAD", "Bosnia-Herzegovina Dinar (1992–1994)"),
+ ("BAN", "Bosnia-Herzegovina New Dinar (1994–1997)"),
+ ("BWP", "Botswanan Pula"),
+ ("BRC", "Brazilian Cruzado (1986–1989)"),
+ ("BRZ", "Brazilian Cruzeiro (1942–1967)"),
+ ("BRE", "Brazilian Cruzeiro (1990–1993)"),
+ ("BRR", "Brazilian Cruzeiro (1993–1994)"),
+ ("BRN", "Brazilian New Cruzado (1989–1990)"),
+ ("BRB", "Brazilian New Cruzeiro (1967–1986)"),
+ ("BRL", "Brazilian Real"),
+ ("GBP", "British Pound"),
+ ("BND", "Brunei Dollar"),
+ ("BGL", "Bulgarian Hard Lev"),
+ ("BGN", "Bulgarian Lev"),
+ ("BGO", "Bulgarian Lev (1879–1952)"),
+ ("BGM", "Bulgarian Socialist Lev"),
+ ("BUK", "Burmese Kyat"),
+ ("BIF", "Burundian Franc"),
+ ("XPF", "CFP Franc"),
+ ("KHR", "Cambodian Riel"),
+ ("CAD", "Canadian Dollar"),
+ ("CVE", "Cape Verdean Escudo"),
+ ("KYD", "Cayman Islands Dollar"),
+ ("XAF", "Central African CFA Franc"),
+ ("CLE", "Chilean Escudo"),
+ ("CLP", "Chilean Peso"),
+ ("CLF", "Chilean Unit of Account (UF)"),
+ ("CNX", "Chinese People’s Bank Dollar"),
+ ("CNY", "Chinese Yuan"),
+ ("CNH", "Chinese Yuan (offshore)"),
+ ("COP", "Colombian Peso"),
+ ("COU", "Colombian Real Value Unit"),
+ ("KMF", "Comorian Franc"),
+ ("CDF", "Congolese Franc"),
+ ("CRC", "Costa Rican Colón"),
+ ("HRD", "Croatian Dinar"),
+ ("HRK", "Croatian Kuna"),
+ ("CUC", "Cuban Convertible Peso"),
+ ("CUP", "Cuban Peso"),
+ ("CYP", "Cypriot Pound"),
+ ("CZK", "Czech Koruna"),
+ ("CSK", "Czechoslovak Hard Koruna"),
+ ("DKK", "Danish Krone"),
+ ("DJF", "Djiboutian Franc"),
+ ("DOP", "Dominican Peso"),
+ ("NLG", "Dutch Guilder"),
+ ("XCD", "East Caribbean Dollar"),
+ ("DDM", "East German Mark"),
+ ("ECS", "Ecuadorian Sucre"),
+ ("ECV", "Ecuadorian Unit of Constant Value"),
+ ("EGP", "Egyptian Pound"),
+ ("GQE", "Equatorial Guinean Ekwele"),
+ ("ERN", "Eritrean Nakfa"),
+ ("EEK", "Estonian Kroon"),
+ ("ETB", "Ethiopian Birr"),
+ ("EUR", "Euro"),
+ ("XBA", "European Composite Unit"),
+ ("XEU", "European Currency Unit"),
+ ("XBB", "European Monetary Unit"),
+ ("XBC", "European Unit of Account (XBC)"),
+ ("XBD", "European Unit of Account (XBD)"),
+ ("FKP", "Falkland Islands Pound"),
+ ("FJD", "Fijian Dollar"),
+ ("FIM", "Finnish Markka"),
+ ("FRF", "French Franc"),
+ ("XFO", "French Gold Franc"),
+ ("XFU", "French UIC-Franc"),
+ ("GMD", "Gambian Dalasi"),
+ ("GEK", "Georgian Kupon Larit"),
+ ("GEL", "Georgian Lari"),
+ ("DEM", "German Mark"),
+ ("GHS", "Ghanaian Cedi"),
+ ("GHC", "Ghanaian Cedi (1979–2007)"),
+ ("GIP", "Gibraltar Pound"),
+ ("XAU", "Gold"),
+ ("GRD", "Greek Drachma"),
+ ("GTQ", "Guatemalan Quetzal"),
+ ("GWP", "Guinea-Bissau Peso"),
+ ("GNF", "Guinean Franc"),
+ ("GNS", "Guinean Syli"),
+ ("GYD", "Guyanaese Dollar"),
+ ("HTG", "Haitian Gourde"),
+ ("HNL", "Honduran Lempira"),
+ ("HKD", "Hong Kong Dollar"),
+ ("HUF", "Hungarian Forint"),
+ ("IMP", "IMP"),
+ ("ISK", "Icelandic Króna"),
+ ("ISJ", "Icelandic Króna (1918–1981)"),
+ ("INR", "Indian Rupee"),
+ ("IDR", "Indonesian Rupiah"),
+ ("IRR", "Iranian Rial"),
+ ("IQD", "Iraqi Dinar"),
+ ("IEP", "Irish Pound"),
+ ("ILS", "Israeli New Shekel"),
+ ("ILP", "Israeli Pound"),
+ ("ILR", "Israeli Shekel (1980–1985)"),
+ ("ITL", "Italian Lira"),
+ ("JMD", "Jamaican Dollar"),
+ ("JPY", "Japanese Yen"),
+ ("JOD", "Jordanian Dinar"),
+ ("KZT", "Kazakhstani Tenge"),
+ ("KES", "Kenyan Shilling"),
+ ("KWD", "Kuwaiti Dinar"),
+ ("KGS", "Kyrgystani Som"),
+ ("LAK", "Laotian Kip"),
+ ("LVL", "Latvian Lats"),
+ ("LVR", "Latvian Ruble"),
+ ("LBP", "Lebanese Pound"),
+ ("LSL", "Lesotho Loti"),
+ ("LRD", "Liberian Dollar"),
+ ("LYD", "Libyan Dinar"),
+ ("LTL", "Lithuanian Litas"),
+ ("LTT", "Lithuanian Talonas"),
+ ("LUL", "Luxembourg Financial Franc"),
+ ("LUC", "Luxembourgian Convertible Franc"),
+ ("LUF", "Luxembourgian Franc"),
+ ("MOP", "Macanese Pataca"),
+ ("MKD", "Macedonian Denar"),
+ ("MKN", "Macedonian Denar (1992–1993)"),
+ ("MGA", "Malagasy Ariary"),
+ ("MGF", "Malagasy Franc"),
+ ("MWK", "Malawian Kwacha"),
+ ("MYR", "Malaysian Ringgit"),
+ ("MVR", "Maldivian Rufiyaa"),
+ ("MVP", "Maldivian Rupee (1947–1981)"),
+ ("MLF", "Malian Franc"),
+ ("MTL", "Maltese Lira"),
+ ("MTP", "Maltese Pound"),
+ ("MRU", "Mauritanian Ouguiya"),
+ ("MRO", "Mauritanian Ouguiya (1973–2017)"),
+ ("MUR", "Mauritian Rupee"),
+ ("MXV", "Mexican Investment Unit"),
+ ("MXN", "Mexican Peso"),
+ ("MXP", "Mexican Silver Peso (1861–1992)"),
+ ("MDC", "Moldovan Cupon"),
+ ("MDL", "Moldovan Leu"),
+ ("MCF", "Monegasque Franc"),
+ ("MNT", "Mongolian Tugrik"),
+ ("MAD", "Moroccan Dirham"),
+ ("MAF", "Moroccan Franc"),
+ ("MZE", "Mozambican Escudo"),
+ ("MZN", "Mozambican Metical"),
+ ("MZM", "Mozambican Metical (1980–2006)"),
+ ("MMK", "Myanmar Kyat"),
+ ("NAD", "Namibian Dollar"),
+ ("NPR", "Nepalese Rupee"),
+ ("ANG", "Netherlands Antillean Guilder"),
+ ("TWD", "New Taiwan Dollar"),
+ ("NZD", "New Zealand Dollar"),
+ ("NIO", "Nicaraguan Córdoba"),
+ ("NIC", "Nicaraguan Córdoba (1988–1991)"),
+ ("NGN", "Nigerian Naira"),
+ ("KPW", "North Korean Won"),
+ ("NOK", "Norwegian Krone"),
+ ("OMR", "Omani Rial"),
+ ("PKR", "Pakistani Rupee"),
+ ("XPD", "Palladium"),
+ ("PAB", "Panamanian Balboa"),
+ ("PGK", "Papua New Guinean Kina"),
+ ("PYG", "Paraguayan Guarani"),
+ ("PEI", "Peruvian Inti"),
+ ("PEN", "Peruvian Sol"),
+ ("PES", "Peruvian Sol (1863–1965)"),
+ ("PHP", "Philippine Peso"),
+ ("XPT", "Platinum"),
+ ("PLN", "Polish Zloty"),
+ ("PLZ", "Polish Zloty (1950–1995)"),
+ ("PTE", "Portuguese Escudo"),
+ ("GWE", "Portuguese Guinea Escudo"),
+ ("QAR", "Qatari Rial"),
+ ("XRE", "RINET Funds"),
+ ("RHD", "Rhodesian Dollar"),
+ ("RON", "Romanian Leu"),
+ ("ROL", "Romanian Leu (1952–2006)"),
+ ("RUB", "Russian Ruble"),
+ ("RUR", "Russian Ruble (1991–1998)"),
+ ("RWF", "Rwandan Franc"),
+ ("SVC", "Salvadoran Colón"),
+ ("WST", "Samoan Tala"),
+ ("SAR", "Saudi Riyal"),
+ ("RSD", "Serbian Dinar"),
+ ("CSD", "Serbian Dinar (2002–2006)"),
+ ("SCR", "Seychellois Rupee"),
+ ("SLL", "Sierra Leonean Leone"),
+ ("SLE", "Sierra Leonean New Leone"),
+ ("XAG", "Silver"),
+ ("SGD", "Singapore Dollar"),
+ ("SKK", "Slovak Koruna"),
+ ("SIT", "Slovenian Tolar"),
+ ("SBD", "Solomon Islands Dollar"),
+ ("SOS", "Somali Shilling"),
+ ("ZAR", "South African Rand"),
+ ("ZAL", "South African Rand (financial)"),
+ ("KRH", "South Korean Hwan (1953–1962)"),
+ ("KRW", "South Korean Won"),
+ ("KRO", "South Korean Won (1945–1953)"),
+ ("SSP", "South Sudanese Pound"),
+ ("SUR", "Soviet Rouble"),
+ ("ESP", "Spanish Peseta"),
+ ("ESA", "Spanish Peseta (A account)"),
+ ("ESB", "Spanish Peseta (convertible account)"),
+ ("XDR", "Special Drawing Rights"),
+ ("LKR", "Sri Lankan Rupee"),
+ ("SHP", "St. Helena Pound"),
+ ("XSU", "Sucre"),
+ ("SDD", "Sudanese Dinar (1992–2007)"),
+ ("SDG", "Sudanese Pound"),
+ ("SDP", "Sudanese Pound (1957–1998)"),
+ ("SRD", "Surinamese Dollar"),
+ ("SRG", "Surinamese Guilder"),
+ ("SZL", "Swazi Lilangeni"),
+ ("SEK", "Swedish Krona"),
+ ("CHF", "Swiss Franc"),
+ ("SYP", "Syrian Pound"),
+ ("STN", "São Tomé & PrÃncipe Dobra"),
+ ("STD", "São Tomé & PrÃncipe Dobra (1977–2017)"),
+ ("TVD", "TVD"),
+ ("TJR", "Tajikistani Ruble"),
+ ("TJS", "Tajikistani Somoni"),
+ ("TZS", "Tanzanian Shilling"),
+ ("XTS", "Testing Currency Code"),
+ ("THB", "Thai Baht"),
+ (
+ "XXX",
+ "The codes assigned for transactions where no currency is involved",
+ ),
+ ("TPE", "Timorese Escudo"),
+ ("TOP", "Tongan Paʻanga"),
+ ("TTD", "Trinidad & Tobago Dollar"),
+ ("TND", "Tunisian Dinar"),
+ ("TRY", "Turkish Lira"),
+ ("TRL", "Turkish Lira (1922–2005)"),
+ ("TMT", "Turkmenistani Manat"),
+ ("TMM", "Turkmenistani Manat (1993–2009)"),
+ ("USD", "US Dollar"),
+ ("USN", "US Dollar (Next day)"),
+ ("USS", "US Dollar (Same day)"),
+ ("UGX", "Ugandan Shilling"),
+ ("UGS", "Ugandan Shilling (1966–1987)"),
+ ("UAH", "Ukrainian Hryvnia"),
+ ("UAK", "Ukrainian Karbovanets"),
+ ("AED", "United Arab Emirates Dirham"),
+ ("UYW", "Uruguayan Nominal Wage Index Unit"),
+ ("UYU", "Uruguayan Peso"),
+ ("UYP", "Uruguayan Peso (1975–1993)"),
+ ("UYI", "Uruguayan Peso (Indexed Units)"),
+ ("UZS", "Uzbekistani Som"),
+ ("VUV", "Vanuatu Vatu"),
+ ("VES", "Venezuelan BolÃvar"),
+ ("VEB", "Venezuelan BolÃvar (1871–2008)"),
+ ("VEF", "Venezuelan BolÃvar (2008–2018)"),
+ ("VND", "Vietnamese Dong"),
+ ("VNN", "Vietnamese Dong (1978–1985)"),
+ ("CHE", "WIR Euro"),
+ ("CHW", "WIR Franc"),
+ ("XOF", "West African CFA Franc"),
+ ("YDD", "Yemeni Dinar"),
+ ("YER", "Yemeni Rial"),
+ ("YUN", "Yugoslavian Convertible Dinar (1990–1992)"),
+ ("YUD", "Yugoslavian Hard Dinar (1966–1990)"),
+ ("YUM", "Yugoslavian New Dinar (1994–2002)"),
+ ("YUR", "Yugoslavian Reformed Dinar (1992–1993)"),
+ ("ZWN", "ZWN"),
+ ("ZRN", "Zairean New Zaire (1993–1998)"),
+ ("ZRZ", "Zairean Zaire (1971–1993)"),
+ ("ZMW", "Zambian Kwacha"),
+ ("ZMK", "Zambian Kwacha (1968–2012)"),
+ ("ZWD", "Zimbabwean Dollar (1980–2008)"),
+ ("ZWR", "Zimbabwean Dollar (2008)"),
+ ("ZWL", "Zimbabwean Dollar (2009)"),
+ ],
+ default="GBP",
+ editable=False,
+ max_length=3,
+ ),
+ ),
+ migrations.AlterField(
+ model_name="syllabuspage",
+ name="stripe_product",
+ field=models.ForeignKey(
+ help_text="The stripe product that the user will be subscribed to.",
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="syllabi",
+ to="app.lbcproduct",
+ ),
+ ),
+ ]
diff --git a/app/models/blocks.py b/app/models/blocks.py
index 85cfa766..d6ac3061 100644
--- a/app/models/blocks.py
+++ b/app/models/blocks.py
@@ -1,7 +1,34 @@
-from wagtail import blocks
-from wagtail.blocks import RichTextBlock
+from wagtail.blocks import CharBlock, ChoiceBlock, IntegerBlock
+from wagtail.blocks import ListBlock as WagtailListBlock
+from wagtail.blocks import (
+ PageChooserBlock,
+ RichTextBlock,
+ StreamBlock,
+ StructBlock,
+ URLBlock,
+)
from wagtail.embeds.blocks import EmbedBlock
from wagtail.fields import StreamField
+from wagtail.images.blocks import ImageChooserBlock
+
+block_features = [
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "bold",
+ "italic",
+ "link",
+ "ol",
+ "ul",
+ "hr",
+ "link",
+ "document-link",
+ "image",
+ "embed",
+ "blockquote",
+]
def ArticleContentStream(block_types=None, **kwargs):
@@ -27,3 +54,435 @@ def ArticleContentStream(block_types=None, **kwargs):
return StreamField(
common_block_types + (block_types or []), use_json_field=True, **kwargs
)
+
+
+book_types = [
+ ("classic", "classic"),
+ ("contemporary", "contemporary"),
+ ("all-books", "all-books"),
+]
+
+
+class PlanTitleBlock(StructBlock):
+ class Meta:
+ template = "app/blocks/plan_title_block.html"
+
+
+class PlanPricingBlock(StructBlock):
+ class Meta:
+ template = "app/blocks/plan_pricing_block.html"
+
+
+class SyllabusTitleBlock(StructBlock):
+ class Meta:
+ template = "app/blocks/syllabus_title_block.html"
+
+
+class BookTypeChoice(ChoiceBlock):
+ choices = book_types
+
+ class Meta:
+ default = "all-books"
+
+
+class BackgroundColourChoiceBlock(ChoiceBlock):
+ choices = [
+ ("bg-black text-white", "black"),
+ ("bg-white", "white"),
+ # ('primary', 'primary'),
+ ("tw-bg-yellow", "yellow"),
+ # ('black', 'black'),
+ ("tw-bg-teal", "teal"),
+ ("tw-bg-darkgreen", "darkgreen"),
+ ("tw-bg-lilacgrey", "lilacgrey"),
+ ("tw-bg-coral", "coral"),
+ ("tw-bg-purple", "purple"),
+ ("tw-bg-magenta", "magenta"),
+ ("tw-bg-pink", "pink"),
+ ("tw-bg-lightgreen", "lightgreen"),
+ ]
+
+ class Meta:
+ icon = "fa-paint"
+
+
+class AlignmentChoiceBlock(ChoiceBlock):
+ choices = [
+ ("left", "left"),
+ ("center", "center"),
+ ("right", "right"),
+ ]
+
+ class Meta:
+ icon = "fa-arrows-h"
+ default = "center"
+
+
+class BootstrapButtonSizeChoiceBlock(ChoiceBlock):
+ choices = [
+ ("sm", "small"),
+ ("md", "medium"),
+ ("lg", "large"),
+ ]
+
+ class Meta:
+ icon = "fa-arrows-alt"
+ default = "md"
+
+
+class BootstrapButtonStyleChoiceBlock(ChoiceBlock):
+ choices = [
+ ("btn-outline-dark", "outlined"),
+ ("btn-dark text-yellow", "filled"),
+ ]
+
+ class Meta:
+ default = "btn-outline-dark"
+
+
+class PlanBlock(StructBlock):
+ plan = PageChooserBlock(
+ page_type="app.membershipplanpage",
+ target_model="app.membershipplanpage",
+ can_choose_root=False,
+ )
+ background_color = BackgroundColourChoiceBlock(required=False)
+ promotion_label = CharBlock(
+ required=False, help_text="Label that highlights this product"
+ )
+
+ def get_context(self, value, parent_context=None):
+ context = super().get_context(value, parent_context)
+ context["request_price"] = value["plan"].get_price_for_request(
+ parent_context.get("request")
+ )
+ return context
+
+ class Meta:
+ template = "app/blocks/membership_option_card.html"
+ icon = "fa-money"
+
+
+class MembershipOptionsBlock(StructBlock):
+ heading = CharBlock(
+ required=False,
+ form_classname="full title",
+ default="Choose your plan",
+ )
+ description = RichTextBlock(
+ required=False,
+ default="Your subscription will begin with the most recently published book in your chosen collection.
",
+ )
+ plans = WagtailListBlock(PlanBlock)
+
+ class Meta:
+ template = "app/blocks/membership_options_grid.html"
+ icon = "fa-users"
+
+
+class ButtonBlock(StructBlock):
+ text = CharBlock(max_length=100, required=False)
+ page = PageChooserBlock(required=False, help_text="Pick a page or specify a URL")
+ href = URLBlock(
+ required=False, help_text="Pick a page or specify a URL", label="URL"
+ )
+ size = BootstrapButtonSizeChoiceBlock(required=False, default="md")
+ style = BootstrapButtonStyleChoiceBlock(required=False, default="btn-outline-dark")
+
+ class Meta:
+ template = "app/blocks/cta.html"
+
+
+class HeroTextBlock(StructBlock):
+ heading = CharBlock(max_length=250, form_classname="full title")
+ background_color = BackgroundColourChoiceBlock(required=False)
+ button = ButtonBlock(required=False)
+
+ class Meta:
+ template = "app/blocks/hero_block.html"
+ icon = "fa fa-alphabet"
+
+
+class ListItemBlock(StructBlock):
+ title = CharBlock(max_length=250, form_classname="full title")
+ image = ImageChooserBlock(required=False)
+ image_css = CharBlock(max_length=500, required=False)
+ caption = RichTextBlock(max_length=500)
+ background_color = BackgroundColourChoiceBlock(required=False)
+ button = ButtonBlock(required=False)
+
+ class Meta:
+ template = "app/blocks/list_item_block.html"
+ icon = "fa fa-alphabet"
+
+
+class ColumnWidthChoiceBlock(ChoiceBlock):
+ choices = [
+ ("small", "small"),
+ ("medium", "medium"),
+ ("large", "large"),
+ ]
+
+ class Meta:
+ icon = "fa-arrows-alt"
+ default = "small"
+
+
+class ListBlock(StructBlock):
+ column_width = ColumnWidthChoiceBlock()
+ items = WagtailListBlock(ListItemBlock)
+
+ class Meta:
+ template = "app/blocks/list_block.html"
+ icon = "fa fa-alphabet"
+
+
+class FeaturedBookBlock(StructBlock):
+ book = PageChooserBlock(
+ page_type="app.bookpage",
+ target_model="app.bookpage",
+ can_choose_root=False,
+ )
+ background_color = BackgroundColourChoiceBlock(required=False)
+ promotion_label = CharBlock(
+ required=False, help_text="Label that highlights this product"
+ )
+ description = RichTextBlock(
+ required=False,
+ help_text="This will replace the book's default description. You can use this to provide a more contextualised description of the book",
+ )
+
+ class Meta:
+ template = "app/blocks/featured_book_block.html"
+ icon = "fa fa-book"
+
+
+class FeaturedProductBlock(StructBlock):
+ product = PageChooserBlock(
+ page_type="app.merchandisepage",
+ target_model="app.merchandisepage",
+ can_choose_root=False,
+ )
+ background_color = BackgroundColourChoiceBlock(required=False)
+ promotion_label = CharBlock(
+ required=False, help_text="Label that highlights this product"
+ )
+ description = RichTextBlock(
+ required=False,
+ help_text="This will replace the product's default description. You can use this to provide a more contextualised description of the product",
+ )
+
+ class Meta:
+ template = "app/blocks/featured_product_block.html"
+ icon = "fa fa-shopping-cart"
+
+
+class BookGridBlock(StructBlock):
+ column_width = ColumnWidthChoiceBlock()
+
+ class Meta:
+ template = "app/blocks/book_grid_block.html"
+ icon = "fa fa-book"
+
+
+class ProductGridBlock(StructBlock):
+ column_width = ColumnWidthChoiceBlock()
+
+ class Meta:
+ template = "app/blocks/product_grid_block.html"
+ icon = "fa fa-shopping-cart"
+
+
+class SelectedBooksBlock(BookGridBlock):
+ books = WagtailListBlock(
+ PageChooserBlock(
+ page_type="app.bookpage",
+ target_model="app.bookpage",
+ can_choose_root=False,
+ )
+ )
+
+ def get_context(self, value, parent_context=None):
+ context = super().get_context(value, parent_context)
+ context["books"] = value["books"]
+ return context
+
+
+class SelectedProductsBlock(ProductGridBlock):
+ products = WagtailListBlock(
+ PageChooserBlock(
+ page_type="app.merchandisepage",
+ target_model="app.merchandisepage",
+ can_choose_root=False,
+ )
+ )
+
+ def get_context(self, value, parent_context=None):
+ context = super().get_context(value, parent_context)
+ context["products"] = list(value["products"])
+ return context
+
+
+class RecentlyPublishedBooks(BookGridBlock):
+ max_books = IntegerBlock(default=4, help_text="How many books should show up?")
+ type = BookTypeChoice(default="all-books")
+
+ def get_context(self, value, parent_context=None):
+ from app.models.wagtail import BookPage
+
+ context = super().get_context(value, parent_context)
+ filters = {}
+ if value["type"] != None and value["type"] != "all-books":
+ filters["type"] = value["type"]
+ context["books"] = (
+ BookPage.objects.order_by("-published_date")
+ .live()
+ .public()
+ .filter(published_date__isnull=False, **filters)
+ .all()[: value["max_books"]]
+ )
+ return context
+
+
+class FullProductList(ProductGridBlock):
+ max_products = IntegerBlock(
+ default=10, help_text="How many products should show up?"
+ )
+
+ def get_context(self, value, parent_context=None):
+ from app.models.wagtail import MerchandisePage
+
+ context = super().get_context(value, parent_context)
+ context["products"] = list(
+ MerchandisePage.objects.live().public().all()[: value["max_products"]]
+ )
+ return context
+
+
+class YourBooks(BookGridBlock):
+ class Meta:
+ template = "app/blocks/your_books_grid_block.html"
+ icon = "fa fa-book"
+
+
+class SingleBookBlock(StructBlock):
+ book = PageChooserBlock(
+ page_type="app.bookpage",
+ target_model="app.bookpage",
+ can_choose_root=False,
+ )
+
+ class Meta:
+ template = "app/blocks/single_book_block.html"
+ icon = "fa fa-book"
+
+
+class NewsletterSignupBlock(StructBlock):
+ heading = CharBlock(required=False, max_length=150)
+
+ class Meta:
+ template = "app/blocks/newsletter_signup_block.html"
+ icon = "fa fa-email"
+
+
+class ArticleText(StructBlock):
+ text = RichTextBlock(form_classname="full", features=block_features)
+ alignment = AlignmentChoiceBlock(
+ help_text="Doesn't apply when used inside a column."
+ )
+
+ class Meta:
+ template = "app/blocks/richtext.html"
+
+
+class ColumnBlock(StructBlock):
+ stream_blocks = [
+ ("hero_text", HeroTextBlock()),
+ ("title_image_caption", ListItemBlock()),
+ ("image", ImageChooserBlock()),
+ ("single_book", SingleBookBlock()),
+ ("membership_plan", PlanBlock()),
+ ("richtext", RichTextBlock(features=block_features)),
+ ("button", ButtonBlock()),
+ ("newsletter_signup", NewsletterSignupBlock()),
+ ]
+ background_color = BackgroundColourChoiceBlock(required=False)
+ content = StreamBlock(stream_blocks, required=False)
+
+
+class SingleColumnBlock(ColumnBlock):
+ column_width = ColumnWidthChoiceBlock()
+ alignment = AlignmentChoiceBlock(
+ help_text="Doesn't apply when used inside a column."
+ )
+
+ class Meta:
+ template = "app/blocks/single_column_block.html"
+ icon = "fa fa-th-large"
+
+
+class MultiColumnBlock(StructBlock):
+ background_color = BackgroundColourChoiceBlock(required=False)
+ columns = WagtailListBlock(ColumnBlock, min_num=1, max_num=5)
+
+ class Meta:
+ template = "app/blocks/columns_block.html"
+ icon = "fa fa-th-large"
+
+
+class EventsListBlock(StructBlock):
+ number_of_events = IntegerBlock(required=True, default=3)
+
+ def get_context(self, value, parent_context=None):
+ from app.models.wagtail import MapPage
+
+ context = super().get_context(value, parent_context)
+ context.update(MapPage.get_map_context())
+ return context
+
+ class Meta:
+ template = "app/blocks/event_list_block.html"
+ icon = "fa fa-calendar"
+
+
+class EventsListAndMap(StructBlock):
+ title = CharBlock(required=False)
+ intro = RichTextBlock(required=False)
+ number_of_events = IntegerBlock(required=True, default=3)
+
+ def get_context(self, value, parent_context=None):
+ from app.models.wagtail import MapPage
+
+ context = super().get_context(value, parent_context)
+ context.update(MapPage.get_map_context())
+ return context
+
+ class Meta:
+ template = "app/blocks/event_list_and_map_block.html"
+ icon = "fa fa-map"
+
+
+def create_streamfield(additional_blocks=None, **kwargs):
+ blcks = [
+ ("membership_options", MembershipOptionsBlock()),
+ ("image", ImageChooserBlock()),
+ ("featured_book", FeaturedBookBlock()),
+ ("book_selection", SelectedBooksBlock()),
+ ("recently_published_books", RecentlyPublishedBooks()),
+ ("featured_product", FeaturedProductBlock()),
+ ("product_selection", SelectedProductsBlock()),
+ ("full_product_list", FullProductList()),
+ ("hero_text", HeroTextBlock()),
+ ("heading", CharBlock(form_classname="full title")),
+ ("richtext", ArticleText()),
+ ("list_of_heading_image_text", ListBlock()),
+ ("single_column", SingleColumnBlock()),
+ ("columns", MultiColumnBlock()),
+ ("events_list_and_map", EventsListAndMap()),
+ ("events_list_block", EventsListBlock()),
+ ]
+
+ if isinstance(additional_blocks, list):
+ blcks += additional_blocks
+
+ return StreamField(blcks, null=True, blank=True, use_json_field=True, **kwargs)
diff --git a/app/models/settings.py b/app/models/settings.py
index 1d48fb81..fdc48385 100644
--- a/app/models/settings.py
+++ b/app/models/settings.py
@@ -2,8 +2,8 @@
from django.utils.translation import gettext_lazy as _
from wagtail import hooks
from wagtail.admin.menu import MenuItem
-from wagtail.admin.panels import StreamFieldPanel
-from wagtail.contrib.settings.models import BaseSetting, register_setting
+from wagtail.admin.panels import FieldPanel
+from wagtail.contrib.settings.models import BaseSiteSetting, register_setting
from wagtail.fields import RichTextField
from wagtailautocomplete.edit_handlers import AutocompletePanel
@@ -16,23 +16,23 @@
@register_setting(icon="users")
-class MembershipJourney(BaseSetting):
+class MembershipJourney(BaseSiteSetting):
welcome_content = create_streamfield()
- panels = [StreamFieldPanel("welcome_content")]
+ panels = [FieldPanel("welcome_content")]
@register_setting(icon="users")
-class MemberProfilePage(BaseSetting):
+class MemberProfilePage(BaseSiteSetting):
profile_page_content = create_streamfield(
[
("your_book_list", YourBooks()),
]
)
- panels = [StreamFieldPanel("profile_page_content")]
+ panels = [FieldPanel("profile_page_content")]
@register_setting(icon="money")
-class UpsellPlanSettings(BaseSetting):
+class UpsellPlanSettings(BaseSiteSetting):
class Meta:
verbose_name = _("Review Fee Settings")
@@ -56,14 +56,13 @@ class Meta:
upgrade_membership_text = RichTextField(
blank=False,
- features=["bold", "italic", "blockquote"],
+ features=["bold", "italic", "blockquote"],
default="""
You’re currently paying {{ old_price }}. Select this option if it’s all you can afford right now — that is totally OK.
Other members paying solidarity rates will make it possible for us to continue offering this, so please consider if you can afford to increase your rate or if you genuinely need to stay here.
""",
)
-
upsell_plan = models.ForeignKey(
MembershipPlanPage,
on_delete=models.SET_NULL,
diff --git a/app/models/stripe.py b/app/models/stripe.py
index c02b81ae..f11ea2bc 100644
--- a/app/models/stripe.py
+++ b/app/models/stripe.py
@@ -26,7 +26,7 @@
from app.utils.stripe import (
DONATION_PRODUCT_NAME,
SHIPPING_PRODUCT_NAME,
- get_donation_product,
+ create_donation_line_item,
get_primary_product_for_djstripe_subscription,
)
@@ -127,20 +127,13 @@ def upsert_regular_donation(self, amount: float, metadata: Dict[str, Any] = dict
# Create a new donation SI with the amount arg
plan = self.items.first().plan
items.append(
- {
- "price_data": {
- "unit_amount_decimal": int(amount * 100),
- "product": get_donation_product().id,
- "metadata": {**metadata},
- # Mirror details from another SI
- "currency": plan.currency,
- "recurring": {
- "interval": plan.interval,
- "interval_count": plan.interval_count,
- },
- },
- "quantity": 1,
- }
+ create_donation_line_item(
+ amount=amount,
+ interval_count=plan.interval_count,
+ interval=plan.interval,
+ currency=plan.currency,
+ metadata=metadata,
+ )
)
subscription = stripe.Subscription.modify(
@@ -330,6 +323,10 @@ def next_billing_date(self):
@register_snippet
class LBCProduct(djstripe.models.Product):
+ """
+ Prices are for v1 flow; not applicable to v2 flow
+ """
+
class Meta:
proxy = True
@@ -360,12 +357,12 @@ def basic_price(self):
autocomplete_search_field = "name"
def autocomplete_label(self):
- from app.models import MembershipPlanPrice
+ # from app.models import MembershipPlanPrice
- price = MembershipPlanPrice.objects.filter(products=self).first()
+ # price = MembershipPlanPrice.objects.filter(products=self).first()
s = getattr(self, self.autocomplete_search_field)
- if price:
- return f"{s} (applies to price: {price})"
+ # if price:
+ # return f"{s} (applies to price: {price})"
return s
def get_prices_for_country(self, iso_a2: str, **kwargs):
diff --git a/app/models/wagtail.py b/app/models/wagtail.py
index 9da77a14..db684850 100644
--- a/app/models/wagtail.py
+++ b/app/models/wagtail.py
@@ -1,14 +1,12 @@
from typing import Optional
import time
-import urllib.parse
+import uuid
from datetime import datetime
-from importlib.metadata import metadata
-from urllib.parse import urlencode
import djstripe.models
+import orjson
import shopify
-import stripe
from django.conf import settings
from django.contrib.contenttypes.models import ContentType
from django.contrib.postgres.fields import ArrayField
@@ -16,72 +14,41 @@
from django.core.validators import MinValueValidator
from django.db import models
from django.db.models import Q
-from django.http.response import Http404
-from django.shortcuts import get_object_or_404, redirect
from django.templatetags.static import static
-from django.urls import reverse, reverse_lazy
+from django.urls import reverse
from django.utils.decorators import method_decorator
from django.utils.html import strip_tags
-from django_countries import countries
from djmoney.models.fields import Money, MoneyField
from modelcluster.fields import ParentalKey, ParentalManyToManyField
from modelcluster.models import ClusterableModel
-from wagtail import blocks
from wagtail.admin.panels import (
FieldPanel,
FieldRowPanel,
HelpPanel,
InlinePanel,
MultiFieldPanel,
- PageChooserPanel,
- StreamFieldPanel,
)
from wagtail.contrib.routable_page.models import RoutablePageMixin, route
-from wagtail.fields import RichTextField, StreamField
-from wagtail.images.blocks import ImageChooserBlock
-from wagtail.images.edit_handlers import ImageChooserPanel
+from wagtail.fields import RichTextField
from wagtail.images.models import AbstractImage, AbstractRendition
from wagtail.models import Orderable, Page, Site
from wagtail.rich_text import get_text_for_indexing
from wagtail.search import index
-from wagtail.snippets.blocks import SnippetChooserBlock
from wagtail.snippets.models import register_snippet
from wagtailautocomplete.edit_handlers import AutocompletePanel
from wagtailcache.cache import WagtailCacheMixin, cache_page
from wagtailseo import utils
from wagtailseo.models import SeoMixin, SeoType, TwitterCard
-from app.models.blocks import ArticleContentStream
+from app.models.blocks import *
from app.models.circle import CircleEvent
-from app.models.django import User
-from app.utils import include_keys
from app.utils.abstract_model_querying import abstract_page_query_filter
from app.utils.cache import django_cached
from app.utils.shopify import metafields_to_dict
from app.utils.stripe import create_shipping_zone_metadata, get_shipping_product
-import orjson
from .stripe import LBCProduct, ShippingZone
-block_features = [
- "h1",
- "h2",
- "h3",
- "h4",
- "h5",
- "bold",
- "italic",
- "link",
- "ol",
- "ul",
- "hr",
- "link",
- "document-link",
- "image",
- "embed",
- "blockquote",
-]
-
class SeoMetadataMixin(SeoMixin, Page):
class Meta:
@@ -157,13 +124,20 @@ class Meta:
# product = SnippetChooserBlock(djstripe.models.LBCProduct)
+class Interval(models.TextChoices):
+ year = "year"
+ month = "month"
+ week = "week"
+ day = "day"
+
+
@register_snippet
class MembershipPlanPrice(Orderable, ClusterableModel):
# name = models.CharField(max_length=150, blank=True)
plan = ParentalKey("app.MembershipPlanPage", related_name="prices")
price = MoneyField(
- default=Money(0, "GBP"),
+ default=0,
max_digits=14,
decimal_places=2,
default_currency="GBP",
@@ -171,12 +145,6 @@ class MembershipPlanPrice(Orderable, ClusterableModel):
blank=False,
)
- class Interval(models.TextChoices):
- year = "year"
- month = "month"
- week = "week"
- day = "day"
-
interval = models.CharField(
max_length=10,
choices=Interval.choices,
@@ -187,6 +155,16 @@ class Interval(models.TextChoices):
interval_count = models.IntegerField(default=1, null=False, blank=True)
+ ### v2 flow
+ title = models.CharField(max_length=150, blank=True, null=True)
+ benefits = RichTextField(
+ features=["ul"],
+ help_text="List of pithy beneficial features of this plan",
+ null=True,
+ blank=True,
+ )
+ ### /v2
+
description = RichTextField(null=True, blank=True)
free_shipping_zones = ParentalManyToManyField(
@@ -204,21 +182,13 @@ class Interval(models.TextChoices):
products = ParentalManyToManyField(
LBCProduct,
blank=True,
- help_text="The stripe product that the user will be subscribed to. If multiple products are set here, then the user will be asked to pick which one they want, e.g. Classic or Contemporary books.",
+ help_text="(For V1-only signup flow.) The stripe product that the user will be subscribed to. If multiple products are set here, then the user will be asked to pick which one they want, e.g. Classic or Contemporary books.",
+ verbose_name="[V1] stripe products",
)
panels = [
- FieldRowPanel(
- [
- FieldPanel("price"),
- ]
- ),
- MultiFieldPanel(
- [
- AutocompletePanel("products", target_model=LBCProduct),
- ],
- heading="Product",
- ),
+ FieldPanel("title", classname="full title"),
+ FieldPanel("price", classname="collapsibl collapsed"),
FieldRowPanel(
[
FieldPanel("interval_count"),
@@ -238,6 +208,14 @@ class Interval(models.TextChoices):
classname="full",
help_text="Displayed to visitors who are considering purchasing a plan at this price.",
),
+ FieldPanel("benefits"),
+ MultiFieldPanel(
+ [
+ AutocompletePanel("products", target_model=LBCProduct),
+ ],
+ heading="V1 signup flow",
+ classname="collapsible collapsed",
+ ),
]
@property
@@ -259,6 +237,15 @@ def shipping_fee(self, zone) -> Money:
return Money(0, zone.rate_currency)
return zone.rate * self.deliveries_per_billing_period
+ def equivalent_monthly_shipping_fee(self, zone) -> Money:
+ if self.free_shipping_zones.filter(code=zone.code).exists():
+ return Money(0, zone.rate_currency)
+ return (
+ zone.rate
+ * self.deliveries_per_billing_period
+ / self.months_per_billing_cycle
+ )
+
def price_including_shipping(self, zone):
return self.price + self.shipping_fee(zone)
@@ -313,6 +300,20 @@ def months_per_billing_cycle(self):
def equivalent_monthly_price(self) -> str:
return self.price / self.months_per_billing_cycle
+ @property
+ def monthly_price_string(self) -> str:
+ money = str(self.equivalent_monthly_price)
+ s = f"{money}/month"
+ return s
+
+ def equivalent_monthly_price_string_including_shipping(self, zone) -> str:
+ money = str(
+ self.equivalent_monthly_price
+ + self.shipping_fee(zone) / self.months_per_billing_cycle
+ )
+ s = f"{money}/month"
+ return s
+
@property
def equivalent_monthly_price_string(self) -> str:
money = str(self.equivalent_monthly_price)
@@ -321,6 +322,16 @@ def equivalent_monthly_price_string(self) -> str:
return f"{s} + p&p"
return s
+ @property
+ def shipping_price_string_uk(self) -> str:
+ return self.shipping_fee(ShippingZone.get_for_country(iso_a2="GB"))
+
+ @property
+ def price_string_including_uk_shipping(self) -> str:
+ return self.price_string_including_shipping(
+ ShippingZone.get_for_country(iso_a2="GB")
+ )
+
def __str__(self) -> str:
return f"{self.price_string} on {self.plan}"
@@ -424,6 +435,16 @@ def from_si(cls, si: djstripe.models.SubscriptionItem):
).first()
return current_plan_price
+ @property
+ def discount_percent(self):
+ if self.interval != "year":
+ return None
+ monthly_price = self.plans.first().monthly_price.price
+ discount_percent = (
+ monthly_price - self.equivalent_monthly_price
+ ) / monthly_price
+ return discount_percent
+
@register_snippet
class Upsell(Orderable, ClusterableModel):
@@ -469,130 +490,42 @@ def url(self, country_id=None):
)
-class PlanTitleBlock(blocks.StructBlock):
- class Meta:
- template = "app/blocks/plan_title_block.html"
-
- # def get_context(self, value, parent_context=None):
- # context = super().get_context(value, parent_context)
- # context['page'] = parent_context['page']
- # return context
-
-
-class PlanPricingBlock(blocks.StructBlock):
- class Meta:
- template = "app/blocks/plan_pricing_block.html"
-
- # def get_context(self, value, parent_context=None):
- # context = super().get_context(value, parent_context)
- # context['page'] = parent_context['page']
- # return context
-
-
-class BookTypeChoice(blocks.ChoiceBlock):
- choices = [
- ("classic", "classic"),
- ("contemporary", "contemporary"),
- ("all-books", "all-books"),
- ]
-
- class Meta:
- default = "all-books"
-
-
-class BackgroundColourChoiceBlock(blocks.ChoiceBlock):
- choices = [
- ("bg-black text-white", "black"),
- ("bg-white", "white"),
- # ('primary', 'primary'),
- ("tw-bg-yellow", "yellow"),
- # ('black', 'black'),
- ("tw-bg-teal", "teal"),
- ("tw-bg-darkgreen", "darkgreen"),
- ("tw-bg-lilacgrey", "lilacgrey"),
- ("tw-bg-coral", "coral"),
- ("tw-bg-purple", "purple"),
- ("tw-bg-magenta", "magenta"),
- ("tw-bg-pink", "pink"),
- ("tw-bg-lightgreen", "lightgreen"),
- ]
-
- class Meta:
- icon = "fa-paint"
-
-
-class AlignmentChoiceBlock(blocks.ChoiceBlock):
- choices = [
- ("left", "left"),
- ("center", "center"),
- ("right", "right"),
- ]
-
- class Meta:
- icon = "fa-arrows-h"
- default = "center"
-
+def create_default_layout_syllabus():
+ return {"id": uuid.uuid4(), "type": "syllabus_title", "value": {}}
-class BootstrapButtonSizeChoiceBlock(blocks.ChoiceBlock):
- choices = [
- ("sm", "small"),
- ("md", "medium"),
- ("lg", "large"),
- ]
-
- class Meta:
- icon = "fa-arrows-alt"
- default = "md"
-
-
-class BootstrapButtonStyleChoiceBlock(blocks.ChoiceBlock):
- choices = [
- ("btn-outline-dark", "outlined"),
- ("btn-dark text-yellow", "filled"),
- ]
-
- class Meta:
- default = "btn-outline-dark"
-
-class PlanBlock(blocks.StructBlock):
- plan = blocks.PageChooserBlock(
- page_type="app.membershipplanpage",
- target_model="app.membershipplanpage",
- can_choose_root=False,
+@register_snippet
+class SyllabusPage(Page, Orderable, ClusterableModel):
+ # title
+ description = RichTextField(null=True, blank=True)
+ book_types = models.CharField(
+ max_length=100,
+ choices=book_types,
+ default="all-books",
+ help_text="Used to display relevant books",
+ blank=True,
)
- background_color = BackgroundColourChoiceBlock(required=False)
- promotion_label = blocks.CharBlock(
- required=False, help_text="Label that highlights this product"
+ stripe_product = models.ForeignKey(
+ LBCProduct,
+ on_delete=models.SET_NULL,
+ blank=False,
+ null=True,
+ related_name="syllabi",
+ help_text="The stripe product that the user will be subscribed to.",
)
- def get_context(self, value, parent_context=None):
- context = super().get_context(value, parent_context)
- context["request_price"] = value["plan"].get_price_for_request(
- parent_context.get("request")
- )
- return context
-
- class Meta:
- template = "app/blocks/membership_option_card.html"
- icon = "fa-money"
-
-
-class MembershipOptionsBlock(blocks.StructBlock):
- heading = blocks.CharBlock(
- required=False,
- form_classname="full title",
- default="Choose your plan",
- )
- description = blocks.RichTextBlock(
- required=False,
- default="Your subscription will begin with the most recently published book in your chosen collection.
",
+ layout = create_streamfield(
+ [
+ ("syllabus_title", SyllabusTitleBlock()),
+ ],
+ default=create_default_layout_syllabus,
)
- plans = blocks.ListBlock(PlanBlock)
- class Meta:
- template = "app/blocks/membership_options_grid.html"
- icon = "fa-users"
+ content_panels = Page.content_panels + [
+ FieldPanel("description"),
+ FieldPanel("book_types"),
+ AutocompletePanel("stripe_product", target_model=LBCProduct),
+ ]
class CustomImage(AbstractImage):
@@ -663,8 +596,8 @@ class BlogPage(WagtailCacheMixin, ArticleSeoMixin, Page):
content_panels = Page.content_panels + [
FieldPanel("intro"),
- StreamFieldPanel("body", classname="full"),
- ImageChooserPanel("feed_image"),
+ FieldPanel("body", classname="full"),
+ FieldPanel("feed_image"),
]
seo_description_sources = ArticleSeoMixin.seo_description_sources + ["intro"]
@@ -723,10 +656,9 @@ def get_args_for_page(cls, product, metafields):
description=product.attributes.get("body_html"),
image_url=image_urls[0] if len(images) > 0 else "",
image_urls=image_urls,
- cached_price=cls.get_lowest_price(product)
+ cached_price=cls.get_lowest_price(product),
)
-
@classmethod
def get_root_page(cls):
"""
@@ -776,7 +708,7 @@ def sync_from_shopify_product_id(cls, shopify_product_id):
metafields = metafields_to_dict(metafields)
if cls.objects.filter(shopify_product_id=shopify_product_id).exists():
return cls.update_instance_for_product(product, metafields)
- else:
+ else:
return cls.create_instance_for_product(product, metafields)
@property
@@ -856,315 +788,11 @@ def get_specific_product_by_shopify_id(cls, shopify_product_id):
)
-class ButtonBlock(blocks.StructBlock):
- text = blocks.CharBlock(max_length=100, required=False)
- page = blocks.PageChooserBlock(
- required=False, help_text="Pick a page or specify a URL"
- )
- href = blocks.URLBlock(
- required=False, help_text="Pick a page or specify a URL", label="URL"
- )
- size = BootstrapButtonSizeChoiceBlock(required=False, default="md")
- style = BootstrapButtonStyleChoiceBlock(required=False, default="btn-outline-dark")
-
- class Meta:
- template = "app/blocks/cta.html"
-
-
-class HeroTextBlock(blocks.StructBlock):
- heading = blocks.CharBlock(max_length=250, form_classname="full title")
- background_color = BackgroundColourChoiceBlock(required=False)
- button = ButtonBlock(required=False)
-
- class Meta:
- template = "app/blocks/hero_block.html"
- icon = "fa fa-alphabet"
-
-
-class ListItemBlock(blocks.StructBlock):
- title = blocks.CharBlock(max_length=250, form_classname="full title")
- image = ImageChooserBlock(required=False)
- image_css = blocks.CharBlock(max_length=500, required=False)
- caption = blocks.RichTextBlock(max_length=500)
- background_color = BackgroundColourChoiceBlock(required=False)
- button = ButtonBlock(required=False)
-
- class Meta:
- template = "app/blocks/list_item_block.html"
- icon = "fa fa-alphabet"
-
-
-class ColumnWidthChoiceBlock(blocks.ChoiceBlock):
- choices = [
- ("small", "small"),
- ("medium", "medium"),
- ("large", "large"),
- ]
-
- class Meta:
- icon = "fa-arrows-alt"
- default = "small"
-
-
-class ListBlock(blocks.StructBlock):
- column_width = ColumnWidthChoiceBlock()
- items = blocks.ListBlock(ListItemBlock)
-
- class Meta:
- template = "app/blocks/list_block.html"
- icon = "fa fa-alphabet"
-
-
-class FeaturedBookBlock(blocks.StructBlock):
- book = blocks.PageChooserBlock(
- page_type="app.bookpage",
- target_model="app.bookpage",
- can_choose_root=False,
- )
- background_color = BackgroundColourChoiceBlock(required=False)
- promotion_label = blocks.CharBlock(
- required=False, help_text="Label that highlights this product"
- )
- description = blocks.RichTextBlock(
- required=False,
- help_text="This will replace the book's default description. You can use this to provide a more contextualised description of the book",
- )
-
- class Meta:
- template = "app/blocks/featured_book_block.html"
- icon = "fa fa-book"
-
-
-class FeaturedProductBlock(blocks.StructBlock):
- product = blocks.PageChooserBlock(
- page_type="app.merchandisepage",
- target_model="app.merchandisepage",
- can_choose_root=False,
- )
- background_color = BackgroundColourChoiceBlock(required=False)
- promotion_label = blocks.CharBlock(
- required=False, help_text="Label that highlights this product"
- )
- description = blocks.RichTextBlock(
- required=False,
- help_text="This will replace the product's default description. You can use this to provide a more contextualised description of the product",
- )
-
- class Meta:
- template = "app/blocks/featured_product_block.html"
- icon = "fa fa-shopping-cart"
-
-
-class BookGridBlock(blocks.StructBlock):
- column_width = ColumnWidthChoiceBlock()
-
- class Meta:
- template = "app/blocks/book_grid_block.html"
- icon = "fa fa-book"
-
-
-class ProductGridBlock(blocks.StructBlock):
- column_width = ColumnWidthChoiceBlock()
-
- class Meta:
- template = "app/blocks/product_grid_block.html"
- icon = "fa fa-shopping-cart"
-
-
-class SelectedBooksBlock(BookGridBlock):
- books = blocks.ListBlock(
- blocks.PageChooserBlock(
- page_type="app.bookpage",
- target_model="app.bookpage",
- can_choose_root=False,
- )
- )
-
- def get_context(self, value, parent_context=None):
- context = super().get_context(value, parent_context)
- context["books"] = value["books"]
- return context
-
-
-class SelectedProductsBlock(ProductGridBlock):
- products = blocks.ListBlock(
- blocks.PageChooserBlock(
- page_type="app.merchandisepage",
- target_model="app.merchandisepage",
- can_choose_root=False,
- )
- )
-
- def get_context(self, value, parent_context=None):
- context = super().get_context(value, parent_context)
- context["products"] = list(value["products"])
- return context
-
-
-class RecentlyPublishedBooks(BookGridBlock):
- max_books = blocks.IntegerBlock(
- default=4, help_text="How many books should show up?"
- )
- type = BookTypeChoice(default="all-books")
-
- def get_context(self, value, parent_context=None):
- context = super().get_context(value, parent_context)
- filters = {}
- if value["type"] != None and value["type"] != "all-books":
- filters["type"] = value["type"]
- context["books"] = (
- BookPage.objects.order_by("-published_date")
- .live()
- .public()
- .filter(published_date__isnull=False, **filters)
- .all()[: value["max_books"]]
- )
- return context
-
-
-class FullProductList(ProductGridBlock):
- max_products = blocks.IntegerBlock(
- default=10, help_text="How many products should show up?"
- )
-
- def get_context(self, value, parent_context=None):
- context = super().get_context(value, parent_context)
- context["products"] = list(
- MerchandisePage.objects.live().public().all()[: value["max_products"]]
- )
- return context
-
-
-class YourBooks(BookGridBlock):
- class Meta:
- template = "app/blocks/your_books_grid_block.html"
- icon = "fa fa-book"
-
-
-class SingleBookBlock(blocks.StructBlock):
- book = blocks.PageChooserBlock(
- page_type="app.bookpage",
- target_model="app.bookpage",
- can_choose_root=False,
- )
-
- class Meta:
- template = "app/blocks/single_book_block.html"
- icon = "fa fa-book"
-
-
-class NewsletterSignupBlock(blocks.StructBlock):
- heading = blocks.CharBlock(required=False, max_length=150)
-
- class Meta:
- template = "app/blocks/newsletter_signup_block.html"
- icon = "fa fa-email"
-
-
-class ArticleText(blocks.StructBlock):
- text = blocks.RichTextBlock(form_classname="full", features=block_features)
- alignment = AlignmentChoiceBlock(
- help_text="Doesn't apply when used inside a column."
- )
-
- class Meta:
- template = "app/blocks/richtext.html"
-
-
-class ColumnBlock(blocks.StructBlock):
- stream_blocks = [
- ("hero_text", HeroTextBlock()),
- ("title_image_caption", ListItemBlock()),
- ("image", ImageChooserBlock()),
- ("single_book", SingleBookBlock()),
- ("membership_plan", PlanBlock()),
- ("richtext", blocks.RichTextBlock(features=block_features)),
- ("button", ButtonBlock()),
- ("newsletter_signup", NewsletterSignupBlock()),
- ]
- background_color = BackgroundColourChoiceBlock(required=False)
- content = blocks.StreamBlock(stream_blocks, required=False)
-
-
-class SingleColumnBlock(ColumnBlock):
- column_width = ColumnWidthChoiceBlock()
- alignment = AlignmentChoiceBlock(
- help_text="Doesn't apply when used inside a column."
- )
-
- class Meta:
- template = "app/blocks/single_column_block.html"
- icon = "fa fa-th-large"
-
-
-class MultiColumnBlock(blocks.StructBlock):
- background_color = BackgroundColourChoiceBlock(required=False)
- columns = blocks.ListBlock(ColumnBlock, min_num=1, max_num=5)
-
- class Meta:
- template = "app/blocks/columns_block.html"
- icon = "fa fa-th-large"
-
-
-class EventsListBlock(blocks.StructBlock):
- number_of_events = blocks.IntegerBlock(required=True, default=3)
-
- def get_context(self, value, parent_context=None):
- context = super().get_context(value, parent_context)
- context.update(MapPage.get_map_context())
- return context
-
- class Meta:
- template = "app/blocks/event_list_block.html"
- icon = "fa fa-calendar"
-
-
-class EventsListAndMap(blocks.StructBlock):
- title = blocks.CharBlock(required=False)
- intro = blocks.RichTextBlock(required=False)
- number_of_events = blocks.IntegerBlock(required=True, default=3)
-
- def get_context(self, value, parent_context=None):
- context = super().get_context(value, parent_context)
- context.update(MapPage.get_map_context())
- return context
-
- class Meta:
- template = "app/blocks/event_list_and_map_block.html"
- icon = "fa fa-map"
-
-
-def create_streamfield(additional_blocks=None, **kwargs):
- blcks = [
- ("membership_options", MembershipOptionsBlock()),
- ("image", ImageChooserBlock()),
- ("featured_book", FeaturedBookBlock()),
- ("book_selection", SelectedBooksBlock()),
- ("recently_published_books", RecentlyPublishedBooks()),
- ("featured_product", FeaturedProductBlock()),
- ("product_selection", SelectedProductsBlock()),
- ("full_product_list", FullProductList()),
- ("hero_text", HeroTextBlock()),
- ("heading", blocks.CharBlock(form_classname="full title")),
- ("richtext", ArticleText()),
- ("list_of_heading_image_text", ListBlock()),
- ("single_column", SingleColumnBlock()),
- ("columns", MultiColumnBlock()),
- ("events_list_and_map", EventsListAndMap()),
- ("events_list_block", EventsListBlock()),
- ]
-
- if isinstance(additional_blocks, list):
- blcks += additional_blocks
-
- return StreamField(blcks, null=True, blank=True, use_json_field=True, **kwargs)
-
-
@method_decorator(cache_page, name="serve")
class MerchandiseIndexPage(WagtailCacheMixin, IndexPageSeoMixin, Page):
show_in_menus_default = True
layout = create_streamfield()
- content_panels = Page.content_panels + [StreamFieldPanel("layout")]
+ content_panels = Page.content_panels + [FieldPanel("layout")]
@method_decorator(cache_page, name="serve")
@@ -1194,9 +822,7 @@ class BookPage(WagtailCacheMixin, BaseShopifyProductPage):
type = models.CharField(max_length=300, blank=True)
layout = create_streamfield()
- content_panels = BaseShopifyProductPage.content_panels + [
- StreamFieldPanel("layout")
- ]
+ content_panels = BaseShopifyProductPage.content_panels + [FieldPanel("layout")]
@classmethod
def get_root_page(cls):
@@ -1220,6 +846,7 @@ def get_args_for_page(cls, product, metafields):
class Meta:
ordering = ["-published_date"]
+
def metafields_array_to_list(arg):
value = []
if isinstance(arg, str):
@@ -1231,10 +858,34 @@ def metafields_array_to_list(arg):
else:
return []
+
+def create_default_layout_plan():
+ return (
+ {"id": uuid.uuid4(), "type": "plan_title", "value": {}},
+ {"id": uuid.uuid4(), "type": "plan_pricing", "value": {}},
+ )
+
+
@method_decorator(cache_page, name="serve")
class MembershipPlanPage(WagtailCacheMixin, ArticleSeoMixin, Page):
parent_page_types = ["app.HomePage"]
+ ### v2 signup flow fields
+ display_in_quiz_flow = models.BooleanField(
+ default=False, verbose_name="Display in v2 signup flow"
+ )
+ benefits = RichTextField(
+ help_text="List of pithy beneficial features of this plan. Bullet points are automatically formatted as ticks.",
+ null=True,
+ blank=True,
+ )
+ syllabi = ParentalManyToManyField(
+ SyllabusPage,
+ related_name="plans",
+ help_text="The syllabi available for this plan",
+ )
+ ### /v2
+
deliveries_per_year = models.PositiveIntegerField(
default=0, validators=[MinValueValidator(0)]
)
@@ -1254,17 +905,34 @@ class MembershipPlanPage(WagtailCacheMixin, ArticleSeoMixin, Page):
layout = create_streamfield(
[("plan_title", PlanTitleBlock()), ("plan_pricing", PlanPricingBlock())],
- default=(("plan_title", {}), ("plan_pricing", {})),
+ default=create_default_layout_plan,
)
panels = content_panels = Page.content_panels + [
- FieldPanel("deliveries_per_year"),
- FieldPanel("description"),
- InlinePanel("prices", min_num=1, label="Subscription Pricing Options"),
- InlinePanel("upsells", heading="Upsell options", label="Upsell option"),
- FieldPanel("pick_product_title", classname="full title"),
- FieldPanel("pick_product_text"),
- StreamFieldPanel("layout"),
+ FieldPanel("deliveries_per_year", heading="[v1+v2] Deliveries per year"),
+ InlinePanel(
+ "prices", min_num=1, label="Prices", classname="collapsible collapsed"
+ ),
+ MultiFieldPanel(
+ [
+ FieldPanel("display_in_quiz_flow"),
+ FieldPanel("description"),
+ FieldPanel("benefits"),
+ AutocompletePanel("syllabi", target_model=SyllabusPage),
+ ],
+ heading="V2 signup flow",
+ classname="collapsible",
+ ),
+ MultiFieldPanel(
+ [
+ InlinePanel("upsells", label="Upsell prices"),
+ FieldPanel("pick_product_title", classname="full title"),
+ FieldPanel("pick_product_text"),
+ ],
+ heading="V1 signup flow",
+ classname="collapsible collapsed",
+ ),
+ FieldPanel("layout"),
]
@property
@@ -1300,7 +968,9 @@ def annual_price(self) -> MembershipPlanPrice:
return self.prices.filter(interval="year").order_by("interval_count").first()
@property
- def annual_percent_off_per_month(self) -> str:
+ def annual_percent_off_per_month(self):
+ if self.basic_price is None or self.annual_price is None:
+ return None
return (
self.annual_price.equivalent_monthly_price - self.basic_price.price
) / self.basic_price.price
@@ -1320,21 +990,21 @@ def get_context(self, request, *args, **kwargs):
class HomePage(WagtailCacheMixin, IndexPageSeoMixin, RoutablePageMixin, Page):
show_in_menus_default = True
layout = create_streamfield()
- content_panels = Page.content_panels + [StreamFieldPanel("layout")]
+ content_panels = Page.content_panels + [FieldPanel("layout")]
@method_decorator(cache_page, name="serve")
class InformationPage(WagtailCacheMixin, ArticleSeoMixin, Page):
show_in_menus_default = True
layout = create_streamfield()
- content_panels = Page.content_panels + [StreamFieldPanel("layout")]
+ content_panels = Page.content_panels + [FieldPanel("layout")]
@method_decorator(cache_page, name="serve")
class BookIndexPage(WagtailCacheMixin, IndexPageSeoMixin, Page):
show_in_menus_default = True
layout = create_streamfield()
- content_panels = Page.content_panels + [StreamFieldPanel("layout")]
+ content_panels = Page.content_panels + [FieldPanel("layout")]
@method_decorator(cache_page, name="serve")
diff --git a/app/settings/base.py b/app/settings/base.py
index f1ad2bcf..f9778655 100644
--- a/app/settings/base.py
+++ b/app/settings/base.py
@@ -46,7 +46,6 @@
"django_countries",
"django_gravatar",
"active_link",
- "wagtailfontawesome",
# "wagtail_transfer",
"django.contrib.gis",
"django.contrib.admin",
@@ -68,6 +67,7 @@
"oauth2_provider",
"django.contrib.humanize",
"django_dbq",
+ "slippers",
]
IMPORT_EXPORT_USE_TRANSACTIONS = True
@@ -112,8 +112,9 @@
"wagtailmenus.context_processors.wagtailmenus",
# "app.context_processors.user_data",
],
+ "builtins": ["slippers.templatetags.slippers"],
},
- },
+ }
]
WSGI_APPLICATION = "app.wsgi.application"
@@ -458,4 +459,6 @@
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
-DATA_UPLOAD_MAX_NUMBER_FIELDS = 10240
\ No newline at end of file
+DATA_UPLOAD_MAX_NUMBER_FIELDS = 10240
+
+SESSION_ENGINE = "django.contrib.sessions.backends.signed_cookies"
diff --git a/app/slippers_autoload_components.py b/app/slippers_autoload_components.py
new file mode 100644
index 00000000..692127e2
--- /dev/null
+++ b/app/slippers_autoload_components.py
@@ -0,0 +1,76 @@
+from pathlib import Path
+
+from django.conf import settings
+from slippers.templatetags.slippers import register_components
+
+SLIPPERS_SUBDIR = "components"
+
+
+def find_slipper_dirs():
+ dirs = []
+ from django.template import engines
+
+ for backend in engines.all():
+ for loader in backend.engine.template_loaders:
+ if not hasattr(loader, "get_dirs"):
+ continue
+ for templates_dir in loader.get_dirs():
+ templates_path = Path(templates_dir)
+ slippers_dir = templates_path / SLIPPERS_SUBDIR
+ if slippers_dir.exists():
+ dirs.append(templates_path)
+ return dirs
+
+
+def register_dir_components(dir, templates_path):
+ register_components(
+ {
+ template.stem: str(template.relative_to(templates_path))
+ for template in dir.glob("*.html")
+ }
+ )
+
+
+def register():
+ """
+ Register discovered slippers components.
+ """
+ import os
+
+ from django.template import engines
+
+ dir_path = Path(os.path.dirname(os.path.realpath(__file__)))
+ template_dirs = [dir_path / "templates"]
+ # template_dirs = find_slipper_dirs()
+
+ slippers_dirs = []
+
+ for templates_dir in template_dirs:
+ if settings.DEBUG:
+ print(
+ "Registering slippers components from", templates_dir / SLIPPERS_SUBDIR
+ )
+ if templates_dir.exists():
+ templates_path = Path(templates_dir)
+ slippers_dir = templates_path / SLIPPERS_SUBDIR
+ register_dir_components(slippers_dir, templates_path)
+ slippers_dirs.append(slippers_dir)
+
+ if settings.DEBUG:
+ # To support autoreload for `manage.py runserver`, also add a watch so that
+ # we re-run this code if new slippers templates are added
+
+ from django.dispatch import receiver
+ from django.utils.autoreload import autoreload_started, file_changed
+
+ @receiver(autoreload_started, dispatch_uid="watch_slippers_dirs")
+ def watch_slippers_dirs(sender, **kwargs):
+ for path in slippers_dirs:
+ sender.watch_dir(path, "*.html")
+
+ @receiver(file_changed, dispatch_uid="slippers_template_changed")
+ def template_changed(sender, file_path, **kwargs):
+ path = Path(file_path)
+ if path.exists() and path.is_dir():
+ # This happens when new html files are created, re-run registration
+ register()
diff --git a/app/static/wagtailadmin.css b/app/static/wagtailadmin.css
index 21d8e568..9e572129 100644
--- a/app/static/wagtailadmin.css
+++ b/app/static/wagtailadmin.css
@@ -1,5 +1,4 @@
:root {
- --color-primary-hue: 47.5;
}
.alc__list-controls {
diff --git a/app/templates/account/signup.html b/app/templates/account/signup.html
index 97163748..8b97faf4 100644
--- a/app/templates/account/signup.html
+++ b/app/templates/account/signup.html
@@ -7,8 +7,11 @@
{% block modal_content %}
{% get_providers as socialaccount_providers %}
{% trans "Let's get you set up" %}
- {% url_test includes="/checkout" as checkout_flow %}
- {% if checkout_flow %}
+ {% url_test includes="/checkout" as v2_checkout_flow %}
+ {% url_test includes="/checkout" as v1_checkout_flow %}
+ {% if v2_checkout_flow %}
+ {% signup_header title="Let's get you set up" step="Create account" %}
+ {% elif v1_checkout_flow %}
diff --git a/app/templates/app/blocks/syllabus_title_block.html b/app/templates/app/blocks/syllabus_title_block.html
new file mode 100644
index 00000000..7f019fdd
--- /dev/null
+++ b/app/templates/app/blocks/syllabus_title_block.html
@@ -0,0 +1,10 @@
+{% load wagtailcore_tags %}
+
+
+
+
Syllabus
+
{{ page.title }}
+ {% if page.description %}
{{ page.description|richtext }}
{% endif %}
+
+
+
diff --git a/app/templates/app/donate.html b/app/templates/app/donate.html
index b2aec326..ca0617f4 100644
--- a/app/templates/app/donate.html
+++ b/app/templates/app/donate.html
@@ -11,54 +11,7 @@ Add a recurring donation
If you have remained on a legacy or a standard price, please consider adding a monthly donation to your membership fee. Any amount, however small, will make a huge difference. Thank you!
-
+ {% include "app/includes/donation_form.html" %}
{% endwith %}
{% endblock %}
diff --git a/app/templates/app/includes/donation_form.html b/app/templates/app/includes/donation_form.html
new file mode 100644
index 00000000..69891fab
--- /dev/null
+++ b/app/templates/app/includes/donation_form.html
@@ -0,0 +1,54 @@
+
diff --git a/app/templates/app/includes/simple_book_card.html b/app/templates/app/includes/simple_book_card.html
index f5227ef8..b3e50fda 100644
--- a/app/templates/app/includes/simple_book_card.html
+++ b/app/templates/app/includes/simple_book_card.html
@@ -1,12 +1,14 @@
-
- {{ book.published_date|date:"F Y" }}
- {% if book.type %}
+ {% if date is not False %}
+ {{ book.published_date|date:"F Y" }}
+ {% endif %}
+ {% if book.type and label is not False %}
{{ book.type }}
diff --git a/app/templates/app/signup/select_billing.html b/app/templates/app/signup/select_billing.html
new file mode 100644
index 00000000..07f7e09b
--- /dev/null
+++ b/app/templates/app/signup/select_billing.html
@@ -0,0 +1,68 @@
+{% extends "base.html" %}
+{% load wagtailcore_tags static wagtailroutablepage_tags django_bootstrap5 url setting mathfilters djmoney %}
+{% block facebook_pixel_event %}fbq('track', 'InitiateCheckout');{% endblock %}
+{% block content %}
+ {% with request.GET.gift_mode as gift_mode %}
+ {% comment %} TODO: Template-ify the header {% endcomment %}
+ {% qs_link as qs %}
+ {% signup_header steps=steps %}
+ {% comment %} {% endcomment %}
+
+ {% endwith %}
+{% endblock %}
diff --git a/app/templates/app/signup/select_deliveries.html b/app/templates/app/signup/select_deliveries.html
new file mode 100644
index 00000000..8aa846d4
--- /dev/null
+++ b/app/templates/app/signup/select_deliveries.html
@@ -0,0 +1,69 @@
+{% extends "base.html" %}
+{% load wagtailcore_tags static wagtailroutablepage_tags django_bootstrap5 url setting %}
+{% block facebook_pixel_event %}fbq('track', 'InitiateCheckout');{% endblock %}
+{% block content %}
+ {% with request.GET.gift_mode as gift_mode %}
+ {% comment %} TODO: Template-ify the header {% endcomment %}
+ {% qs_link as qs %}
+ {% signup_header steps=steps %}
+ {% comment %} {% endcomment %}
+
+ {% endwith %}
+{% endblock %}
diff --git a/app/templates/app/signup/select_donation.html b/app/templates/app/signup/select_donation.html
new file mode 100644
index 00000000..f7941e09
--- /dev/null
+++ b/app/templates/app/signup/select_donation.html
@@ -0,0 +1,23 @@
+{% extends "base.html" %}
+{% load wagtailcore_tags static wagtailroutablepage_tags django_bootstrap5 url setting %}
+{% block facebook_pixel_event %}fbq('track', 'InitiateCheckout');{% endblock %}
+{% block content %}
+ {% with request.GET.annual as annual %}
+ {% with request.GET.gift_mode as gift_mode %}
+ {% qs_link as qs %}
+ {% signup_header steps=steps %}
+
+
+
+
Can you add a {{ price.interval }}ly donation?
+
+ LBC is a not-for-profit political education project. Learn more
+ We rely on donations from our supporters to keep our membership affordable to all.
+
+ {% include "app/includes/donation_form.html" with confirm_text="Continue" continue_without=True %}
+
+
+
+ {% endwith %}
+ {% endwith %}
+{% endblock %}
diff --git a/app/templates/app/signup/select_shipping.html b/app/templates/app/signup/select_shipping.html
new file mode 100644
index 00000000..89f805fb
--- /dev/null
+++ b/app/templates/app/signup/select_shipping.html
@@ -0,0 +1,23 @@
+{% extends "base.html" %}
+{% load wagtailcore_tags static wagtailroutablepage_tags django_bootstrap5 url setting %}
+{% block facebook_pixel_event %}fbq('track', 'InitiateCheckout');{% endblock %}
+{% block content %}
+ {% with request.GET.annual as annual %}
+ {% with request.GET.gift_mode as gift_mode %}
+ {% qs_link as qs %}
+ {% signup_header steps=steps %}
+
+ {% endwith %}
+ {% endwith %}
+{% endblock %}
diff --git a/app/templates/app/signup/select_syllabus.html b/app/templates/app/signup/select_syllabus.html
new file mode 100644
index 00000000..1e24088c
--- /dev/null
+++ b/app/templates/app/signup/select_syllabus.html
@@ -0,0 +1,51 @@
+{% extends "base.html" %}
+{% load books wagtailcore_tags static wagtailroutablepage_tags django_bootstrap5 url setting %}
+{% block facebook_pixel_event %}fbq('track', 'InitiateCheckout');{% endblock %}
+{% block content %}
+ {% if syllabus_options|length is 1 %}
+ {% var single_option=True %}
+ {% endif %}
+ {% with request.GET.gift_mode as gift_mode %}
+ {% comment %} TODO: Template-ify the header {% endcomment %}
+ {% qs_link as qs %}
+ {% signup_header steps=steps %}
+ {% comment %} {% endcomment %}
+
+ {% endwith %}
+{% endblock %}
diff --git a/app/templates/app/syllabus_page.html b/app/templates/app/syllabus_page.html
new file mode 100644
index 00000000..82d4b14f
--- /dev/null
+++ b/app/templates/app/syllabus_page.html
@@ -0,0 +1 @@
+{% extends "layout_page.html" %}
diff --git a/app/templates/base.html b/app/templates/base.html
index 7ee00a9d..3f446937 100644
--- a/app/templates/base.html
+++ b/app/templates/base.html
@@ -7,6 +7,7 @@
{% include "sentry/globals.html" %}
{% include "posthog/globals.html" %}
{% include "googleanalytics/initialise.html" %}
+
@@ -50,14 +51,15 @@
{% endif %}
{% setting "GOOGLE_TAG_MANAGER" as GOOGLE_TAG_MANAGER %}
{% if GOOGLE_TAG_MANAGER %}
-
-
- {% endif %}
-
+ })(window,document,'script','dataLayer','GTM-{{ GOOGLE_TAG_MANAGER }}');
+
+ {% endif %}
+
-
-
-
+
+
+
{% wagtailuserbar %}
{% block header %}
{% main_menu max_levels=1 template="menus/header.html" %}
diff --git a/app/templates/components.yaml b/app/templates/components.yaml
new file mode 100644
index 00000000..0fe92d40
--- /dev/null
+++ b/app/templates/components.yaml
@@ -0,0 +1 @@
+components: {}
diff --git a/app/templates/components/breadcrumb_item.html b/app/templates/components/breadcrumb_item.html
new file mode 100644
index 00000000..79d20922
--- /dev/null
+++ b/app/templates/components/breadcrumb_item.html
@@ -0,0 +1,11 @@
+{% if reverse_url %}
+ {% url reverse_url as href %}
+{% endif %}
+
+ {% if href %}
+ {{ label }}
+ {% else %}
+ {{ label }}
+ {% endif %}
+
diff --git a/app/templates/components/signup_header.html b/app/templates/components/signup_header.html
new file mode 100644
index 00000000..10781353
--- /dev/null
+++ b/app/templates/components/signup_header.html
@@ -0,0 +1,24 @@
+{% with request.GET.gift_mode as gift_mode %}
+
+{% endwith %}
diff --git a/app/templates/wagtailadmin/base.html b/app/templates/wagtailadmin/base.html
index 28b57f70..41b32ae5 100644
--- a/app/templates/wagtailadmin/base.html
+++ b/app/templates/wagtailadmin/base.html
@@ -1,5 +1,5 @@
{% extends "wagtailadmin/base.html" %}
{% load static %}
{% block branding_logo %}
-
+
{% endblock %}
diff --git a/app/templatetags/books.py b/app/templatetags/books.py
index b79fbe2f..528faadf 100644
--- a/app/templatetags/books.py
+++ b/app/templatetags/books.py
@@ -1,12 +1,13 @@
from django import template
from app.models.wagtail import BookPage, MerchandisePage
+from app.utils import ensure_list
register = template.Library()
@register.simple_tag
-def get_books(since=None, types=None):
+def get_books(since=None, types=None, limit=None):
qs = (
BookPage.objects.live()
.public()
@@ -15,8 +16,12 @@ def get_books(since=None, types=None):
)
if since:
qs = qs.filter(published_date__gte=since)
- if types and len(types) > 0:
- qs = qs.filter(type__in=types)
+ if types is not None:
+ types = ensure_list(types)
+ if len(types) > 0 and "all-books" not in types:
+ qs = qs.filter(type__in=types)
+ if limit:
+ qs = qs[:limit]
return qs
diff --git a/app/urls.py b/app/urls.py
index fef92a41..c54b060c 100644
--- a/app/urls.py
+++ b/app/urls.py
@@ -17,6 +17,7 @@
from wagtail_transfer import urls as wagtailtransfer_urls
from wagtailautocomplete.urls.admin import urlpatterns as autocomplete_admin_urls
+from app import views
from app.views import (
BatchUpdateSubscriptionsStatusView,
BatchUpdateSubscriptionsView,
@@ -158,6 +159,51 @@
BatchUpdateSubscriptionsStatusView.as_view(),
name="batch_update_subscriptions_batch_status",
),
+ ### V2 signup flow
+ # CreateMembershipView
+ # SelectDeliveriesView
+ # SelectSyllabusView
+ # SelectShippingCountryView
+ # SelectBillingPlanView
+ # SelectDonationView
+ # V2SubscriptionCheckoutView
+ path(
+ "signup/",
+ views.CreateMembershipView.as_view(),
+ name="signup",
+ ),
+ path(
+ "signup/deliveries/",
+ views.SelectDeliveriesView.as_view(),
+ name="signup_deliveries",
+ ),
+ path(
+ "signup/syllabus/",
+ views.SelectSyllabusView.as_view(),
+ name="signup_syllabus",
+ ),
+ path(
+ "signup/shipping/",
+ views.SelectShippingCountryView.as_view(),
+ name="signup_shipping",
+ ),
+ path(
+ "signup/billing/",
+ views.SelectBillingPlanView.as_view(),
+ name="signup_billing",
+ ),
+ path(
+ "signup/donation/",
+ views.SelectDonationView.as_view(),
+ name="signup_donation",
+ ),
+ path(
+ "signup/checkout/",
+ views.V2SubscriptionCheckoutView.as_view(),
+ name="v2_stripe_checkout",
+ ),
+ ### END V2 signup flow
+ ###
path("accounts/", include("allauth.urls")),
path("stripe/", include("djstripe.urls", namespace="djstripe")),
path("customer_portal/", StripeCustomerPortalView.as_view(), name="customerportal"),
diff --git a/app/utils/stripe.py b/app/utils/stripe.py
index 2239fac9..8dd4be41 100644
--- a/app/utils/stripe.py
+++ b/app/utils/stripe.py
@@ -127,6 +127,32 @@ def get_donation_product() -> djstripe.models.Product:
return dj_donation_product
+def create_donation_line_item(
+ amount: float = 0,
+ interval_count: int = 1,
+ interval: str = "month",
+ metadata: dict = {},
+ currency: str = "gbp",
+):
+ if amount < 0:
+ raise ValueError("Donation amount must be 0 or greater.")
+
+ return {
+ "price_data": {
+ "unit_amount_decimal": int(amount * 100),
+ "product": get_donation_product().id,
+ "metadata": metadata,
+ # Mirror details from another SI
+ "currency": currency,
+ "recurring": {
+ "interval": interval,
+ "interval_count": interval_count,
+ },
+ },
+ "quantity": 1,
+ }
+
+
def get_gift_card_coupon(
product: Union[djstripe.models.Product, str]
) -> djstripe.models.Coupon:
diff --git a/app/views.py b/app/views.py
index e6669f36..4642742c 100644
--- a/app/views.py
+++ b/app/views.py
@@ -1,7 +1,10 @@
-from typing import Any, Dict
+from typing import Any, Dict, List
import urllib.parse
from datetime import datetime
+
+## v2
+from enum import Enum
from importlib.metadata import metadata
from multiprocessing.sharedctypes import Value
from pipes import Template
@@ -21,19 +24,23 @@
from django.template.loader import render_to_string
from django.urls import include, path, re_path, reverse, reverse_lazy
from django.utils.decorators import method_decorator
+from django.utils.functional import cached_property
from django.views.decorators.csrf import csrf_exempt
from django.views.generic.base import RedirectView, TemplateView, View
from django.views.generic.edit import FormView
from djmoney.money import Money
from djstripe import settings as djstripe_settings
from sentry_sdk import capture_exception, capture_message
-from wagtail.core.models import Page
+from wagtail.models import Page
from app import analytics
from app.forms import (
CountrySelectorForm,
DonationForm,
GiftCodeForm,
+ SelectDeliveriesForm,
+ SelectPaymentPlanForm,
+ SelectSyllabusForm,
StripeShippingForm,
UpgradeForm,
)
@@ -44,12 +51,23 @@
from app.utils.shopify import create_shopify_order
from app.utils.stripe import (
configure_gift_giver_subscription_and_code,
+ create_donation_line_item,
create_gift_recipient_subscription,
gift_giver_subscription_from_code,
- gift_recipient_subscription_from_code,
)
+class SessionKey(Enum):
+ delivery_plan_id = "v2signupflow_delivery_plan_id"
+ syllabus_id = "v2signupflow_syllabus_id"
+ country = "v2signupflow_country"
+ payment_plan_id = "v2signupflow_payment_plan_id"
+ donation_amount = "v2signupflow_donation_amount"
+
+
+##
+
+
class MemberSignupUserRegistrationMixin(LoginRequiredMixin):
login_url = reverse_lazy("account_signup")
@@ -117,6 +135,11 @@ def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
session_id = self.request.GET.get("session_id", None)
+ # v2
+ for key in SessionKey:
+ self.request.session[key.value] = None
+ #
+
# Construct `next` URL to redirect to
# including session_id, so that context can be built up in the view
next_url = self.request.GET.get("next", "/")
@@ -844,3 +867,376 @@ def retry_job(self, retry_job_id):
)
job.workspace["retry_job_id"] = str(new_job.id)
job.save()
+
+
+"""
+### V2 flow
+
+CreateMembershipView (alias) ->
+
+SelectDeliveriesView
+- List of MembershipPlanPage.filter(display_in_quiz_flow=True)
+
+SelectSyllabusView
+- TEST: (if only one syllabus, send straight on to shipping)
+
+SelectShippingCountryView
+- Cannibalise ShippingForProductView to just get the country
+
+SelectBillingPlanView
+- Requires delivery plan + shipping country
+
+SelectDonationView
+
+StripeCheckoutView
+- Requires payment plan + shipping country + donation config
+
+WelcomeView
+"""
+
+
+class OneAtATimeFormViewStoredToSession(FormView):
+ session_key: SessionKey
+ default_value = None
+ require: List[SessionKey] = []
+ require_redirect = "signup"
+
+ def dispatch(self, request, *args, **kwargs):
+ for key in self.require:
+ if not self.request.session.get(key.value, False):
+ return redirect(self.require_redirect)
+ return super().dispatch(request, *args, **kwargs)
+
+ def initial_form_value(self):
+ saved_value = self.request.session.get(self.session_key.value, None)
+ if saved_value is not None:
+ return saved_value
+ else:
+ return self.default_value
+
+ def get_initial(self):
+ initial = super().get_initial()
+ initial[self.session_key.name] = self.initial_form_value()
+ return initial
+
+ def serialize_value(self, value):
+ return value
+
+ def form_valid(self, form: SelectPaymentPlanForm):
+ self.request.session[self.session_key.value] = self.serialize_value(
+ form.cleaned_data[self.session_key.name]
+ )
+ return super().form_valid(form)
+
+ @cached_property
+ def plan(self):
+ plan_id = self.request.session.get(SessionKey.delivery_plan_id.value, False)
+ if plan_id:
+ from app.models.wagtail import MembershipPlanPage
+
+ return MembershipPlanPage.objects.get(id=plan_id)
+
+ @cached_property
+ def syllabus(self):
+ syllabus_id = self.request.session.get(SessionKey.syllabus_id.value, False)
+ if syllabus_id:
+ from app.models.wagtail import SyllabusPage
+
+ return SyllabusPage.objects.get(id=syllabus_id)
+
+ @cached_property
+ def price(self):
+ price_id = self.request.session.get(SessionKey.payment_plan_id.value, False)
+ if price_id:
+ from app.models.wagtail import MembershipPlanPrice
+
+ return MembershipPlanPrice.objects.get(id=price_id)
+
+ @cached_property
+ def country(self):
+ country_code = self.request.session.get(SessionKey.country.value, False)
+ return country_code
+
+ @cached_property
+ def zone(self):
+ if self.country is None:
+ return ShippingZone.default_zone
+ return ShippingZone.get_for_country(iso_a2=self.country)
+
+ def get_context_data(self, **kwargs: Any) -> dict[str, Any]:
+ context = super().get_context_data(**kwargs)
+ context["plan"] = self.plan
+ context["zone"] = self.zone
+ context["syllabus"] = self.syllabus
+ context["price"] = self.price
+ context["country"] = self.country
+ context["field_name"] = self.session_key.name
+ context["field_value"] = self.initial_form_value()
+ return context
+
+
+class SelectDeliveriesView(OneAtATimeFormViewStoredToSession):
+ template_name = "app/signup/select_deliveries.html"
+ form_class = SelectDeliveriesForm
+ success_url = reverse_lazy("signup_syllabus")
+ session_key = SessionKey.delivery_plan_id
+
+ def get_context_data(self, **kwargs):
+ from app.models.wagtail import MembershipPlanPage
+
+ context = super().get_context_data(**kwargs)
+ context["delivery_options"] = MembershipPlanPage.objects.filter(
+ display_in_quiz_flow=True
+ )
+ context["steps"] = [
+ {"title": "Reading speed", "current": True},
+ {"title": "Syllabus", "current": False},
+ {"title": "Shipping", "current": False},
+ {"title": "Billing", "current": False},
+ {"title": "Checkout", "current": False},
+ ]
+ return context
+
+
+class CreateMembershipView(SelectDeliveriesView):
+ pass
+
+
+class SelectSyllabusView(OneAtATimeFormViewStoredToSession):
+ template_name = "app/signup/select_syllabus.html"
+ form_class = SelectSyllabusForm
+ success_url = reverse_lazy("signup_shipping")
+ session_key = SessionKey.syllabus_id
+ require = [SessionKey.delivery_plan_id]
+
+ def get_context_data(self, **kwargs):
+ context = super().get_context_data(**kwargs)
+ context["syllabus_options"] = context.get("plan").syllabi.all()
+ context["steps"] = [
+ {
+ "title": "Reading speed",
+ "current": False,
+ "href": reverse_lazy("signup_deliveries"),
+ },
+ {"title": "Syllabus", "current": True},
+ {"title": "Shipping", "current": False},
+ {"title": "Billing", "current": False},
+ {"title": "Checkout", "current": False},
+ ]
+ return context
+
+
+class SelectShippingCountryView(OneAtATimeFormViewStoredToSession):
+ template_name = "app/signup/select_shipping.html"
+ form_class = CountrySelectorForm
+ success_url = reverse_lazy("signup_billing")
+ session_key = SessionKey.country
+ default_value = "GB"
+ require = [
+ SessionKey.delivery_plan_id,
+ SessionKey.syllabus_id,
+ ]
+
+ def get_context_data(self, **kwargs):
+ context = super().get_context_data(**kwargs)
+ context["steps"] = [
+ {
+ "title": "Reading speed",
+ "current": False,
+ "href": reverse_lazy("signup_deliveries"),
+ },
+ {
+ "title": "Syllabus",
+ "current": False,
+ "href": reverse_lazy("signup_syllabus"),
+ },
+ {"title": "Shipping", "current": True},
+ {"title": "Billing", "current": False},
+ {"title": "Checkout", "current": False},
+ ]
+ return context
+
+
+class SelectBillingPlanView(OneAtATimeFormViewStoredToSession):
+ template_name = "app/signup/select_billing.html"
+ form_class = SelectPaymentPlanForm
+ success_url = reverse_lazy("signup_donation")
+ session_key = SessionKey.payment_plan_id
+ require = [
+ SessionKey.delivery_plan_id,
+ SessionKey.syllabus_id,
+ SessionKey.country,
+ ]
+
+ def get_context_data(self, **kwargs):
+ context = super().get_context_data(**kwargs)
+ context["payment_options"] = [
+ {
+ "price": price,
+ "shipping_price": price.shipping_fee(self.zone),
+ "price_with_shipping": price.price_string_including_shipping(self.zone),
+ "equivalent_monthly_price_including_shipping": price.equivalent_monthly_price_string_including_shipping(
+ self.zone
+ ),
+ "equivalent_monthly_shipping_price": self.zone.rate,
+ }
+ for price in context.get("plan").prices.all()
+ ]
+ context["steps"] = [
+ {
+ "title": "Reading speed",
+ "current": False,
+ "href": reverse_lazy("signup_deliveries"),
+ },
+ {
+ "title": "Syllabus",
+ "current": False,
+ "href": reverse_lazy("signup_syllabus"),
+ },
+ {
+ "title": "Shipping",
+ "current": False,
+ "href": reverse_lazy("signup_shipping"),
+ },
+ {"title": "Billing", "current": True},
+ {"title": "Checkout", "current": False},
+ ]
+ return context
+
+
+class SelectDonationView(OneAtATimeFormViewStoredToSession):
+ form_class = DonationForm
+ template_name = "app/signup/select_donation.html"
+ success_url = reverse_lazy("v2_stripe_checkout")
+ session_key = SessionKey.donation_amount
+ default_value = 3
+ require = [
+ SessionKey.delivery_plan_id,
+ SessionKey.syllabus_id,
+ SessionKey.payment_plan_id,
+ SessionKey.country,
+ ]
+
+ def get_context_data(self, **kwargs: Any) -> Dict[str, Any]:
+ context = super().get_context_data(**kwargs)
+ context["donation_amount_options"] = [1, 3, 5]
+ context["steps"] = [
+ {
+ "title": "Reading speed",
+ "current": False,
+ "href": reverse_lazy("signup_deliveries"),
+ },
+ {
+ "title": "Syllabus",
+ "current": False,
+ "href": reverse_lazy("signup_syllabus"),
+ },
+ {
+ "title": "Shipping",
+ "current": False,
+ "href": reverse_lazy("signup_shipping"),
+ },
+ {
+ "title": "Billing",
+ "current": False,
+ "href": reverse_lazy("signup_billing"),
+ },
+ {"title": "Donation", "current": True},
+ {"title": "Checkout", "current": False},
+ ]
+ return context
+
+ def serialize_value(self, value):
+ return int(value)
+
+
+class V2SubscriptionCheckoutView(TemplateView):
+ @classmethod
+ def create_checkout_context(
+ cls,
+ product: LBCProduct,
+ price: MembershipPlanPrice,
+ zone: ShippingZone,
+ gift_mode: bool = False,
+ donation_amount: int = 0,
+ ) -> dict:
+ if product is None:
+ raise ValueError("product required to create checkout")
+ if price is None:
+ raise ValueError("price required to create checkout")
+ if zone is None:
+ raise ValueError("zone required to create checkout")
+
+ checkout_args = dict(
+ mode="subscription",
+ allow_promotion_codes=True,
+ line_items=price.to_checkout_line_items(product=product, zone=zone),
+ # By default, customer details aren't updated, but we want them to be.
+ customer_update={
+ "shipping": "auto",
+ "address": "auto",
+ "name": "auto",
+ },
+ shipping_address_collection={"allowed_countries": zone.country_codes},
+ metadata={"primary_product": product.id},
+ )
+
+ if donation_amount > 0:
+ checkout_args["line_items"].append(
+ create_donation_line_item(
+ amount=donation_amount,
+ interval=price.interval,
+ currency=price.price.currency,
+ interval_count=price.interval_count,
+ )
+ )
+
+ next = "/"
+ if gift_mode:
+ checkout_args["metadata"]["gift_mode"] = True
+ next = reverse_lazy("completed_gift_purchase")
+ else:
+ next = reverse_lazy("completed_membership_purchase")
+
+ return {
+ "checkout_args": checkout_args,
+ "next": next,
+ "cancel_url": price.plan.url,
+ "breadcrumbs": {
+ "price": price,
+ "product": product,
+ "zone": zone,
+ "gift_mode": gift_mode,
+ },
+ }
+
+ def get(
+ self,
+ request: HttpRequest,
+ *args: Any,
+ **kwargs: Any,
+ ):
+ from app.models.wagtail import SyllabusPage
+
+ country = request.session.get(SessionKey.country.value, "GB")
+ zone = ShippingZone.get_for_country(country)
+ # TODO:
+ # gift_mode = request.GET.get("gift_mode", None)
+ # gift_mode = gift_mode is not None and gift_mode is not False
+ gift_mode = False
+ syllabus_id = request.session.get(SessionKey.syllabus_id.value)
+ syllabus = SyllabusPage.objects.get(id=syllabus_id)
+ product = syllabus.stripe_product
+ price_id = request.session.get(SessionKey.payment_plan_id.value)
+ price = MembershipPlanPrice.objects.get(id=price_id)
+ donation_amount = request.session.get(SessionKey.donation_amount.value, 0)
+
+ checkout_context = V2SubscriptionCheckoutView.create_checkout_context(
+ product=product,
+ price=price,
+ zone=zone,
+ gift_mode=gift_mode,
+ donation_amount=donation_amount,
+ )
+
+ return StripeCheckoutView.as_view(context=checkout_context)(request)
diff --git a/app/wagtail_hooks.py b/app/wagtail_hooks.py
index 0cfdf5c3..45c7fea0 100644
--- a/app/wagtail_hooks.py
+++ b/app/wagtail_hooks.py
@@ -15,7 +15,7 @@
from app.models.django import User
from app.models.stripe import LBCCustomer, LBCProduct, LBCSubscription, ShippingZone
-from app.models.wagtail import MembershipPlanPage, MembershipPlanPrice
+from app.models.wagtail import MembershipPlanPage, MembershipPlanPrice, SyllabusPage
from app.utils import ensure_list
@@ -26,25 +26,27 @@ def global_admin_css():
class MembershipOptionsAdmin(ModelAdmin):
model = MembershipPlanPage
- menu_icon = "fa-money" # change as required
+ menu_order = 200 # will put in 3rd place (000 being 1st, 100 2nd)
+ menu_icon = "fa-money"
menu_label = "Plans"
modeladmin_register(MembershipOptionsAdmin)
-class PriceOptionsAdmin(ModelAdmin):
- model = MembershipPlanPrice
- menu_label = "Prices"
- menu_icon = "fa-money" # change as required
+class SyllabiOptionsAdmin(ModelAdmin):
+ model = SyllabusPage
+ menu_order = 200 # will put in 3rd place (000 being 1st, 100 2nd)
+ menu_label = "Syllabi"
+ menu_icon = "fa-info"
-modeladmin_register(PriceOptionsAdmin)
+modeladmin_register(SyllabiOptionsAdmin)
class ShippingAdmin(ModelAdmin):
model = ShippingZone
- menu_icon = "fa-truck" # change as required
+ menu_icon = "fa-truck"
menu_order = 200 # will put in 3rd place (000 being 1st, 100 2nd)
add_to_settings_menu = False # or True to add your model to the Settings sub-menu
exclude_from_explorer = (
@@ -109,7 +111,7 @@ class CustomerAdmin(ModelAdmin):
index_view_class = IndexView
model = LBCSubscription
menu_label = "Members" # ditch this to use verbose_name_plural from model
- menu_icon = "fa-users" # change as required
+ menu_icon = "fa-users"
menu_order = 200 # will put in 3rd place (000 being 1st, 100 2nd)
add_to_settings_menu = False # or True to add your model to the Settings sub-menu
exclude_from_explorer = (
@@ -183,8 +185,8 @@ class EventAdmin(ModelAdmin):
"circle-events" # customise the URL from default to admin/EventAdmin
)
menu_label = "Events" # ditch this to use verbose_name_plural from model
- menu_icon = "date" # change as required
- menu_order = 500 # will put in 3rd place (000 being 1st, 100 2nd)
+ menu_icon = "date"
+ menu_order = 200 # will put in 3rd place (000 being 1st, 100 2nd)
ordering = ("-starts_at",)
add_to_settings_menu = False # or True to add your model to the Settings sub-menu
exclude_from_explorer = (
diff --git a/frontend/controllers/donation-controller.ts b/frontend/controllers/donation-controller.ts
index 3782219b..fd423d61 100644
--- a/frontend/controllers/donation-controller.ts
+++ b/frontend/controllers/donation-controller.ts
@@ -3,15 +3,13 @@ import { Controller } from "@hotwired/stimulus";
class DonationController extends Controller {
static targets = ["input"];
- async update(e: InputEvent) {
+ setInputs(value: number) {
// If the new value is one of the radios, select them
// Else unselect all radios
-
- const value = (e.target as HTMLInputElement)?.value;
if (value) {
this.inputTargets.forEach((input) => {
if (input.type === "radio") {
- input.checked = parseFloat(input.value) === parseFloat(value);
+ input.checked = parseFloat(input.value) === value;
} else {
input.value = value;
}
@@ -21,11 +19,21 @@ class DonationController extends Controller {
if (input.type === "radio") {
input.checked = false;
} else {
- input.value = "";
+ input.value = "0";
}
});
}
}
+
+ update(e: InputEvent) {
+ let value = parseFloat((e.target as HTMLInputElement)?.value || "0") || 0;
+ this.setInputs(value);
+ }
+
+ async submitWithoutDonation(e: InputEvent) {
+ this.setInputs(0);
+ (this.element as HTMLFormElement).submit();
+ }
}
export default DonationController;
diff --git a/frontend/main.ts b/frontend/main.ts
index d7054f00..e457de51 100644
--- a/frontend/main.ts
+++ b/frontend/main.ts
@@ -1,4 +1,5 @@
import "./scss/main.scss";
+import "./scss/tailwind.scss";
import "@hotwired/turbo";
import * as Turbo from "@hotwired/turbo";
import "bootstrap";
diff --git a/frontend/scss/main.scss b/frontend/scss/main.scss
index a2539466..84d95b62 100644
--- a/frontend/scss/main.scss
+++ b/frontend/scss/main.scss
@@ -136,64 +136,3 @@ $colors: (
// Project-specific
@import "util.scss";
@import "overrides.scss";
-
-/* purgecss end ignore */
-
-h1,
-h2,
-h3,
-.h1,
-.h2,
-.h3 {
- font-weight: bold;
-}
-
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-
-html,
-body {
- @apply tw-bg-background;
-}
-* {
- letter-spacing: -0.04em;
-}
-p {
- letter-spacing: -0.025em;
-}
-.small-text,
-.small-text * {
- @apply tw-text-sm;
- letter-spacing: 0.04em;
-}
-
-.banner-text {
- letter-spacing: 0.2em;
- max-height: 1.5em;
- height: 1.5em;
- line-height: 150%;
- position: relative;
- overflow-x: hidden;
- overflow-y: visible;
- pointer-events: none;
- background-color: transparent;
- cursor: default;
- user-select: none;
-
- &__strings {
- @apply tw-uppercase tw-font-serif tw-text-xs tw-opacity-75 tw-overflow-hidden tw-font-light;
- letter-spacing: 0.2em;
- position: absolute;
- white-space: nowrap;
- pointer-events: none;
- background-color: transparent;
- cursor: default;
- user-select: none;
- margin-left: -25%;
- }
-}
-
-.btn-primary {
- @apply tw-bg-yellow tw-w-full tw-text-black tw-border-0;
-}
diff --git a/frontend/scss/tailwind.scss b/frontend/scss/tailwind.scss
new file mode 100644
index 00000000..c896a95e
--- /dev/null
+++ b/frontend/scss/tailwind.scss
@@ -0,0 +1,60 @@
+/* purgecss end ignore */
+
+h1,
+h2,
+h3,
+.h1,
+.h2,
+.h3 {
+ font-weight: bold;
+}
+
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+html,
+body {
+ @apply tw-bg-background;
+}
+* {
+ letter-spacing: -0.04em;
+}
+p {
+ letter-spacing: -0.025em;
+}
+.small-text,
+.small-text * {
+ @apply tw-text-sm;
+ letter-spacing: 0.04em;
+}
+
+.banner-text {
+ letter-spacing: 0.2em;
+ max-height: 1.5em;
+ height: 1.5em;
+ line-height: 150%;
+ position: relative;
+ overflow-x: hidden;
+ overflow-y: visible;
+ pointer-events: none;
+ background-color: transparent;
+ cursor: default;
+ user-select: none;
+
+ &__strings {
+ @apply tw-uppercase tw-font-serif tw-text-xs tw-opacity-75 tw-overflow-hidden tw-font-light;
+ letter-spacing: 0.2em;
+ position: absolute;
+ white-space: nowrap;
+ pointer-events: none;
+ background-color: transparent;
+ cursor: default;
+ user-select: none;
+ margin-left: -25%;
+ }
+}
+
+.btn-primary {
+ @apply tw-bg-yellow tw-w-full tw-text-black tw-border-0;
+}
diff --git a/package.json b/package.json
index fb6f763b..a0bcba66 100644
--- a/package.json
+++ b/package.json
@@ -33,7 +33,7 @@
"posthog-js": "^1.21.1",
"shopify-buy": "2.20.0",
"stimulus-read-more": "^3.0.0",
- "tailwindcss": "^3.0.24"
+ "tailwindcss": "^3.3.5"
},
"devDependencies": {
"@fullhuman/postcss-purgecss": "^4.1.3",
@@ -44,6 +44,6 @@
"sass": "^1.43.4",
"ts-jest": "^27.1.4",
"typescript": "^4.6.3",
- "vite": "^2.8.6"
+ "vite": "^5.0.2"
}
}
diff --git a/poetry.lock b/poetry.lock
index df100a6f..030307a0 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,26 +1,21 @@
-# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand.
-
[[package]]
name = "anyascii"
version = "0.3.1"
description = "Unicode to ASCII transliteration"
+category = "main"
optional = false
python-versions = ">=3.3"
-files = [
- {file = "anyascii-0.3.1-py3-none-any.whl", hash = "sha256:8707d3185017435933360462a65e2c70a4818490745804f38a5ca55e59eb56a0"},
- {file = "anyascii-0.3.1.tar.gz", hash = "sha256:dedf57728206e286c91eed7c759505a5e45c8cd01367dd40c2f7248bb15c11f6"},
-]
[[package]]
name = "asgiref"
-version = "3.5.2"
+version = "3.7.2"
description = "ASGI specs, helper code, and adapters"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "asgiref-3.5.2-py3-none-any.whl", hash = "sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4"},
- {file = "asgiref-3.5.2.tar.gz", hash = "sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424"},
-]
+
+[package.dependencies]
+typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""}
[package.extras]
tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"]
@@ -29,12 +24,9 @@ tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"]
name = "astroid"
version = "2.12.13"
description = "An abstract syntax tree for Python with inference support."
+category = "dev"
optional = false
python-versions = ">=3.7.2"
-files = [
- {file = "astroid-2.12.13-py3-none-any.whl", hash = "sha256:10e0ad5f7b79c435179d0d0f0df69998c4eef4597534aae44910db060baeb907"},
- {file = "astroid-2.12.13.tar.gz", hash = "sha256:1493fe8bd3dfd73dc35bd53c9d5b6e49ead98497c47b2307662556a5692d29d7"},
-]
[package.dependencies]
lazy-object-proxy = ">=1.4.0"
@@ -48,33 +40,25 @@ wrapt = [
name = "async-generator"
version = "1.10"
description = "Async generators and context managers for Python 3.5+"
+category = "main"
optional = false
python-versions = ">=3.5"
-files = [
- {file = "async_generator-1.10-py3-none-any.whl", hash = "sha256:01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b"},
- {file = "async_generator-1.10.tar.gz", hash = "sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144"},
-]
[[package]]
name = "atomicwrites"
version = "1.4.1"
description = "Atomic file writes."
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-files = [
- {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"},
-]
[[package]]
name = "attrs"
version = "22.1.0"
description = "Classes Without Boilerplate"
+category = "main"
optional = false
python-versions = ">=3.5"
-files = [
- {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"},
- {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"},
-]
[package.extras]
dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"]
@@ -86,12 +70,9 @@ tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy
name = "autopep8"
version = "2.0.0"
description = "A tool that automatically formats Python code to conform to the PEP 8 style guide"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "autopep8-2.0.0-py2.py3-none-any.whl", hash = "sha256:ad924b42c2e27a1ac58e432166cc4588f5b80747de02d0d35b1ecbd3e7d57207"},
- {file = "autopep8-2.0.0.tar.gz", hash = "sha256:8b1659c7f003e693199f52caffdc06585bb0716900bbc6a7442fd931d658c077"},
-]
[package.dependencies]
pycodestyle = ">=2.9.1"
@@ -101,12 +82,9 @@ tomli = "*"
name = "babel"
version = "2.11.0"
description = "Internationalization utilities"
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "Babel-2.11.0-py3-none-any.whl", hash = "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe"},
- {file = "Babel-2.11.0.tar.gz", hash = "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6"},
-]
[package.dependencies]
pytz = ">=2015.7"
@@ -115,23 +93,17 @@ pytz = ">=2015.7"
name = "backoff"
version = "1.11.1"
description = "Function decoration for backoff and retry"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-files = [
- {file = "backoff-1.11.1-py2.py3-none-any.whl", hash = "sha256:61928f8fa48d52e4faa81875eecf308eccfb1016b018bb6bd21e05b5d90a96c5"},
- {file = "backoff-1.11.1.tar.gz", hash = "sha256:ccb962a2378418c667b3c979b504fdeb7d9e0d29c0579e3b13b86467177728cb"},
-]
[[package]]
name = "bandit"
version = "1.7.4"
description = "Security oriented static analyser for python code."
+category = "dev"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"},
- {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"},
-]
[package.dependencies]
colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""}
@@ -148,31 +120,9 @@ yaml = ["PyYAML"]
name = "bcrypt"
version = "4.0.1"
description = "Modern password hashing for your software and your servers"
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "bcrypt-4.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f"},
- {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0"},
- {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410"},
- {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344"},
- {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a"},
- {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3"},
- {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2"},
- {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535"},
- {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e"},
- {file = "bcrypt-4.0.1-cp36-abi3-win32.whl", hash = "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab"},
- {file = "bcrypt-4.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9"},
- {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c"},
- {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b"},
- {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d"},
- {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d"},
- {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215"},
- {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c"},
- {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda"},
- {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665"},
- {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71"},
- {file = "bcrypt-4.0.1.tar.gz", hash = "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd"},
-]
[package.extras]
tests = ["pytest (>=3.2.1,!=3.3.0)"]
@@ -182,13 +132,9 @@ typecheck = ["mypy"]
name = "beautifulsoup4"
version = "4.9.3"
description = "Screen-scraping library"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "beautifulsoup4-4.9.3-py2-none-any.whl", hash = "sha256:4c98143716ef1cb40bf7f39a8e3eec8f8b009509e74904ba3a7b315431577e35"},
- {file = "beautifulsoup4-4.9.3-py3-none-any.whl", hash = "sha256:fff47e031e34ec82bf17e00da8f592fe7de69aeea38be00523c04623c04fb666"},
- {file = "beautifulsoup4-4.9.3.tar.gz", hash = "sha256:84729e322ad1d5b4d25f805bfa05b902dd96450f43842c4e99067d5e1369eb25"},
-]
[package.dependencies]
soupsieve = {version = ">1.2", markers = "python_version >= \"3.0\""}
@@ -201,22 +147,9 @@ lxml = ["lxml"]
name = "black"
version = "22.12.0"
description = "The uncompromising code formatter."
+category = "dev"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"},
- {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"},
- {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"},
- {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"},
- {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"},
- {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"},
- {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"},
- {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"},
- {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"},
- {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"},
- {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"},
- {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"},
-]
[package.dependencies]
click = ">=8.0.0"
@@ -236,12 +169,9 @@ uvloop = ["uvloop (>=0.15.2)"]
name = "boto3"
version = "1.26.29"
description = "The AWS SDK for Python"
+category = "main"
optional = false
python-versions = ">= 3.7"
-files = [
- {file = "boto3-1.26.29-py3-none-any.whl", hash = "sha256:2e5e80daae3873185b046d1fabc13676aea519e891faf4f27ca71d287bc26039"},
- {file = "boto3-1.26.29.tar.gz", hash = "sha256:4fb4a0ce2679e5dc1719441192b45687654201d5de76224f2c376b689c9ed4aa"},
-]
[package.dependencies]
botocore = ">=1.29.29,<1.30.0"
@@ -255,12 +185,9 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"]
name = "botocore"
version = "1.29.29"
description = "Low-level, data-driven core of boto 3."
+category = "main"
optional = false
python-versions = ">= 3.7"
-files = [
- {file = "botocore-1.29.29-py3-none-any.whl", hash = "sha256:dca2daf108aae6c847d8ec99b7e918b46ae81713bf70b2199ab94627faf935a1"},
- {file = "botocore-1.29.29.tar.gz", hash = "sha256:97a6d059e688ff9caa7c0a4e30cc58fa27be8bf3347578ce7c62fb808380fb55"},
-]
[package.dependencies]
jmespath = ">=0.7.1,<2.0.0"
@@ -274,85 +201,17 @@ crt = ["awscrt (==0.15.3)"]
name = "certifi"
version = "2022.12.7"
description = "Python package for providing Mozilla's CA Bundle."
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"},
- {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"},
-]
[[package]]
name = "cffi"
version = "1.15.1"
description = "Foreign Function Interface for Python calling C code."
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"},
- {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"},
- {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"},
- {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"},
- {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"},
- {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"},
- {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"},
- {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"},
- {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"},
- {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"},
- {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"},
- {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"},
- {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"},
- {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"},
- {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"},
- {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"},
- {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"},
- {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"},
- {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"},
- {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"},
- {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"},
- {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"},
- {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"},
- {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"},
- {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"},
- {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"},
- {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"},
- {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"},
- {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"},
- {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"},
- {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"},
- {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"},
- {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"},
- {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"},
- {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"},
- {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"},
- {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"},
- {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"},
- {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"},
-]
[package.dependencies]
pycparser = "*"
@@ -361,23 +220,17 @@ pycparser = "*"
name = "cfgv"
version = "3.3.1"
description = "Validate configuration and produce human readable error messages."
+category = "main"
optional = false
python-versions = ">=3.6.1"
-files = [
- {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"},
- {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"},
-]
[[package]]
name = "charset-normalizer"
version = "2.1.1"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+category = "main"
optional = false
python-versions = ">=3.6.0"
-files = [
- {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"},
- {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"},
-]
[package.extras]
unicode-backport = ["unicodedata2"]
@@ -386,12 +239,9 @@ unicode-backport = ["unicodedata2"]
name = "click"
version = "8.1.3"
description = "Composable command line interface toolkit"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
- {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
-]
[package.dependencies]
colorama = {version = "*", markers = "platform_system == \"Windows\""}
@@ -400,23 +250,17 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
name = "colorama"
version = "0.4.6"
description = "Cross-platform colored terminal text."
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
-files = [
- {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
- {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
-]
[[package]]
name = "commonmark"
version = "0.9.1"
description = "Python parser for the CommonMark Markdown spec"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"},
- {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"},
-]
[package.extras]
test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"]
@@ -425,36 +269,9 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"]
name = "cryptography"
version = "38.0.4"
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "cryptography-38.0.4-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:2fa36a7b2cc0998a3a4d5af26ccb6273f3df133d61da2ba13b3286261e7efb70"},
- {file = "cryptography-38.0.4-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:1f13ddda26a04c06eb57119caf27a524ccae20533729f4b1e4a69b54e07035eb"},
- {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:2ec2a8714dd005949d4019195d72abed84198d877112abb5a27740e217e0ea8d"},
- {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50a1494ed0c3f5b4d07650a68cd6ca62efe8b596ce743a5c94403e6f11bf06c1"},
- {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a10498349d4c8eab7357a8f9aa3463791292845b79597ad1b98a543686fb1ec8"},
- {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:10652dd7282de17990b88679cb82f832752c4e8237f0c714be518044269415db"},
- {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:bfe6472507986613dc6cc00b3d492b2f7564b02b3b3682d25ca7f40fa3fd321b"},
- {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ce127dd0a6a0811c251a6cddd014d292728484e530d80e872ad9806cfb1c5b3c"},
- {file = "cryptography-38.0.4-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:53049f3379ef05182864d13bb9686657659407148f901f3f1eee57a733fb4b00"},
- {file = "cryptography-38.0.4-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:8a4b2bdb68a447fadebfd7d24855758fe2d6fecc7fed0b78d190b1af39a8e3b0"},
- {file = "cryptography-38.0.4-cp36-abi3-win32.whl", hash = "sha256:1d7e632804a248103b60b16fb145e8df0bc60eed790ece0d12efe8cd3f3e7744"},
- {file = "cryptography-38.0.4-cp36-abi3-win_amd64.whl", hash = "sha256:8e45653fb97eb2f20b8c96f9cd2b3a0654d742b47d638cf2897afbd97f80fa6d"},
- {file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca57eb3ddaccd1112c18fc80abe41db443cc2e9dcb1917078e02dfa010a4f353"},
- {file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:c9e0d79ee4c56d841bd4ac6e7697c8ff3c8d6da67379057f29e66acffcd1e9a7"},
- {file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:0e70da4bdff7601b0ef48e6348339e490ebfb0cbe638e083c9c41fb49f00c8bd"},
- {file = "cryptography-38.0.4-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:998cd19189d8a747b226d24c0207fdaa1e6658a1d3f2494541cb9dfbf7dcb6d2"},
- {file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67461b5ebca2e4c2ab991733f8ab637a7265bb582f07c7c88914b5afb88cb95b"},
- {file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:4eb85075437f0b1fd8cd66c688469a0c4119e0ba855e3fef86691971b887caf6"},
- {file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3178d46f363d4549b9a76264f41c6948752183b3f587666aff0555ac50fd7876"},
- {file = "cryptography-38.0.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6391e59ebe7c62d9902c24a4d8bcbc79a68e7c4ab65863536127c8a9cd94043b"},
- {file = "cryptography-38.0.4-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:78e47e28ddc4ace41dd38c42e6feecfdadf9c3be2af389abbfeef1ff06822285"},
- {file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fb481682873035600b5502f0015b664abc26466153fab5c6bc92c1ea69d478b"},
- {file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:4367da5705922cf7070462e964f66e4ac24162e22ab0a2e9d31f1b270dd78083"},
- {file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b4cad0cea995af760f82820ab4ca54e5471fc782f70a007f31531957f43e9dee"},
- {file = "cryptography-38.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:80ca53981ceeb3241998443c4964a387771588c4e4a5d92735a493af868294f9"},
- {file = "cryptography-38.0.4.tar.gz", hash = "sha256:175c1a818b87c9ac80bb7377f5520b7f31b3ef2a0004e2420319beadedb67290"},
-]
[package.dependencies]
cffi = ">=1.12"
@@ -471,11 +288,9 @@ test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0
name = "cssbeautifier"
version = "1.14.7"
description = "CSS unobfuscator and beautifier."
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "cssbeautifier-1.14.7.tar.gz", hash = "sha256:be7f1ea7a7b009f0172c2c0d0bebb2d136346e786f7182185ea944affb52135a"},
-]
[package.dependencies]
editorconfig = ">=0.12.2"
@@ -486,34 +301,25 @@ six = ">=1.13.0"
name = "darglint"
version = "1.8.1"
description = "A utility for ensuring Google-style docstrings stay up to date with the source code."
+category = "dev"
optional = false
python-versions = ">=3.6,<4.0"
-files = [
- {file = "darglint-1.8.1-py3-none-any.whl", hash = "sha256:5ae11c259c17b0701618a20c3da343a3eb98b3bc4b5a83d31cdd94f5ebdced8d"},
- {file = "darglint-1.8.1.tar.gz", hash = "sha256:080d5106df149b199822e7ee7deb9c012b49891538f14a11be681044f0bb20da"},
-]
[[package]]
name = "defusedxml"
version = "0.7.1"
description = "XML bomb protection for Python stdlib modules"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-files = [
- {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
- {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
-]
[[package]]
name = "deprecated"
version = "1.2.13"
description = "Python @deprecated decorator to deprecate old python classes, functions or methods."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-files = [
- {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"},
- {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"},
-]
[package.dependencies]
wrapt = ">=1.10,<2"
@@ -525,23 +331,17 @@ dev = ["PyTest", "PyTest (<5)", "PyTest-Cov", "PyTest-Cov (<2.6)", "bump2version
name = "diff-match-patch"
version = "20200713"
description = "Repackaging of Google's Diff Match and Patch libraries. Offers robust algorithms to perform the operations required for synchronizing plain text."
+category = "main"
optional = false
python-versions = ">=2.7"
-files = [
- {file = "diff-match-patch-20200713.tar.gz", hash = "sha256:da6f5a01aa586df23dfc89f3827e1cafbb5420be9d87769eeb079ddfd9477a18"},
- {file = "diff_match_patch-20200713-py3-none-any.whl", hash = "sha256:8bf9d9c4e059d917b5c6312bac0c137971a32815ddbda9c682b949f2986b4d34"},
-]
[[package]]
name = "dill"
version = "0.3.6"
description = "serialize all of python"
+category = "dev"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"},
- {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"},
-]
[package.extras]
graph = ["objgraph (>=1.7.2)"]
@@ -550,23 +350,17 @@ graph = ["objgraph (>=1.7.2)"]
name = "distlib"
version = "0.3.6"
description = "Distribution utilities"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"},
- {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"},
-]
[[package]]
name = "dj-database-url"
version = "1.2.0"
description = "Use Database URLs in your Django Application."
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "dj-database-url-1.2.0.tar.gz", hash = "sha256:b23b15046cb38180e0c95207bcc90fe5e9dbde8eef16065907dd85cf4ca7036c"},
- {file = "dj_database_url-1.2.0-py3-none-any.whl", hash = "sha256:5c2993b91801c0f78a8b19e642b497b90831124cbade0c265900d4c1037b4730"},
-]
[package.dependencies]
Django = ">=3.2"
@@ -575,12 +369,9 @@ Django = ">=3.2"
name = "dj-stripe"
version = "2.7.3"
description = "Django + Stripe made easy"
+category = "main"
optional = false
python-versions = ">=3.7.12,<4.0.0"
-files = [
- {file = "dj_stripe-2.7.3-py3-none-any.whl", hash = "sha256:4709f1c3091fdd565d96152c86136e93e73c5188a2f4847445e79e93ad203429"},
- {file = "dj_stripe-2.7.3.tar.gz", hash = "sha256:88b584ff2940b0b87ec337df1e7f4974d739a48cdfc81c3b25e4247c541c75ec"},
-]
[package.dependencies]
django = ">=3.2"
@@ -593,19 +384,16 @@ postgres = ["psycopg2 (>=2.8.5,<3.0.0)"]
[[package]]
name = "django"
-version = "4.0.8"
+version = "4.2"
description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design."
+category = "main"
optional = false
python-versions = ">=3.8"
-files = [
- {file = "Django-4.0.8-py3-none-any.whl", hash = "sha256:27cb08fa6458c1eff8b97c4c2d03774646fb26feeaa4587dca10c49e6d4fc6a3"},
- {file = "Django-4.0.8.tar.gz", hash = "sha256:07e6433f263c3839939cfabeb6d7557841e0419e47759a7b7d37f6d44d40adcb"},
-]
[package.dependencies]
-asgiref = ">=3.4.1,<4"
+asgiref = ">=3.6.0,<4"
bcrypt = {version = "*", optional = true, markers = "extra == \"bcrypt\""}
-sqlparse = ">=0.2.2"
+sqlparse = ">=0.3.1"
tzdata = {version = "*", markers = "sys_platform == \"win32\""}
[package.extras]
@@ -616,22 +404,17 @@ bcrypt = ["bcrypt"]
name = "django-active-link"
version = "0.1.8"
description = "The best way to highlight active links in your Django app."
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "django-active-link-0.1.8.tar.gz", hash = "sha256:87aac58cc89913ff3b017b91cb24cda0dbb05945aa46c6a1428d0744b56a3e1f"},
- {file = "django_active_link-0.1.8-py2.py3-none-any.whl", hash = "sha256:a6a94f92e9150d05be4491e10e5dfb3274c08dd88866081f5f90ea2d738db647"},
-]
[[package]]
name = "django-allauth"
version = "0.50.0"
description = "Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication."
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "django-allauth-0.50.0.tar.gz", hash = "sha256:ee3a174e249771caeb1d037e64b2704dd3c56cfec44f2058fae2214b224d35e8"},
-]
[package.dependencies]
Django = ">=2.0"
@@ -644,12 +427,9 @@ requests-oauthlib = ">=0.3.0"
name = "django-anymail"
version = "8.6"
description = "Django email backends and webhooks for Amazon SES, Mailgun, Mailjet, Mandrill, Postal, Postmark, SendGrid, SendinBlue, and SparkPost"
+category = "main"
optional = false
python-versions = ">=3.5"
-files = [
- {file = "django-anymail-8.6.tar.gz", hash = "sha256:783342d49dd07d68778b81dd12a94c86e1d217463a68a85450a0513fabe31345"},
- {file = "django_anymail-8.6-py3-none-any.whl", hash = "sha256:49d83d7c16316ca86a624097496881d59b7d71b16bf1c5211cffa5b19ef98d0c"},
-]
[package.dependencies]
django = ">=2.0"
@@ -664,12 +444,9 @@ postal = ["cryptography"]
name = "django-bootstrap5"
version = "21.3"
description = "Bootstrap 5 for Django"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "django-bootstrap5-21.3.tar.gz", hash = "sha256:35086341881780a44b2e27255894f6029fc5ef75e5a0ec8ebd82f47a5184fa73"},
- {file = "django_bootstrap5-21.3-py3-none-any.whl", hash = "sha256:c7a686420aa98692f15bd16e61a90dc6a3607e441a4dea37af840b83d4820cac"},
-]
[package.dependencies]
beautifulsoup4 = ">=4.8.0"
@@ -679,12 +456,9 @@ Django = ">=2.2"
name = "django-cogwheels"
version = "0.3"
description = "A consistent, user-friendly solution for adding app-specific settings your Django package, reusable app or framework."
+category = "main"
optional = false
python-versions = ">=3.4"
-files = [
- {file = "django-cogwheels-0.3.tar.gz", hash = "sha256:848a4d9f2c96c582a4a4f2e7c276dfd95ab3905748cae13bb7c4b365a6717e94"},
- {file = "django_cogwheels-0.3-py3-none-any.whl", hash = "sha256:197bd05e7114403d7301214b3f8a371c4fb6039cf21c811f099438b167b5ed21"},
-]
[package.extras]
development = ["Django (>=2.0,<2.1)", "django-extensions", "ipdb", "werkzeug"]
@@ -695,12 +469,9 @@ testing = ["coverage"]
name = "django-countries"
version = "7.5"
description = "Provides a country field for Django models."
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "django-countries-7.5.tar.gz", hash = "sha256:979676b1147ebbc10e8cdd67857ffffbcba8d7a92abf7ca70696ecd57d8f3d4f"},
- {file = "django_countries-7.5-py3-none-any.whl", hash = "sha256:5097d9c16eb5f8a8c195f55e647a1cf1ce8a88fdeb27b104de089424013845a6"},
-]
[package.dependencies]
typing-extensions = "*"
@@ -715,12 +486,9 @@ test = ["djangorestframework", "graphene-django", "pytest", "pytest-cov", "pytes
name = "django-db-queue"
version = "3.0.0"
description = "Simple database-backed job queue system"
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "django-db-queue-3.0.0.tar.gz", hash = "sha256:78433771b0cb57df99c63f9fa8becc2cd87933cb95323124a3c31fed65635a41"},
- {file = "django_db_queue-3.0.0-py3-none-any.whl", hash = "sha256:7ffbffc844ce5816d8f1a2f7f92daa87280224e9e5568694b7fd2c24b2afb101"},
-]
[package.dependencies]
Django = ">=3.1"
@@ -729,12 +497,9 @@ Django = ">=3.1"
name = "django-debug-toolbar"
version = "3.8.1"
description = "A configurable set of panels that display various debug information about the current request/response."
+category = "dev"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "django_debug_toolbar-3.8.1-py3-none-any.whl", hash = "sha256:879f8a4672d41621c06a4d322dcffa630fc4df056cada6e417ed01db0e5e0478"},
- {file = "django_debug_toolbar-3.8.1.tar.gz", hash = "sha256:24ef1a7d44d25e60d7951e378454c6509bf536dce7e7d9d36e7c387db499bc27"},
-]
[package.dependencies]
django = ">=3.2.4"
@@ -744,51 +509,39 @@ sqlparse = ">=0.2"
name = "django-extensions"
version = "3.2.1"
description = "Extensions for Django"
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "django-extensions-3.2.1.tar.gz", hash = "sha256:2a4f4d757be2563cd1ff7cfdf2e57468f5f931cc88b23cf82ca75717aae504a4"},
- {file = "django_extensions-3.2.1-py3-none-any.whl", hash = "sha256:421464be390289513f86cb5e18eb43e5dc1de8b4c27ba9faa3b91261b0d67e09"},
-]
[package.dependencies]
Django = ">=3.2"
[[package]]
name = "django-filter"
-version = "21.1"
+version = "23.4"
description = "Django-filter is a reusable Django application for allowing users to filter querysets dynamically."
+category = "main"
optional = false
-python-versions = ">=3.6"
-files = [
- {file = "django-filter-21.1.tar.gz", hash = "sha256:632a251fa8f1aadb4b8cceff932bb52fe2f826dd7dfe7f3eac40e5c463d6836e"},
- {file = "django_filter-21.1-py3-none-any.whl", hash = "sha256:f4a6737a30104c98d2e2a5fb93043f36dd7978e0c7ddc92f5998e85433ea5063"},
-]
+python-versions = ">=3.7"
[package.dependencies]
-Django = ">=2.2"
+Django = ">=3.2"
[[package]]
name = "django-gravatar2"
version = "1.4.4"
description = "Essential Gravatar support for Django. Features helper methods, templatetags and a full test suite!"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "django-gravatar2-1.4.4.tar.gz", hash = "sha256:c813280967511ced93eea0359f60e5369c35b3311efe565c3e5d4ab35c10c9ee"},
- {file = "django_gravatar2-1.4.4-py2.py3-none-any.whl", hash = "sha256:545a6c2c5c624c7635dec29c7bc0be1a2cb89c9b8821af8616ae9838827cc35b"},
-]
[[package]]
name = "django-import-export"
version = "2.9.0"
description = "Django application and library for importing and exporting data with included admin integration."
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "django-import-export-2.9.0.tar.gz", hash = "sha256:02ce3a8e191992fa7aa1d660877ac6764fa9e32a5ba6394293f2fc761a5bdd19"},
- {file = "django_import_export-2.9.0-py3-none-any.whl", hash = "sha256:126d32a4410c42b6e1bf060355bf45968f6fe427c3b7ed04c96873bd45d7549a"},
-]
[package.dependencies]
diff-match-patch = "*"
@@ -799,12 +552,9 @@ tablib = {version = ">=3.0.0", extras = ["html", "ods", "xls", "xlsx", "yaml"]}
name = "django-livereload-server"
version = "0.4"
description = "LiveReload functionality integrated with your Django development environment"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "django-livereload-server-0.4.tar.gz", hash = "sha256:60ed030085ca53671d25704b10ec7aa3cc94a16da437b727a8dcce42471b4c65"},
- {file = "django_livereload_server-0.4-py2.py3-none-any.whl", hash = "sha256:136c231e7ad3ba7a4db65426632dfa9b964ac04e8fa5f3808166447f016a4a91"},
-]
[package.dependencies]
beautifulsoup4 = ">=4.3.2"
@@ -816,78 +566,63 @@ tornado = "*"
name = "django-mathfilters"
version = "1.0.0"
description = "A set of simple math filters for Django"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "django-mathfilters-1.0.0.tar.gz", hash = "sha256:c9b892ef6dfc893683e75cfd0279c187a601ca68f4684c38f9da44657fb64b07"},
- {file = "django_mathfilters-1.0.0-py3-none-any.whl", hash = "sha256:64200a21bb249fbf27be601d4bbb788779e09c6e063170c097cd82c4d18ebb83"},
-]
[[package]]
name = "django-mjml"
-version = "0.12.0"
+version = "1.1"
description = "Use MJML in Django templates"
+category = "main"
optional = false
-python-versions = "*"
-files = [
- {file = "django-mjml-0.12.0.tar.gz", hash = "sha256:326d4e6ec17e3f1ff7b4ef506b6f70756542d89916f980f41491a87d27a200d8"},
- {file = "django_mjml-0.12.0-py2.py3-none-any.whl", hash = "sha256:5de85d8758c6d7ffa7278f578c5ea3b4ca9a1921e82de23c26e6c5c8149c4ffd"},
-]
+python-versions = ">=3.6"
[package.dependencies]
-django = ">=1.8,<4.1"
+django = ">=2.2,<5.0"
[package.extras]
-requests = ["requests (>=2.20)", "requests[security] (>=2.20)"]
+requests = ["requests (>=2.24)"]
[[package]]
name = "django-modelcluster"
-version = "6.0"
+version = "6.1"
description = "Django extension to allow working with 'clusters' of models as a single unit, independently of the database"
+category = "main"
optional = false
-python-versions = ">=3.7"
-files = [
- {file = "django-modelcluster-6.0.tar.gz", hash = "sha256:cdcffef5baf5d3759ee04c5b60ffaf1a0c95fc0f265e762f3ddfadde3394e5db"},
- {file = "django_modelcluster-6.0-py2.py3-none-any.whl", hash = "sha256:4ae46f86c43702020f24f212222eef0a2588df937bbb523a5447da247b5fb130"},
-]
+python-versions = ">=3.8"
[package.dependencies]
-django = ">=2.2"
-pytz = ">=2015.2"
+django = ">=3.2"
+pytz = ">=2022.4"
[package.extras]
-taggit = ["django-taggit (>=0.20)"]
+taggit = ["django-taggit (>=2.0)"]
[[package]]
name = "django-money"
-version = "2.1.1"
+version = "3.4.0"
description = "Adds support for using money and currency fields in django models and forms. Uses py-moneyed as the money implementation."
+category = "main"
optional = false
-python-versions = ">=3.6"
-files = [
- {file = "django-money-2.1.1.tar.gz", hash = "sha256:4d06041fac5c565ad049a7f8fb4bc33de5c68047b0693efa18a9931cebffb606"},
- {file = "django_money-2.1.1-py3-none-any.whl", hash = "sha256:60a605d5b999e1756a18008dd7e0c5a860fd64c018a140c7a7675a4209ec3782"},
-]
+python-versions = ">=3.7"
[package.dependencies]
Django = ">=2.2"
-py-moneyed = ">=1.2,<2.0"
+py-moneyed = ">=2.0,<3.1"
setuptools = "*"
[package.extras]
exchange = ["certifi"]
-test = ["mixer", "pytest (>=3.1.0)", "pytest-cov", "pytest-django", "pytest-pythonpath"]
+test = ["django-stubs", "mixer", "mypy", "pytest (>=3.1.0)", "pytest-cov", "pytest-django", "pytest-pythonpath"]
[[package]]
name = "django-oauth-toolkit"
version = "2.2.0"
description = "OAuth2 Provider for Django"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "django-oauth-toolkit-2.2.0.tar.gz", hash = "sha256:46890decb24a34e2a5382debeaf7752e50d90b7a11716cf2a9fd067097ec0963"},
- {file = "django_oauth_toolkit-2.2.0-py3-none-any.whl", hash = "sha256:abd85c74af525a62365ec2049113e73a2ff8b46ef906e7104a7ba968ef02a11d"},
-]
[package.dependencies]
django = ">=2.2,<4.0.0 || >4.0.0"
@@ -899,12 +634,9 @@ requests = ">=2.13.0"
name = "django-permissionedforms"
version = "0.1"
description = "Django extension for creating forms that vary according to user permissions"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "django-permissionedforms-0.1.tar.gz", hash = "sha256:4340bb20c4477fffb13b4cc5cccf9f1b1010b64f79956c291c72d2ad2ed243f8"},
- {file = "django_permissionedforms-0.1-py2.py3-none-any.whl", hash = "sha256:d341a961a27cc77fde8cc42141c6ab55cc1f0cb886963cc2d6967b9674fa47d6"},
-]
[package.dependencies]
Django = "*"
@@ -916,11 +648,9 @@ testing = ["django-modelcluster"]
name = "django-redirect-to-non-www"
version = "0.1.1"
description = "Redirect www URL addresses to non-www"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "django-redirect-to-non-www-0.1.1.tar.gz", hash = "sha256:a8c3836d16ca21be8bd71a8d0e0326db2651b4f29a0fa19348aafa2d855d8bec"},
-]
[package.dependencies]
django = "*"
@@ -929,9 +659,9 @@ django = "*"
name = "django-shopify-webhook"
version = "0.6.0"
description = "A package for the creation of Shopify Apps using the Embedded App SDK."
+category = "main"
optional = false
python-versions = "*"
-files = []
develop = false
[package.dependencies]
@@ -942,18 +672,15 @@ setuptools = ">=5.7"
type = "git"
url = "https://github.com/discolabs/django-shopify-webhook.git"
reference = "HEAD"
-resolved_reference = "a0ba36119455faf99072f668238d2a9e90e06410"
+resolved_reference = "d55c3f8ff56b6191caa0cae7ab3e4f45082b2172"
[[package]]
name = "django-silk"
version = "4.4.1"
description = "Silky smooth profiling for the Django Framework"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "django-silk-4.4.1.tar.gz", hash = "sha256:5d4d3f1d4e3454fb073be8928293bc8af33c61cb32987783c8f93243ebf9705e"},
- {file = "django_silk-4.4.1-py3-none-any.whl", hash = "sha256:72f20020177e929ca5733dfebf226b4ce8559c5a7bdb1517daf9aaf7916b188a"},
-]
[package.dependencies]
autopep8 = "*"
@@ -969,12 +696,9 @@ sqlparse = "*"
name = "django-storages"
version = "1.13.1"
description = "Support for many storage backends in Django"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "django-storages-1.13.1.tar.gz", hash = "sha256:b3d98ecc09f1b1627c2b2cf430964322ce4e08617dbf9b4236c16a32875a1e0b"},
- {file = "django_storages-1.13.1-py3-none-any.whl", hash = "sha256:3540b45618b04be2c867c0982e8d2bd8e34f84dae922267fcebe4691fb93daf0"},
-]
[package.dependencies]
Django = ">=3.2"
@@ -991,12 +715,9 @@ sftp = ["paramiko"]
name = "django-taggit"
version = "2.1.0"
description = "django-taggit is a reusable Django application for simple tagging."
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "django-taggit-2.1.0.tar.gz", hash = "sha256:a9f41e4ad58efe4b28d86f274728ee87eb98eeae90c9eb4b4efad39e5068184e"},
- {file = "django_taggit-2.1.0-py3-none-any.whl", hash = "sha256:61547a23fc99967c9304107414a09e662b459f4163dbbae32e60b8ba40c34d05"},
-]
[package.dependencies]
Django = ">=2.2"
@@ -1005,40 +726,34 @@ Django = ">=2.2"
name = "django-treebeard"
version = "4.5.1"
description = "Efficient tree implementations for Django"
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "django-treebeard-4.5.1.tar.gz", hash = "sha256:80150017725239702054e5fa64dc66e383dc13ac262c8d47ee5a82cb005969da"},
- {file = "django_treebeard-4.5.1-py3-none-any.whl", hash = "sha256:7c2b1cdb1e9b46d595825186064a1228bc4d00dbbc186db5b0b9412357fba91c"},
-]
[package.dependencies]
Django = ">=2.2"
[[package]]
name = "django-vite"
-version = "1.4.0"
-description = "Integration of ViteJS in a Django project."
+version = "3.0.0"
+description = "Integration of Vite in a Django project."
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "django-vite-1.4.0.tar.gz", hash = "sha256:cceb74f567c7e46213f49680000fe9bb050bdb2c8f28eb0a006358da9239eb18"},
- {file = "django_vite-1.4.0-py3-none-any.whl", hash = "sha256:94d3cdd67a5928df28a87e1d53b7bda7105fd173cf2019d24c6af74640d215d4"},
-]
[package.dependencies]
-Django = ">=1.11"
+Django = ">=3.2"
+
+[package.extras]
+dev = ["black"]
[[package]]
name = "djangorestframework"
version = "3.14.0"
description = "Web APIs for Django, made easy."
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "djangorestframework-3.14.0-py3-none-any.whl", hash = "sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08"},
- {file = "djangorestframework-3.14.0.tar.gz", hash = "sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8"},
-]
[package.dependencies]
django = ">=3.0"
@@ -1048,22 +763,17 @@ pytz = "*"
name = "djangorestframework-camel-case"
version = "1.3.0"
description = "Camel case JSON support for Django REST framework."
+category = "main"
optional = false
python-versions = ">=3.5"
-files = [
- {file = "djangorestframework-camel-case-1.3.0.tar.gz", hash = "sha256:df591362ffa448c8f0a354c56ae8a53fb7abbb15e222951d0c6f5f781633907e"},
-]
[[package]]
name = "djangorestframework-dataclasses"
version = "1.2.0"
description = "A dataclasses serializer for Django REST Framework"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "djangorestframework-dataclasses-1.2.0.tar.gz", hash = "sha256:4fa8d93a19a3e256487674e9c654b45992bc76de155bd097eced6fe4af4100a2"},
- {file = "djangorestframework_dataclasses-1.2.0-py3-none-any.whl", hash = "sha256:e4f54a2a21b6dfdb07ba657f91b5a97a41d03c6760203e8a6c3749276d3f129c"},
-]
[package.dependencies]
django = ">=2.0"
@@ -1073,12 +783,9 @@ djangorestframework = ">=3.9"
name = "djlint"
version = "1.19.7"
description = "HTML Template Linter and Formatter"
+category = "main"
optional = false
python-versions = ">=3.7.2,<4.0.0"
-files = [
- {file = "djlint-1.19.7-py3-none-any.whl", hash = "sha256:517b1a2dfb943854abaf8b1ad2117d5c2e699d5916cd2621e24f8669eb564af2"},
- {file = "djlint-1.19.7.tar.gz", hash = "sha256:7339b0e2b228655000e6bc5e85adb146e1cdad11a1a29c52c3f1e68707d02d86"},
-]
[package.dependencies]
click = ">=8.0.1,<9.0.0"
@@ -1098,12 +805,9 @@ tqdm = ">=4.62.2,<5.0.0"
name = "dparse"
version = "0.6.2"
description = "A parser for Python dependency files"
+category = "dev"
optional = false
python-versions = ">=3.5"
-files = [
- {file = "dparse-0.6.2-py3-none-any.whl", hash = "sha256:8097076f1dd26c377f30d4745e6ec18fef42f3bf493933b842ac5bafad8c345f"},
- {file = "dparse-0.6.2.tar.gz", hash = "sha256:d45255bda21f998bc7ddf2afd5e62505ba6134756ba2d42a84c56b0826614dfe"},
-]
[package.dependencies]
packaging = "*"
@@ -1117,12 +821,9 @@ pipenv = ["pipenv"]
name = "draftjs-exporter"
version = "2.1.7"
description = "Library to convert rich text from Draft.js raw ContentState to HTML"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "draftjs_exporter-2.1.7-py3-none-any.whl", hash = "sha256:d415a9964690a2cddb66a31ef32dd46c277e9b80434b94e39e3043188ed83e33"},
- {file = "draftjs_exporter-2.1.7.tar.gz", hash = "sha256:5839cbc29d7bce2fb99837a404ca40c3a07313f2a20e2700de7ad6aa9a9a18fb"},
-]
[package.extras]
html5lib = ["beautifulsoup4 (>=4.4.1,<5)", "html5lib (>=0.999,<=1.0.1)"]
@@ -1133,34 +834,25 @@ testing = ["beautifulsoup4 (>=4.4.1,<5)", "coverage (>=4.1.0)", "flake8 (>=3.2.0
name = "editorconfig"
version = "0.12.3"
description = "EditorConfig File Locator and Interpreter for Python"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "EditorConfig-0.12.3-py3-none-any.whl", hash = "sha256:6b0851425aa875b08b16789ee0eeadbd4ab59666e9ebe728e526314c4a2e52c1"},
- {file = "EditorConfig-0.12.3.tar.gz", hash = "sha256:57f8ce78afcba15c8b18d46b5170848c88d56fd38f05c2ec60dbbfcb8996e89e"},
-]
[[package]]
name = "et-xmlfile"
version = "1.1.0"
description = "An implementation of lxml.xmlfile for the standard library"
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"},
- {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"},
-]
[[package]]
name = "exceptiongroup"
version = "1.0.4"
description = "Backport of PEP 654 (exception groups)"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "exceptiongroup-1.0.4-py3-none-any.whl", hash = "sha256:542adf9dea4055530d6e1279602fa5cb11dab2395fa650b8674eaec35fc4a828"},
- {file = "exceptiongroup-1.0.4.tar.gz", hash = "sha256:bd14967b79cd9bdb54d97323216f8fdf533e278df937aa2a90089e7d6e06e5ec"},
-]
[package.extras]
test = ["pytest (>=6)"]
@@ -1169,27 +861,29 @@ test = ["pytest (>=6)"]
name = "filelock"
version = "3.8.2"
description = "A platform independent file lock."
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "filelock-3.8.2-py3-none-any.whl", hash = "sha256:8df285554452285f79c035efb0c861eb33a4bcfa5b7a137016e32e6a90f9792c"},
- {file = "filelock-3.8.2.tar.gz", hash = "sha256:7565f628ea56bfcd8e54e42bdc55da899c85c1abfe1b5bcfd147e9188cebb3b2"},
-]
[package.extras]
docs = ["furo (>=2022.9.29)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"]
testing = ["covdefaults (>=2.2.2)", "coverage (>=6.5)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"]
+[[package]]
+name = "filetype"
+version = "1.2.0"
+description = "Infer file type and MIME type of any file/buffer. No external dependencies."
+category = "main"
+optional = false
+python-versions = "*"
+
[[package]]
name = "gitdb"
version = "4.0.10"
description = "Git Object Database"
+category = "dev"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"},
- {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"},
-]
[package.dependencies]
smmap = ">=3.0.1,<6"
@@ -1198,12 +892,9 @@ smmap = ">=3.0.1,<6"
name = "gitpython"
version = "3.1.29"
description = "GitPython is a python library used to interact with Git repositories"
+category = "dev"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "GitPython-3.1.29-py3-none-any.whl", hash = "sha256:41eea0deec2deea139b459ac03656f0dd28fc4a3387240ec1d3c259a2c47850f"},
- {file = "GitPython-3.1.29.tar.gz", hash = "sha256:cc36bfc4a3f913e66805a28e84703e419d9c264c1077e537b54f0e1af85dbefd"},
-]
[package.dependencies]
gitdb = ">=4.0.1,<5"
@@ -1212,23 +903,17 @@ gitdb = ">=4.0.1,<5"
name = "gprof2dot"
version = "2022.7.29"
description = "Generate a dot graph from the output of several profilers."
+category = "main"
optional = false
python-versions = ">=2.7"
-files = [
- {file = "gprof2dot-2022.7.29-py2.py3-none-any.whl", hash = "sha256:f165b3851d3c52ee4915eb1bd6cca571e5759823c2cd0f71a79bda93c2dc85d6"},
- {file = "gprof2dot-2022.7.29.tar.gz", hash = "sha256:45b4d298bd36608fccf9511c3fd88a773f7a1abc04d6cd39445b11ba43133ec5"},
-]
[[package]]
name = "groundwork-django"
version = "0.2.0"
description = "An integrated Django and Javascript framework for people who build tools for organisers."
+category = "main"
optional = false
python-versions = ">=3.9,<4.0"
-files = [
- {file = "groundwork_django-0.2.0-py3-none-any.whl", hash = "sha256:611a24395666d233df3ae874f4b024b0089f4def2cdaf60a23273cf4473fd778"},
- {file = "groundwork_django-0.2.0.tar.gz", hash = "sha256:629fee311d4de6b8d540d18e8e2f53e628d4ae599cf626059270d18b039d4f83"},
-]
[package.dependencies]
djangorestframework-camel-case = ">=1.2.0,<2.0.0"
@@ -1239,12 +924,9 @@ schedule = ">=1.1.0,<2.0.0"
name = "gunicorn"
version = "20.1.0"
description = "WSGI HTTP Server for UNIX"
+category = "main"
optional = false
python-versions = ">=3.5"
-files = [
- {file = "gunicorn-20.1.0-py3-none-any.whl", hash = "sha256:9dcc4547dbb1cb284accfb15ab5667a0e5d1881cc443e0677b4882a4067a807e"},
- {file = "gunicorn-20.1.0.tar.gz", hash = "sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8"},
-]
[package.dependencies]
setuptools = ">=3.0"
@@ -1259,45 +941,33 @@ tornado = ["tornado (>=0.2)"]
name = "h11"
version = "0.14.0"
description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
- {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
-]
[[package]]
name = "html-tag-names"
version = "0.1.2"
description = "List of known HTML tag names"
+category = "main"
optional = false
python-versions = ">=3.7,<4.0"
-files = [
- {file = "html-tag-names-0.1.2.tar.gz", hash = "sha256:04924aca48770f36b5a41c27e4d917062507be05118acb0ba869c97389084297"},
- {file = "html_tag_names-0.1.2-py3-none-any.whl", hash = "sha256:eeb69ef21078486b615241f0393a72b41352c5219ee648e7c61f5632d26f0420"},
-]
[[package]]
name = "html-void-elements"
version = "0.1.0"
description = "List of HTML void tag names."
+category = "main"
optional = false
python-versions = ">=3.7,<4.0"
-files = [
- {file = "html-void-elements-0.1.0.tar.gz", hash = "sha256:931b88f84cd606fee0b582c28fcd00e41d7149421fb673e1e1abd2f0c4f231f0"},
- {file = "html_void_elements-0.1.0-py3-none-any.whl", hash = "sha256:784cf39db03cdeb017320d9301009f8f3480f9d7b254d0974272e80e0cb5e0d2"},
-]
[[package]]
name = "html5lib"
version = "1.1"
description = "HTML parser based on the WHATWG HTML specification"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-files = [
- {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"},
- {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"},
-]
[package.dependencies]
six = ">=1.9"
@@ -1313,12 +983,9 @@ lxml = ["lxml"]
name = "humanize"
version = "4.4.0"
description = "Python humanize utilities"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "humanize-4.4.0-py3-none-any.whl", hash = "sha256:8830ebf2d65d0395c1bd4c79189ad71e023f277c2c7ae00f263124432e6f2ffa"},
- {file = "humanize-4.4.0.tar.gz", hash = "sha256:efb2584565cc86b7ea87a977a15066de34cdedaf341b11c851cfcfd2b964779c"},
-]
[package.extras]
tests = ["freezegun", "pytest", "pytest-cov"]
@@ -1327,12 +994,9 @@ tests = ["freezegun", "pytest", "pytest-cov"]
name = "identify"
version = "2.5.9"
description = "File identification library for Python"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "identify-2.5.9-py2.py3-none-any.whl", hash = "sha256:a390fb696e164dbddb047a0db26e57972ae52fbd037ae68797e5ae2f4492485d"},
- {file = "identify-2.5.9.tar.gz", hash = "sha256:906036344ca769539610436e40a684e170c3648b552194980bb7b617a8daeb9f"},
-]
[package.extras]
license = ["ukkonen"]
@@ -1341,23 +1005,17 @@ license = ["ukkonen"]
name = "idna"
version = "3.4"
description = "Internationalized Domain Names in Applications (IDNA)"
+category = "main"
optional = false
python-versions = ">=3.5"
-files = [
- {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
- {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
-]
[[package]]
name = "importlib-metadata"
version = "5.1.0"
description = "Read metadata from Python packages"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "importlib_metadata-5.1.0-py3-none-any.whl", hash = "sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313"},
- {file = "importlib_metadata-5.1.0.tar.gz", hash = "sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b"},
-]
[package.dependencies]
zipp = ">=0.5"
@@ -1371,23 +1029,17 @@ testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packag
name = "iniconfig"
version = "1.1.1"
description = "iniconfig: brain-dead simple config-ini parsing"
+category = "dev"
optional = false
python-versions = "*"
-files = [
- {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
- {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
-]
[[package]]
name = "isort"
version = "5.11.2"
description = "A Python utility / library to sort Python imports."
+category = "dev"
optional = false
python-versions = ">=3.7.0"
-files = [
- {file = "isort-5.11.2-py3-none-any.whl", hash = "sha256:e486966fba83f25b8045f8dd7455b0a0d1e4de481e1d7ce4669902d9fb85e622"},
- {file = "isort-5.11.2.tar.gz", hash = "sha256:dd8bbc5c0990f2a095d754e50360915f73b4c26fc82733eb5bfc6b48396af4d2"},
-]
[package.dependencies]
colorama = {version = ">=0.4.3,<0.5.0", optional = true, markers = "extra == \"colors\""}
@@ -1402,12 +1054,9 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"]
name = "jinja2"
version = "3.1.2"
description = "A very fast and expressive template engine."
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"},
- {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"},
-]
[package.dependencies]
MarkupSafe = ">=2.0"
@@ -1419,22 +1068,17 @@ i18n = ["Babel (>=2.7)"]
name = "jmespath"
version = "1.0.1"
description = "JSON Matching Expressions"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"},
- {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"},
-]
[[package]]
name = "jsbeautifier"
version = "1.14.7"
description = "JavaScript unobfuscator and beautifier."
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "jsbeautifier-1.14.7.tar.gz", hash = "sha256:77993254db1ff6f84eb6e1d75e3b6b72cba2ef20813a585b2d81e8e5e3c713c6"},
-]
[package.dependencies]
editorconfig = ">=0.12.2"
@@ -1444,12 +1088,9 @@ six = ">=1.13.0"
name = "jsonfield"
version = "3.1.0"
description = "A reusable Django field that allows you to store validated JSON in your model."
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "jsonfield-3.1.0-py3-none-any.whl", hash = "sha256:df857811587f252b97bafba42e02805e70a398a7a47870bc6358a0308dd689ed"},
- {file = "jsonfield-3.1.0.tar.gz", hash = "sha256:7e4e84597de21eeaeeaaa7cc5da08c61c48a9b64d0c446b2d71255d01812887a"},
-]
[package.dependencies]
Django = ">=2.2"
@@ -1458,11 +1099,9 @@ Django = ">=2.2"
name = "jwcrypto"
version = "1.4.2"
description = "Implementation of JOSE Web standards"
+category = "main"
optional = false
python-versions = ">= 3.6"
-files = [
- {file = "jwcrypto-1.4.2.tar.gz", hash = "sha256:80a35e9ed1b3b2c43ce03d92c5d48e6d0b6647e2aa2618e4963448923d78a37b"},
-]
[package.dependencies]
cryptography = ">=2.3"
@@ -1472,12 +1111,9 @@ deprecated = "*"
name = "l18n"
version = "2021.3"
description = "Internationalization for pytz timezones and territories"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "l18n-2021.3-py3-none-any.whl", hash = "sha256:78495d1df95b6f7dcc694d1ba8994df709c463a1cbac1bf016e1b9a5ce7280b9"},
- {file = "l18n-2021.3.tar.gz", hash = "sha256:1956e890d673d17135cc20913253c154f6bc1c00266c22b7d503cc1a5a42d848"},
-]
[package.dependencies]
pytz = ">=2020.1"
@@ -1487,39 +1123,17 @@ six = "*"
name = "lazy-object-proxy"
version = "1.8.0"
description = "A fast and thorough lazy object proxy."
+category = "dev"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "lazy-object-proxy-1.8.0.tar.gz", hash = "sha256:c219a00245af0f6fa4e95901ed28044544f50152840c5b6a3e7b2568db34d156"},
- {file = "lazy_object_proxy-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4fd031589121ad46e293629b39604031d354043bb5cdf83da4e93c2d7f3389fe"},
- {file = "lazy_object_proxy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:b70d6e7a332eb0217e7872a73926ad4fdc14f846e85ad6749ad111084e76df25"},
- {file = "lazy_object_proxy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:eb329f8d8145379bf5dbe722182410fe8863d186e51bf034d2075eb8d85ee25b"},
- {file = "lazy_object_proxy-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4e2d9f764f1befd8bdc97673261b8bb888764dfdbd7a4d8f55e4fbcabb8c3fb7"},
- {file = "lazy_object_proxy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:e20bfa6db17a39c706d24f82df8352488d2943a3b7ce7d4c22579cb89ca8896e"},
- {file = "lazy_object_proxy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:14010b49a2f56ec4943b6cf925f597b534ee2fe1f0738c84b3bce0c1a11ff10d"},
- {file = "lazy_object_proxy-1.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6850e4aeca6d0df35bb06e05c8b934ff7c533734eb51d0ceb2d63696f1e6030c"},
- {file = "lazy_object_proxy-1.8.0-cp37-cp37m-win32.whl", hash = "sha256:5b51d6f3bfeb289dfd4e95de2ecd464cd51982fe6f00e2be1d0bf94864d58acd"},
- {file = "lazy_object_proxy-1.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6f593f26c470a379cf7f5bc6db6b5f1722353e7bf937b8d0d0b3fba911998858"},
- {file = "lazy_object_proxy-1.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c1c7c0433154bb7c54185714c6929acc0ba04ee1b167314a779b9025517eada"},
- {file = "lazy_object_proxy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:d176f392dbbdaacccf15919c77f526edf11a34aece58b55ab58539807b85436f"},
- {file = "lazy_object_proxy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:afcaa24e48bb23b3be31e329deb3f1858f1f1df86aea3d70cb5c8578bfe5261c"},
- {file = "lazy_object_proxy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:71d9ae8a82203511a6f60ca5a1b9f8ad201cac0fc75038b2dc5fa519589c9288"},
- {file = "lazy_object_proxy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:8f6ce2118a90efa7f62dd38c7dbfffd42f468b180287b748626293bf12ed468f"},
- {file = "lazy_object_proxy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:eac3a9a5ef13b332c059772fd40b4b1c3d45a3a2b05e33a361dee48e54a4dad0"},
- {file = "lazy_object_proxy-1.8.0-pp37-pypy37_pp73-any.whl", hash = "sha256:ae032743794fba4d171b5b67310d69176287b5bf82a21f588282406a79498891"},
- {file = "lazy_object_proxy-1.8.0-pp38-pypy38_pp73-any.whl", hash = "sha256:7e1561626c49cb394268edd00501b289053a652ed762c58e1081224c8d881cec"},
- {file = "lazy_object_proxy-1.8.0-pp39-pypy39_pp73-any.whl", hash = "sha256:ce58b2b3734c73e68f0e30e4e725264d4d6be95818ec0a0be4bb6bf9a7e79aa8"},
-]
[[package]]
name = "mailchimp-marketing"
version = "3.0.80"
description = "Mailchimp Marketing API"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "mailchimp_marketing-3.0.80-py3-none-any.whl", hash = "sha256:a5bcb3ebd3be60908c65af765f8195724e6fd2d61ecf6da667a794c5bc7b84d3"},
-]
[package.dependencies]
certifi = ">=2017.4.17"
@@ -1532,104 +1146,49 @@ urllib3 = ">=1.23"
name = "markuppy"
version = "1.14"
description = "An HTML/XML generator"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "MarkupPy-1.14.tar.gz", hash = "sha256:1adee2c0a542af378fe84548ff6f6b0168f3cb7f426b46961038a2bcfaad0d5f"},
-]
[[package]]
name = "markupsafe"
version = "2.1.1"
description = "Safely add untrusted strings to HTML/XML markup."
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"},
- {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"},
-]
[[package]]
name = "mccabe"
version = "0.7.0"
description = "McCabe checker, plugin for flake8"
+category = "dev"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
- {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
-]
[[package]]
name = "monotonic"
version = "1.6"
description = "An implementation of time.monotonic() for Python 2 & < 3.3"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "monotonic-1.6-py2.py3-none-any.whl", hash = "sha256:68687e19a14f11f26d140dd5c86f3dba4bf5df58003000ed467e0e2a69bca96c"},
- {file = "monotonic-1.6.tar.gz", hash = "sha256:3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7"},
-]
[[package]]
name = "mypy-extensions"
version = "0.4.3"
description = "Experimental type system extensions for programs checked with the mypy typechecker."
+category = "dev"
optional = false
python-versions = "*"
-files = [
- {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
- {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
-]
[[package]]
name = "nodeenv"
version = "1.7.0"
description = "Node.js virtual environment builder"
+category = "main"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
-files = [
- {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"},
- {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"},
-]
[package.dependencies]
setuptools = "*"
@@ -1638,12 +1197,9 @@ setuptools = "*"
name = "oauthlib"
version = "3.2.2"
description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic"
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca"},
- {file = "oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918"},
-]
[package.extras]
rsa = ["cryptography (>=3.0.0)"]
@@ -1654,11 +1210,9 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"]
name = "odfpy"
version = "1.4.1"
description = "Python API and tools to manipulate OpenDocument files"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "odfpy-1.4.1.tar.gz", hash = "sha256:db766a6e59c5103212f3cc92ec8dd50a0f3a02790233ed0b52148b70d3c438ec"},
-]
[package.dependencies]
defusedxml = "*"
@@ -1667,12 +1221,9 @@ defusedxml = "*"
name = "openpyxl"
version = "3.0.10"
description = "A Python library to read/write Excel 2010 xlsx/xlsm files"
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "openpyxl-3.0.10-py2.py3-none-any.whl", hash = "sha256:0ab6d25d01799f97a9464630abacbb34aafecdcaa0ef3cba6d6b3499867d0355"},
- {file = "openpyxl-3.0.10.tar.gz", hash = "sha256:e47805627aebcf860edb4edf7987b1309c1b3632f3750538ed962bbcc3bd7449"},
-]
[package.dependencies]
et-xmlfile = "*"
@@ -1681,67 +1232,17 @@ et-xmlfile = "*"
name = "orjson"
version = "3.9.2"
description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "orjson-3.9.2-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7323e4ca8322b1ecb87562f1ec2491831c086d9faa9a6c6503f489dadbed37d7"},
- {file = "orjson-3.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1272688ea1865f711b01ba479dea2d53e037ea00892fd04196b5875f7021d9d3"},
- {file = "orjson-3.9.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b9a26f1d1427a9101a1e8910f2e2df1f44d3d18ad5480ba031b15d5c1cb282e"},
- {file = "orjson-3.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6a5ca55b0d8f25f18b471e34abaee4b175924b6cd62f59992945b25963443141"},
- {file = "orjson-3.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:877872db2c0f41fbe21f852ff642ca842a43bc34895b70f71c9d575df31fffb4"},
- {file = "orjson-3.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a39c2529d75373b7167bf84c814ef9b8f3737a339c225ed6c0df40736df8748"},
- {file = "orjson-3.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:84ebd6fdf138eb0eb4280045442331ee71c0aab5e16397ba6645f32f911bfb37"},
- {file = "orjson-3.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a60a1cfcfe310547a1946506dd4f1ed0a7d5bd5b02c8697d9d5dcd8d2e9245e"},
- {file = "orjson-3.9.2-cp310-none-win_amd64.whl", hash = "sha256:c290c4f81e8fd0c1683638802c11610b2f722b540f8e5e858b6914b495cf90c8"},
- {file = "orjson-3.9.2-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:02ef014f9a605e84b675060785e37ec9c0d2347a04f1307a9d6840ab8ecd6f55"},
- {file = "orjson-3.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:992af54265ada1c1579500d6594ed73fe333e726de70d64919cf37f93defdd06"},
- {file = "orjson-3.9.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a40958f7af7c6d992ee67b2da4098dca8b770fc3b4b3834d540477788bfa76d3"},
- {file = "orjson-3.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93864dec3e3dd058a2dbe488d11ac0345214a6a12697f53a63e34de7d28d4257"},
- {file = "orjson-3.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16fdf5a82df80c544c3c91516ab3882cd1ac4f1f84eefeafa642e05cef5f6699"},
- {file = "orjson-3.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:275b5a18fd9ed60b2720543d3ddac170051c43d680e47d04ff5203d2c6d8ebf1"},
- {file = "orjson-3.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b9aea6dcb99fcbc9f6d1dd84fca92322fda261da7fb014514bb4689c7c2097a8"},
- {file = "orjson-3.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7d74ae0e101d17c22ef67b741ba356ab896fc0fa64b301c2bf2bb0a4d874b190"},
- {file = "orjson-3.9.2-cp311-none-win_amd64.whl", hash = "sha256:6320b28e7bdb58c3a3a5efffe04b9edad3318d82409e84670a9b24e8035a249d"},
- {file = "orjson-3.9.2-cp37-cp37m-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:368e9cc91ecb7ac21f2aa475e1901204110cf3e714e98649c2502227d248f947"},
- {file = "orjson-3.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58e9e70f0dcd6a802c35887f306b555ff7a214840aad7de24901fc8bd9cf5dde"},
- {file = "orjson-3.9.2-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00c983896c2e01c94c0ef72fd7373b2aa06d0c0eed0342c4884559f812a6835b"},
- {file = "orjson-3.9.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ee743e8890b16c87a2f89733f983370672272b61ee77429c0a5899b2c98c1a7"},
- {file = "orjson-3.9.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7b065942d362aad4818ff599d2f104c35a565c2cbcbab8c09ec49edba91da75"},
- {file = "orjson-3.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e46e9c5b404bb9e41d5555762fd410d5466b7eb1ec170ad1b1609cbebe71df21"},
- {file = "orjson-3.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8170157288714678ffd64f5de33039e1164a73fd8b6be40a8a273f80093f5c4f"},
- {file = "orjson-3.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e3e2f087161947dafe8319ea2cfcb9cea4bb9d2172ecc60ac3c9738f72ef2909"},
- {file = "orjson-3.9.2-cp37-none-win_amd64.whl", hash = "sha256:d7de3dbbe74109ae598692113cec327fd30c5a30ebca819b21dfa4052f7b08ef"},
- {file = "orjson-3.9.2-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8cd4385c59bbc1433cad4a80aca65d2d9039646a9c57f8084897549b55913b17"},
- {file = "orjson-3.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a74036aab1a80c361039290cdbc51aa7adc7ea13f56e5ef94e9be536abd227bd"},
- {file = "orjson-3.9.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1aaa46d7d4ae55335f635eadc9be0bd9bcf742e6757209fc6dc697e390010adc"},
- {file = "orjson-3.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e52c67ed6bb368083aa2078ea3ccbd9721920b93d4b06c43eb4e20c4c860046"},
- {file = "orjson-3.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a6cdfcf9c7dd4026b2b01fdff56986251dc0cc1e980c690c79eec3ae07b36e7"},
- {file = "orjson-3.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1882a70bb69595b9ec5aac0040a819e94d2833fe54901e2b32f5e734bc259a8b"},
- {file = "orjson-3.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fc05e060d452145ab3c0b5420769e7356050ea311fc03cb9d79c481982917cca"},
- {file = "orjson-3.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f8bc2c40d9bb26efefb10949d261a47ca196772c308babc538dd9f4b73e8d386"},
- {file = "orjson-3.9.2-cp38-none-win_amd64.whl", hash = "sha256:3164fc20a585ec30a9aff33ad5de3b20ce85702b2b2a456852c413e3f0d7ab09"},
- {file = "orjson-3.9.2-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7a6ccadf788531595ed4728aa746bc271955448d2460ff0ef8e21eb3f2a281ba"},
- {file = "orjson-3.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3245d230370f571c945f69aab823c279a868dc877352817e22e551de155cb06c"},
- {file = "orjson-3.9.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:205925b179550a4ee39b8418dd4c94ad6b777d165d7d22614771c771d44f57bd"},
- {file = "orjson-3.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0325fe2d69512187761f7368c8cda1959bcb75fc56b8e7a884e9569112320e57"},
- {file = "orjson-3.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:806704cd58708acc66a064a9a58e3be25cf1c3f9f159e8757bd3f515bfabdfa1"},
- {file = "orjson-3.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03fb36f187a0c19ff38f6289418863df8b9b7880cdbe279e920bef3a09d8dab1"},
- {file = "orjson-3.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:20925d07a97c49c6305bff1635318d9fc1804aa4ccacb5fb0deb8a910e57d97a"},
- {file = "orjson-3.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:eebfed53bec5674e981ebe8ed2cf00b3f7bcda62d634733ff779c264307ea505"},
- {file = "orjson-3.9.2-cp39-none-win_amd64.whl", hash = "sha256:869b961df5fcedf6c79f4096119b35679b63272362e9b745e668f0391a892d39"},
- {file = "orjson-3.9.2.tar.gz", hash = "sha256:24257c8f641979bf25ecd3e27251b5cc194cdd3a6e96004aac8446f5e63d9664"},
-]
[[package]]
name = "outcome"
version = "1.2.0"
description = "Capture the outcome of Python function calls."
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "outcome-1.2.0-py2.py3-none-any.whl", hash = "sha256:c4ab89a56575d6d38a05aa16daeaa333109c1f96167aba8901ab18b6b5e0f7f5"},
- {file = "outcome-1.2.0.tar.gz", hash = "sha256:6f82bd3de45da303cf1f771ecafa1633750a358436a8bb60e06a1ceb745d2672"},
-]
[package.dependencies]
attrs = ">=19.2.0"
@@ -1750,119 +1251,62 @@ attrs = ">=19.2.0"
name = "packaging"
version = "22.0"
description = "Core utilities for Python packages"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "packaging-22.0-py3-none-any.whl", hash = "sha256:957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3"},
- {file = "packaging-22.0.tar.gz", hash = "sha256:2198ec20bd4c017b8f9717e00f0c8714076fc2fd93816750ab48e2c41de2cfd3"},
-]
[[package]]
name = "pathspec"
version = "0.10.3"
description = "Utility library for gitignore style pattern matching of file paths."
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "pathspec-0.10.3-py3-none-any.whl", hash = "sha256:3c95343af8b756205e2aba76e843ba9520a24dd84f68c22b9f93251507509dd6"},
- {file = "pathspec-0.10.3.tar.gz", hash = "sha256:56200de4077d9d0791465aa9095a01d421861e405b5096955051deefd697d6f6"},
-]
[[package]]
name = "pbr"
version = "5.11.0"
description = "Python Build Reasonableness"
+category = "dev"
optional = false
python-versions = ">=2.6"
-files = [
- {file = "pbr-5.11.0-py2.py3-none-any.whl", hash = "sha256:db2317ff07c84c4c63648c9064a79fe9d9f5c7ce85a9099d4b6258b3db83225a"},
- {file = "pbr-5.11.0.tar.gz", hash = "sha256:b97bc6695b2aff02144133c2e7399d5885223d42b7912ffaec2ca3898e673bfe"},
-]
[[package]]
name = "pillow"
version = "9.3.0"
description = "Python Imaging Library (Fork)"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "Pillow-9.3.0-1-cp37-cp37m-win32.whl", hash = "sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74"},
- {file = "Pillow-9.3.0-1-cp37-cp37m-win_amd64.whl", hash = "sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa"},
- {file = "Pillow-9.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:0b7257127d646ff8676ec8a15520013a698d1fdc48bc2a79ba4e53df792526f2"},
- {file = "Pillow-9.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b90f7616ea170e92820775ed47e136208e04c967271c9ef615b6fbd08d9af0e3"},
- {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68943d632f1f9e3dce98908e873b3a090f6cba1cbb1b892a9e8d97c938871fbe"},
- {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be55f8457cd1eac957af0c3f5ece7bc3f033f89b114ef30f710882717670b2a8"},
- {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d77adcd56a42d00cc1be30843d3426aa4e660cab4a61021dc84467123f7a00c"},
- {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:829f97c8e258593b9daa80638aee3789b7df9da5cf1336035016d76f03b8860c"},
- {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:801ec82e4188e935c7f5e22e006d01611d6b41661bba9fe45b60e7ac1a8f84de"},
- {file = "Pillow-9.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:871b72c3643e516db4ecf20efe735deb27fe30ca17800e661d769faab45a18d7"},
- {file = "Pillow-9.3.0-cp310-cp310-win32.whl", hash = "sha256:655a83b0058ba47c7c52e4e2df5ecf484c1b0b0349805896dd350cbc416bdd91"},
- {file = "Pillow-9.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:9f47eabcd2ded7698106b05c2c338672d16a6f2a485e74481f524e2a23c2794b"},
- {file = "Pillow-9.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:57751894f6618fd4308ed8e0c36c333e2f5469744c34729a27532b3db106ee20"},
- {file = "Pillow-9.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7db8b751ad307d7cf238f02101e8e36a128a6cb199326e867d1398067381bff4"},
- {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1"},
- {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22b012ea2d065fd163ca096f4e37e47cd8b59cf4b0fd47bfca6abb93df70b34c"},
- {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a65733d103311331875c1dca05cb4606997fd33d6acfed695b1232ba1df193"},
- {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:502526a2cbfa431d9fc2a079bdd9061a2397b842bb6bc4239bb176da00993812"},
- {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:90fb88843d3902fe7c9586d439d1e8c05258f41da473952aa8b328d8b907498c"},
- {file = "Pillow-9.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:89dca0ce00a2b49024df6325925555d406b14aa3efc2f752dbb5940c52c56b11"},
- {file = "Pillow-9.3.0-cp311-cp311-win32.whl", hash = "sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c"},
- {file = "Pillow-9.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:18498994b29e1cf86d505edcb7edbe814d133d2232d256db8c7a8ceb34d18cef"},
- {file = "Pillow-9.3.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:772a91fc0e03eaf922c63badeca75e91baa80fe2f5f87bdaed4280662aad25c9"},
- {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa4107d1b306cdf8953edde0534562607fe8811b6c4d9a486298ad31de733b2"},
- {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4012d06c846dc2b80651b120e2cdd787b013deb39c09f407727ba90015c684f"},
- {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77ec3e7be99629898c9a6d24a09de089fa5356ee408cdffffe62d67bb75fdd72"},
- {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:6c738585d7a9961d8c2821a1eb3dcb978d14e238be3d70f0a706f7fa9316946b"},
- {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:828989c45c245518065a110434246c44a56a8b2b2f6347d1409c787e6e4651ee"},
- {file = "Pillow-9.3.0-cp37-cp37m-win32.whl", hash = "sha256:82409ffe29d70fd733ff3c1025a602abb3e67405d41b9403b00b01debc4c9a29"},
- {file = "Pillow-9.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4"},
- {file = "Pillow-9.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:b03ae6f1a1878233ac620c98f3459f79fd77c7e3c2b20d460284e1fb370557d4"},
- {file = "Pillow-9.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4390e9ce199fc1951fcfa65795f239a8a4944117b5935a9317fb320e7767b40f"},
- {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502"},
- {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0a06a052c5f37b4ed81c613a455a81f9a3a69429b4fd7bb913c3fa98abefc20"},
- {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040"},
- {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:15c42fb9dea42465dfd902fb0ecf584b8848ceb28b41ee2b58f866411be33f07"},
- {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:51e0e543a33ed92db9f5ef69a0356e0b1a7a6b6a71b80df99f1d181ae5875636"},
- {file = "Pillow-9.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32"},
- {file = "Pillow-9.3.0-cp38-cp38-win32.whl", hash = "sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0"},
- {file = "Pillow-9.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:276a5ca930c913f714e372b2591a22c4bd3b81a418c0f6635ba832daec1cbcfc"},
- {file = "Pillow-9.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:73bd195e43f3fadecfc50c682f5055ec32ee2c933243cafbfdec69ab1aa87cad"},
- {file = "Pillow-9.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c7c8ae3864846fc95f4611c78129301e203aaa2af813b703c55d10cc1628535"},
- {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3"},
- {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0915e734b33a474d76c28e07292f196cdf2a590a0d25bcc06e64e545f2d146c"},
- {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0372acb5d3598f36ec0914deed2a63f6bcdb7b606da04dc19a88d31bf0c05b"},
- {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:ad58d27a5b0262c0c19b47d54c5802db9b34d38bbf886665b626aff83c74bacd"},
- {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:97aabc5c50312afa5e0a2b07c17d4ac5e865b250986f8afe2b02d772567a380c"},
- {file = "Pillow-9.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9aaa107275d8527e9d6e7670b64aabaaa36e5b6bd71a1015ddd21da0d4e06448"},
- {file = "Pillow-9.3.0-cp39-cp39-win32.whl", hash = "sha256:bac18ab8d2d1e6b4ce25e3424f709aceef668347db8637c2296bcf41acb7cf48"},
- {file = "Pillow-9.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:b472b5ea442148d1c3e2209f20f1e0bb0eb556538690fa70b5e1f79fa0ba8dc2"},
- {file = "Pillow-9.3.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ab388aaa3f6ce52ac1cb8e122c4bd46657c15905904b3120a6248b5b8b0bc228"},
- {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b"},
- {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca31dd6014cb8b0b2db1e46081b0ca7d936f856da3b39744aef499db5d84d02"},
- {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e"},
- {file = "Pillow-9.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb"},
- {file = "Pillow-9.3.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b59430236b8e58840a0dfb4099a0e8717ffb779c952426a69ae435ca1f57210c"},
- {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12ce4932caf2ddf3e41d17fc9c02d67126935a44b86df6a206cf0d7161548627"},
- {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae5331c23ce118c53b172fa64a4c037eb83c9165aba3a7ba9ddd3ec9fa64a699"},
- {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:0b07fffc13f474264c336298d1b4ce01d9c5a011415b79d4ee5527bb69ae6f65"},
- {file = "Pillow-9.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8"},
- {file = "Pillow-9.3.0.tar.gz", hash = "sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f"},
-]
[package.extras]
docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"]
tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
+[[package]]
+name = "pillow-heif"
+version = "0.13.1"
+description = "Python interface for libheif library"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+
+[package.dependencies]
+pillow = ">=9.1.1"
+
+[package.extras]
+dev = ["coverage", "defusedxml", "numpy", "opencv-python (==4.8.1.78)", "packaging", "pre-commit", "pylint", "pympler", "pytest"]
+docs = ["sphinx (>=4.4)", "sphinx-issues (>=3.0.1)", "sphinx-rtd-theme (>=1.0)"]
+tests = ["defusedxml", "numpy", "packaging", "pympler", "pytest"]
+tests-min = ["defusedxml", "packaging", "pytest"]
+
[[package]]
name = "platformdirs"
version = "2.6.0"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "platformdirs-2.6.0-py3-none-any.whl", hash = "sha256:1a89a12377800c81983db6be069ec068eee989748799b946cce2a6e80dcc54ca"},
- {file = "platformdirs-2.6.0.tar.gz", hash = "sha256:b46ffafa316e6b83b47489d240ce17173f123a9b9c83282141c3daf26ad9ac2e"},
-]
[package.extras]
docs = ["furo (>=2022.9.29)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.4)"]
@@ -1872,12 +1316,9 @@ test = ["appdirs (==1.4.4)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock
name = "pluggy"
version = "1.0.0"
description = "plugin and hook calling mechanisms for python"
+category = "dev"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
- {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
-]
[package.extras]
dev = ["pre-commit", "tox"]
@@ -1887,12 +1328,9 @@ testing = ["pytest", "pytest-benchmark"]
name = "posthog"
version = "1.4.9"
description = "Integrate PostHog into any python application."
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "posthog-1.4.9-py2.py3-none-any.whl", hash = "sha256:f2dde13313193a735fc968acfca8298afb78efb5fe67780c496d533211a8f280"},
- {file = "posthog-1.4.9.tar.gz", hash = "sha256:6f99ca20da4e343be80b7535a719a2652b77cf06c10406e66e3340a9c278f928"},
-]
[package.dependencies]
backoff = ">=1.10.0,<2.0.0"
@@ -1910,12 +1348,9 @@ test = ["coverage", "flake8", "freezegun (==0.3.15)", "mock (>=2.0.0)", "pylint"
name = "pre-commit"
version = "2.20.0"
description = "A framework for managing and maintaining multi-language pre-commit hooks."
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "pre_commit-2.20.0-py2.py3-none-any.whl", hash = "sha256:51a5ba7c480ae8072ecdb6933df22d2f812dc897d5fe848778116129a681aac7"},
- {file = "pre_commit-2.20.0.tar.gz", hash = "sha256:a978dac7bc9ec0bcee55c18a277d553b0f419d259dadb4b9418ff2d00eb43959"},
-]
[package.dependencies]
cfgv = ">=2.0.0"
@@ -1929,61 +1364,41 @@ virtualenv = ">=20.0.8"
name = "psycopg2"
version = "2.9.5"
description = "psycopg2 - Python-PostgreSQL Database Adapter"
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "psycopg2-2.9.5-cp310-cp310-win32.whl", hash = "sha256:d3ef67e630b0de0779c42912fe2cbae3805ebaba30cda27fea2a3de650a9414f"},
- {file = "psycopg2-2.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:4cb9936316d88bfab614666eb9e32995e794ed0f8f6b3b718666c22819c1d7ee"},
- {file = "psycopg2-2.9.5-cp311-cp311-win32.whl", hash = "sha256:093e3894d2d3c592ab0945d9eba9d139c139664dcf83a1c440b8a7aa9bb21955"},
- {file = "psycopg2-2.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:920bf418000dd17669d2904472efeab2b20546efd0548139618f8fa305d1d7ad"},
- {file = "psycopg2-2.9.5-cp36-cp36m-win32.whl", hash = "sha256:b9ac1b0d8ecc49e05e4e182694f418d27f3aedcfca854ebd6c05bb1cffa10d6d"},
- {file = "psycopg2-2.9.5-cp36-cp36m-win_amd64.whl", hash = "sha256:fc04dd5189b90d825509caa510f20d1d504761e78b8dfb95a0ede180f71d50e5"},
- {file = "psycopg2-2.9.5-cp37-cp37m-win32.whl", hash = "sha256:922cc5f0b98a5f2b1ff481f5551b95cd04580fd6f0c72d9b22e6c0145a4840e0"},
- {file = "psycopg2-2.9.5-cp37-cp37m-win_amd64.whl", hash = "sha256:1e5a38aa85bd660c53947bd28aeaafb6a97d70423606f1ccb044a03a1203fe4a"},
- {file = "psycopg2-2.9.5-cp38-cp38-win32.whl", hash = "sha256:f5b6320dbc3cf6cfb9f25308286f9f7ab464e65cfb105b64cc9c52831748ced2"},
- {file = "psycopg2-2.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:1a5c7d7d577e0eabfcf15eb87d1e19314c8c4f0e722a301f98e0e3a65e238b4e"},
- {file = "psycopg2-2.9.5-cp39-cp39-win32.whl", hash = "sha256:322fd5fca0b1113677089d4ebd5222c964b1760e361f151cbb2706c4912112c5"},
- {file = "psycopg2-2.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:190d51e8c1b25a47484e52a79638a8182451d6f6dff99f26ad9bd81e5359a0fa"},
- {file = "psycopg2-2.9.5.tar.gz", hash = "sha256:a5246d2e683a972e2187a8714b5c2cf8156c064629f9a9b1a873c1730d9e245a"},
-]
[[package]]
name = "py"
version = "1.11.0"
description = "library with cross-python path, ini-parsing, io, code, log facilities"
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-files = [
- {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
- {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
-]
[[package]]
name = "py-moneyed"
-version = "1.2"
+version = "3.0"
description = "Provides Currency and Money classes for use in your Python code."
+category = "main"
optional = false
-python-versions = "*"
-files = [
- {file = "py-moneyed-1.2.tar.gz", hash = "sha256:d745a52819604f42b3666f9b2504b71c27c1645d6d5027d95ec5ed1f28ca86e3"},
- {file = "py_moneyed-1.2-py2.py3-none-any.whl", hash = "sha256:c6131c7b7c1f8503552afe44d15c343ea50282d1d9e6fa8b3f1bd2affc1dae1e"},
-]
+python-versions = ">=3.7"
[package.dependencies]
babel = ">=2.8.0"
+typing-extensions = ">=3.7.4.3"
[package.extras]
tests = ["pytest (>=2.3.0)", "tox (>=1.6.0)"]
+type-tests = ["mypy (>=0.812)", "pytest (>=2.3.0)", "pytest-mypy-plugins"]
[[package]]
name = "pyactiveresource"
version = "2.2.2"
description = "ActiveResource for Python"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "pyactiveresource-2.2.2.tar.gz", hash = "sha256:2f03844652dc206d9a086b0b15564d78dcec55786fa5fe0055dd2119e0dffdd8"},
-]
[package.dependencies]
six = "*"
@@ -1992,22 +1407,17 @@ six = "*"
name = "pycodestyle"
version = "2.10.0"
description = "Python style guide checker"
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "pycodestyle-2.10.0-py2.py3-none-any.whl", hash = "sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610"},
- {file = "pycodestyle-2.10.0.tar.gz", hash = "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053"},
-]
[[package]]
name = "pycountry"
version = "22.3.5"
description = "ISO country, subdivision, language, currency and script definitions and their translations"
+category = "main"
optional = false
python-versions = ">=3.6, <4"
-files = [
- {file = "pycountry-22.3.5.tar.gz", hash = "sha256:b2163a246c585894d808f18783e19137cb70a0c18fb36748dc01fc6f109c1646"},
-]
[package.dependencies]
setuptools = "*"
@@ -2016,23 +1426,17 @@ setuptools = "*"
name = "pycparser"
version = "2.21"
description = "C parser in Python"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-files = [
- {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
- {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
-]
[[package]]
name = "pydocstyle"
version = "6.1.1"
description = "Python docstring style checker"
+category = "dev"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "pydocstyle-6.1.1-py3-none-any.whl", hash = "sha256:6987826d6775056839940041beef5c08cc7e3d71d63149b48e36727f70144dc4"},
- {file = "pydocstyle-6.1.1.tar.gz", hash = "sha256:1d41b7c459ba0ee6c345f2eb9ae827cab14a7533a88c5c6f7e94923f72df92dc"},
-]
[package.dependencies]
snowballstemmer = "*"
@@ -2044,12 +1448,9 @@ toml = ["toml"]
name = "pygments"
version = "2.13.0"
description = "Pygments is a syntax highlighting package written in Python."
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"},
- {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"},
-]
[package.extras]
plugins = ["importlib-metadata"]
@@ -2058,12 +1459,9 @@ plugins = ["importlib-metadata"]
name = "pyjwt"
version = "2.6.0"
description = "JSON Web Token implementation in Python"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "PyJWT-2.6.0-py3-none-any.whl", hash = "sha256:d83c3d892a77bbb74d3e1a2cfa90afaadb60945205d1095d9221f04466f64c14"},
- {file = "PyJWT-2.6.0.tar.gz", hash = "sha256:69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd"},
-]
[package.dependencies]
cryptography = {version = ">=3.4.0", optional = true, markers = "extra == \"crypto\""}
@@ -2078,12 +1476,9 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"]
name = "pylint"
version = "2.15.8"
description = "python code static checker"
+category = "dev"
optional = false
python-versions = ">=3.7.2"
-files = [
- {file = "pylint-2.15.8-py3-none-any.whl", hash = "sha256:ea82cd6a1e11062dc86d555d07c021b0fb65afe39becbe6fe692efd6c4a67443"},
- {file = "pylint-2.15.8.tar.gz", hash = "sha256:ec4a87c33da054ab86a6c79afa6771dc8765cb5631620053e727fcf3ef8cbed7"},
-]
[package.dependencies]
astroid = ">=2.12.13,<=2.14.0-dev0"
@@ -2104,24 +1499,17 @@ testutils = ["gitpython (>3)"]
name = "pysocks"
version = "1.7.1"
description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-files = [
- {file = "PySocks-1.7.1-py27-none-any.whl", hash = "sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299"},
- {file = "PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5"},
- {file = "PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0"},
-]
[[package]]
name = "pytest"
version = "6.2.5"
description = "pytest: simple powerful testing with Python"
+category = "dev"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
- {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"},
-]
[package.dependencies]
atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
@@ -2140,12 +1528,9 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm
name = "pytest-django"
version = "4.5.2"
description = "A Django plugin for pytest."
+category = "dev"
optional = false
python-versions = ">=3.5"
-files = [
- {file = "pytest-django-4.5.2.tar.gz", hash = "sha256:d9076f759bb7c36939dbdd5ae6633c18edfc2902d1a69fdbefd2426b970ce6c2"},
- {file = "pytest_django-4.5.2-py3-none-any.whl", hash = "sha256:c60834861933773109334fe5a53e83d1ef4828f2203a1d6a0fa9972f4f75ab3e"},
-]
[package.dependencies]
pytest = ">=5.4.0"
@@ -2158,12 +1543,9 @@ testing = ["Django", "django-configurations (>=2.0)"]
name = "python-dateutil"
version = "2.8.2"
description = "Extensions to the standard Python datetime module"
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
-files = [
- {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
- {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
-]
[package.dependencies]
six = ">=1.5"
@@ -2172,12 +1554,9 @@ six = ">=1.5"
name = "python-dotenv"
version = "0.21.0"
description = "Read key-value pairs from a .env file and set them as environment variables"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "python-dotenv-0.21.0.tar.gz", hash = "sha256:b77d08274639e3d34145dfa6c7008e66df0f04b7be7a75fd0d5292c191d79045"},
- {file = "python_dotenv-0.21.0-py3-none-any.whl", hash = "sha256:1684eb44636dd462b66c3ee016599815514527ad99965de77f43e0944634a7e5"},
-]
[package.extras]
cli = ["click (>=5.0)"]
@@ -2186,12 +1565,9 @@ cli = ["click (>=5.0)"]
name = "python3-openid"
version = "3.2.0"
description = "OpenID support for modern servers and consumers."
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "python3-openid-3.2.0.tar.gz", hash = "sha256:33fbf6928f401e0b790151ed2b5290b02545e8775f982485205a066f874aaeaf"},
- {file = "python3_openid-3.2.0-py3-none-any.whl", hash = "sha256:6626f771e0417486701e0b4daff762e7212e820ca5b29fcc0d05f6f8736dfa6b"},
-]
[package.dependencies]
defusedxml = "*"
@@ -2204,23 +1580,17 @@ postgresql = ["psycopg2"]
name = "pytz"
version = "2022.6"
description = "World timezone definitions, modern and historical"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "pytz-2022.6-py2.py3-none-any.whl", hash = "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427"},
- {file = "pytz-2022.6.tar.gz", hash = "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"},
-]
[[package]]
name = "pyupgrade"
version = "2.38.4"
description = "A tool to automatically upgrade syntax for newer versions."
+category = "dev"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "pyupgrade-2.38.4-py2.py3-none-any.whl", hash = "sha256:944ff993c396ddc2b9012eb3de4cda138eb4c149b22c6c560d4c8bfd0e180982"},
- {file = "pyupgrade-2.38.4.tar.gz", hash = "sha256:1eb43a49f416752929741ba4d706bf3f33593d3cac9bdc217fc1ef55c047c1f4"},
-]
[package.dependencies]
tokenize-rt = "<5"
@@ -2229,158 +1599,25 @@ tokenize-rt = "<5"
name = "pyyaml"
version = "6.0"
description = "YAML parser and emitter for Python"
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"},
- {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"},
- {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"},
- {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"},
- {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"},
- {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"},
- {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"},
- {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"},
- {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"},
- {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"},
- {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"},
- {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"},
- {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"},
- {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"},
- {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"},
- {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"},
- {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"},
- {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"},
- {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"},
- {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"},
- {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"},
- {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"},
- {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"},
- {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"},
- {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"},
- {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"},
- {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"},
- {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"},
- {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"},
- {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"},
- {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"},
- {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"},
- {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"},
- {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"},
- {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"},
- {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"},
- {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"},
- {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"},
- {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"},
- {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"},
-]
[[package]]
name = "regex"
version = "2022.10.31"
description = "Alternative regular expression module, to replace re."
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "regex-2022.10.31-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f"},
- {file = "regex-2022.10.31-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9"},
- {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b"},
- {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d03fe67b2325cb3f09be029fd5da8df9e6974f0cde2c2ac6a79d2634e791dd57"},
- {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9d0b68ac1743964755ae2d89772c7e6fb0118acd4d0b7464eaf3921c6b49dd4"},
- {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a45b6514861916c429e6059a55cf7db74670eaed2052a648e3e4d04f070e001"},
- {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b0886885f7323beea6f552c28bff62cbe0983b9fbb94126531693ea6c5ebb90"},
- {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5aefb84a301327ad115e9d346c8e2760009131d9d4b4c6b213648d02e2abe144"},
- {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:702d8fc6f25bbf412ee706bd73019da5e44a8400861dfff7ff31eb5b4a1276dc"},
- {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a3c1ebd4ed8e76e886507c9eddb1a891673686c813adf889b864a17fafcf6d66"},
- {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:50921c140561d3db2ab9f5b11c5184846cde686bb5a9dc64cae442926e86f3af"},
- {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:7db345956ecce0c99b97b042b4ca7326feeec6b75facd8390af73b18e2650ffc"},
- {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:763b64853b0a8f4f9cfb41a76a4a85a9bcda7fdda5cb057016e7706fde928e66"},
- {file = "regex-2022.10.31-cp310-cp310-win32.whl", hash = "sha256:44136355e2f5e06bf6b23d337a75386371ba742ffa771440b85bed367c1318d1"},
- {file = "regex-2022.10.31-cp310-cp310-win_amd64.whl", hash = "sha256:bfff48c7bd23c6e2aec6454aaf6edc44444b229e94743b34bdcdda2e35126cf5"},
- {file = "regex-2022.10.31-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4b4b1fe58cd102d75ef0552cf17242705ce0759f9695334a56644ad2d83903fe"},
- {file = "regex-2022.10.31-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:542e3e306d1669b25936b64917285cdffcd4f5c6f0247636fec037187bd93542"},
- {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c27cc1e4b197092e50ddbf0118c788d9977f3f8f35bfbbd3e76c1846a3443df7"},
- {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8e38472739028e5f2c3a4aded0ab7eadc447f0d84f310c7a8bb697ec417229e"},
- {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76c598ca73ec73a2f568e2a72ba46c3b6c8690ad9a07092b18e48ceb936e9f0c"},
- {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c28d3309ebd6d6b2cf82969b5179bed5fefe6142c70f354ece94324fa11bf6a1"},
- {file = "regex-2022.10.31-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9af69f6746120998cd9c355e9c3c6aec7dff70d47247188feb4f829502be8ab4"},
- {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a5f9505efd574d1e5b4a76ac9dd92a12acb2b309551e9aa874c13c11caefbe4f"},
- {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5ff525698de226c0ca743bfa71fc6b378cda2ddcf0d22d7c37b1cc925c9650a5"},
- {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4fe7fda2fe7c8890d454f2cbc91d6c01baf206fbc96d89a80241a02985118c0c"},
- {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2cdc55ca07b4e70dda898d2ab7150ecf17c990076d3acd7a5f3b25cb23a69f1c"},
- {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:44a6c2f6374e0033873e9ed577a54a3602b4f609867794c1a3ebba65e4c93ee7"},
- {file = "regex-2022.10.31-cp311-cp311-win32.whl", hash = "sha256:d8716f82502997b3d0895d1c64c3b834181b1eaca28f3f6336a71777e437c2af"},
- {file = "regex-2022.10.31-cp311-cp311-win_amd64.whl", hash = "sha256:61edbca89aa3f5ef7ecac8c23d975fe7261c12665f1d90a6b1af527bba86ce61"},
- {file = "regex-2022.10.31-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a069c8483466806ab94ea9068c34b200b8bfc66b6762f45a831c4baaa9e8cdd"},
- {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d26166acf62f731f50bdd885b04b38828436d74e8e362bfcb8df221d868b5d9b"},
- {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac741bf78b9bb432e2d314439275235f41656e189856b11fb4e774d9f7246d81"},
- {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75f591b2055523fc02a4bbe598aa867df9e953255f0b7f7715d2a36a9c30065c"},
- {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b30bddd61d2a3261f025ad0f9ee2586988c6a00c780a2fb0a92cea2aa702c54"},
- {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef4163770525257876f10e8ece1cf25b71468316f61451ded1a6f44273eedeb5"},
- {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7b280948d00bd3973c1998f92e22aa3ecb76682e3a4255f33e1020bd32adf443"},
- {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:d0213671691e341f6849bf33cd9fad21f7b1cb88b89e024f33370733fec58742"},
- {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:22e7ebc231d28393dfdc19b185d97e14a0f178bedd78e85aad660e93b646604e"},
- {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:8ad241da7fac963d7573cc67a064c57c58766b62a9a20c452ca1f21050868dfa"},
- {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:586b36ebda81e6c1a9c5a5d0bfdc236399ba6595e1397842fd4a45648c30f35e"},
- {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4"},
- {file = "regex-2022.10.31-cp36-cp36m-win32.whl", hash = "sha256:144486e029793a733e43b2e37df16a16df4ceb62102636ff3db6033994711066"},
- {file = "regex-2022.10.31-cp36-cp36m-win_amd64.whl", hash = "sha256:c14b63c9d7bab795d17392c7c1f9aaabbffd4cf4387725a0ac69109fb3b550c6"},
- {file = "regex-2022.10.31-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4cac3405d8dda8bc6ed499557625585544dd5cbf32072dcc72b5a176cb1271c8"},
- {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23cbb932cc53a86ebde0fb72e7e645f9a5eec1a5af7aa9ce333e46286caef783"},
- {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74bcab50a13960f2a610cdcd066e25f1fd59e23b69637c92ad470784a51b1347"},
- {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78d680ef3e4d405f36f0d6d1ea54e740366f061645930072d39bca16a10d8c93"},
- {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce6910b56b700bea7be82c54ddf2e0ed792a577dfaa4a76b9af07d550af435c6"},
- {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:659175b2144d199560d99a8d13b2228b85e6019b6e09e556209dfb8c37b78a11"},
- {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1ddf14031a3882f684b8642cb74eea3af93a2be68893901b2b387c5fd92a03ec"},
- {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b683e5fd7f74fb66e89a1ed16076dbab3f8e9f34c18b1979ded614fe10cdc4d9"},
- {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2bde29cc44fa81c0a0c8686992c3080b37c488df167a371500b2a43ce9f026d1"},
- {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4919899577ba37f505aaebdf6e7dc812d55e8f097331312db7f1aab18767cce8"},
- {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:9c94f7cc91ab16b36ba5ce476f1904c91d6c92441f01cd61a8e2729442d6fcf5"},
- {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae1e96785696b543394a4e3f15f3f225d44f3c55dafe3f206493031419fedf95"},
- {file = "regex-2022.10.31-cp37-cp37m-win32.whl", hash = "sha256:c670f4773f2f6f1957ff8a3962c7dd12e4be54d05839b216cb7fd70b5a1df394"},
- {file = "regex-2022.10.31-cp37-cp37m-win_amd64.whl", hash = "sha256:8e0caeff18b96ea90fc0eb6e3bdb2b10ab5b01a95128dfeccb64a7238decf5f0"},
- {file = "regex-2022.10.31-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:131d4be09bea7ce2577f9623e415cab287a3c8e0624f778c1d955ec7c281bd4d"},
- {file = "regex-2022.10.31-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e613a98ead2005c4ce037c7b061f2409a1a4e45099edb0ef3200ee26ed2a69a8"},
- {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad"},
- {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa62a07ac93b7cb6b7d0389d8ef57ffc321d78f60c037b19dfa78d6b17c928ee"},
- {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5352bea8a8f84b89d45ccc503f390a6be77917932b1c98c4cdc3565137acc714"},
- {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20f61c9944f0be2dc2b75689ba409938c14876c19d02f7585af4460b6a21403e"},
- {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29c04741b9ae13d1e94cf93fca257730b97ce6ea64cfe1eba11cf9ac4e85afb6"},
- {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:543883e3496c8b6d58bd036c99486c3c8387c2fc01f7a342b760c1ea3158a318"},
- {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7a8b43ee64ca8f4befa2bea4083f7c52c92864d8518244bfa6e88c751fa8fff"},
- {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6a9a19bea8495bb419dc5d38c4519567781cd8d571c72efc6aa959473d10221a"},
- {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6ffd55b5aedc6f25fd8d9f905c9376ca44fcf768673ffb9d160dd6f409bfda73"},
- {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4bdd56ee719a8f751cf5a593476a441c4e56c9b64dc1f0f30902858c4ef8771d"},
- {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ca88da1bd78990b536c4a7765f719803eb4f8f9971cc22d6ca965c10a7f2c4c"},
- {file = "regex-2022.10.31-cp38-cp38-win32.whl", hash = "sha256:5a260758454580f11dd8743fa98319bb046037dfab4f7828008909d0aa5292bc"},
- {file = "regex-2022.10.31-cp38-cp38-win_amd64.whl", hash = "sha256:5e6a5567078b3eaed93558842346c9d678e116ab0135e22eb72db8325e90b453"},
- {file = "regex-2022.10.31-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5217c25229b6a85049416a5c1e6451e9060a1edcf988641e309dbe3ab26d3e49"},
- {file = "regex-2022.10.31-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4bf41b8b0a80708f7e0384519795e80dcb44d7199a35d52c15cc674d10b3081b"},
- {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf0da36a212978be2c2e2e2d04bdff46f850108fccc1851332bcae51c8907cc"},
- {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d403d781b0e06d2922435ce3b8d2376579f0c217ae491e273bab8d092727d244"},
- {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a37d51fa9a00d265cf73f3de3930fa9c41548177ba4f0faf76e61d512c774690"},
- {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4f781ffedd17b0b834c8731b75cce2639d5a8afe961c1e58ee7f1f20b3af185"},
- {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d243b36fbf3d73c25e48014961e83c19c9cc92530516ce3c43050ea6276a2ab7"},
- {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:370f6e97d02bf2dd20d7468ce4f38e173a124e769762d00beadec3bc2f4b3bc4"},
- {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:597f899f4ed42a38df7b0e46714880fb4e19a25c2f66e5c908805466721760f5"},
- {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7dbdce0c534bbf52274b94768b3498abdf675a691fec5f751b6057b3030f34c1"},
- {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:22960019a842777a9fa5134c2364efaed5fbf9610ddc5c904bd3a400973b0eb8"},
- {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7f5a3ffc731494f1a57bd91c47dc483a1e10048131ffb52d901bfe2beb6102e8"},
- {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7ef6b5942e6bfc5706301a18a62300c60db9af7f6368042227ccb7eeb22d0892"},
- {file = "regex-2022.10.31-cp39-cp39-win32.whl", hash = "sha256:395161bbdbd04a8333b9ff9763a05e9ceb4fe210e3c7690f5e68cedd3d65d8e1"},
- {file = "regex-2022.10.31-cp39-cp39-win_amd64.whl", hash = "sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692"},
- {file = "regex-2022.10.31.tar.gz", hash = "sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83"},
-]
[[package]]
name = "requests"
version = "2.28.1"
description = "Python HTTP for Humans."
+category = "main"
optional = false
python-versions = ">=3.7, <4"
-files = [
- {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"},
- {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"},
-]
[package.dependencies]
certifi = ">=2017.4.17"
@@ -2396,12 +1633,9 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
name = "requests-oauthlib"
version = "1.3.1"
description = "OAuthlib authentication support for Requests."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-files = [
- {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"},
- {file = "requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5"},
-]
[package.dependencies]
oauthlib = ">=3.0.0"
@@ -2414,12 +1648,9 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"]
name = "rich"
version = "10.16.2"
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
+category = "main"
optional = false
python-versions = ">=3.6.2,<4.0.0"
-files = [
- {file = "rich-10.16.2-py3-none-any.whl", hash = "sha256:c59d73bd804c90f747c8d7b1d023b88f2a9ac2454224a4aeaf959b21eeb42d03"},
- {file = "rich-10.16.2.tar.gz", hash = "sha256:720974689960e06c2efdb54327f8bf0cdbdf4eae4ad73b6c94213cad405c371b"},
-]
[package.dependencies]
colorama = ">=0.4.0,<0.5.0"
@@ -2433,12 +1664,9 @@ jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"]
name = "s3transfer"
version = "0.6.0"
description = "An Amazon S3 Transfer Manager"
+category = "main"
optional = false
python-versions = ">= 3.7"
-files = [
- {file = "s3transfer-0.6.0-py3-none-any.whl", hash = "sha256:06176b74f3a15f61f1b4f25a1fc29a4429040b7647133a463da8fa5bd28d5ecd"},
- {file = "s3transfer-0.6.0.tar.gz", hash = "sha256:2ed07d3866f523cc561bf4a00fc5535827981b117dd7876f036b0c1aca42c947"},
-]
[package.dependencies]
botocore = ">=1.12.36,<2.0a.0"
@@ -2450,12 +1678,9 @@ crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"]
name = "safety"
version = "1.10.3"
description = "Checks installed dependencies for known vulnerabilities."
+category = "dev"
optional = false
python-versions = ">=3.5"
-files = [
- {file = "safety-1.10.3-py2.py3-none-any.whl", hash = "sha256:5f802ad5df5614f9622d8d71fedec2757099705c2356f862847c58c6dfe13e84"},
- {file = "safety-1.10.3.tar.gz", hash = "sha256:30e394d02a20ac49b7f65292d19d38fa927a8f9582cdfd3ad1adbbc66c641ad5"},
-]
[package.dependencies]
Click = ">=6.0"
@@ -2468,23 +1693,17 @@ setuptools = "*"
name = "schedule"
version = "1.1.0"
description = "Job scheduling for humans."
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "schedule-1.1.0-py2.py3-none-any.whl", hash = "sha256:617adce8b4bf38c360b781297d59918fbebfb2878f1671d189f4f4af5d0567a4"},
- {file = "schedule-1.1.0.tar.gz", hash = "sha256:e6ca13585e62c810e13a08682e0a6a8ad245372e376ba2b8679294f377dfc8e4"},
-]
[[package]]
name = "selenium"
version = "4.7.2"
description = ""
+category = "main"
optional = false
python-versions = "~=3.7"
-files = [
- {file = "selenium-4.7.2-py3-none-any.whl", hash = "sha256:06a1c7d9f313130b21c3218ddd8852070d0e7419afdd31f96160cd576555a5ce"},
- {file = "selenium-4.7.2.tar.gz", hash = "sha256:3aefa14a28a42e520550c1cd0f29cf1d566328186ea63aa9a3e01fb265b5894d"},
-]
[package.dependencies]
certifi = ">=2021.10.8"
@@ -2496,12 +1715,9 @@ urllib3 = {version = ">=1.26,<2.0", extras = ["socks"]}
name = "sentry-sdk"
version = "1.11.1"
description = "Python client for Sentry (https://sentry.io)"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "sentry-sdk-1.11.1.tar.gz", hash = "sha256:675f6279b6bb1fea09fd61751061f9a90dca3b5929ef631dd50dc8b3aeb245e9"},
- {file = "sentry_sdk-1.11.1-py2.py3-none-any.whl", hash = "sha256:8b4ff696c0bdcceb3f70bbb87a57ba84fd3168b1332d493fcd16c137f709578c"},
-]
[package.dependencies]
certifi = "*"
@@ -2532,12 +1748,9 @@ tornado = ["tornado (>=5)"]
name = "setuptools"
version = "65.6.3"
description = "Easily download, build, install, upgrade, and uninstall Python packages"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "setuptools-65.6.3-py3-none-any.whl", hash = "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54"},
- {file = "setuptools-65.6.3.tar.gz", hash = "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"},
-]
[package.extras]
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
@@ -2548,11 +1761,9 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (
name = "shopifyapi"
version = "11.0.0"
description = "Shopify API for Python"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "ShopifyAPI-11.0.0.tar.gz", hash = "sha256:864a4505151859200af210d3add1b9abe9284e59a6e8f97611a8f83e857869ac"},
-]
[package.dependencies]
pyactiveresource = ">=2.2.2"
@@ -2564,89 +1775,79 @@ six = "*"
name = "six"
version = "1.16.0"
description = "Python 2 and 3 compatibility utilities"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
-files = [
- {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
- {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
-]
+
+[[package]]
+name = "slippers"
+version = "0.6.2"
+description = "Build reusable components in Django without writing a single line of Python."
+category = "main"
+optional = false
+python-versions = ">=3.8.0"
+
+[package.dependencies]
+Django = ">=3.2"
+PyYAML = ">=5.4.0"
+typeguard = ">=2.13.3,<3.0.0"
+typing-extensions = ">=4.4.0"
[[package]]
name = "smmap"
version = "5.0.0"
description = "A pure Python implementation of a sliding window memory map manager"
+category = "dev"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"},
- {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"},
-]
[[package]]
name = "sniffio"
version = "1.3.0"
description = "Sniff out which async library your code is running under"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
- {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
-]
[[package]]
name = "snowballstemmer"
version = "2.2.0"
description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms."
+category = "dev"
optional = false
python-versions = "*"
-files = [
- {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"},
- {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"},
-]
[[package]]
name = "sortedcontainers"
version = "2.4.0"
description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"},
- {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"},
-]
[[package]]
name = "soupsieve"
version = "2.3.2.post1"
description = "A modern CSS selector implementation for Beautiful Soup."
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"},
- {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"},
-]
[[package]]
name = "sqlparse"
version = "0.4.3"
description = "A non-validating SQL parser."
+category = "main"
optional = false
python-versions = ">=3.5"
-files = [
- {file = "sqlparse-0.4.3-py3-none-any.whl", hash = "sha256:0323c0ec29cd52bceabc1b4d9d579e311f3e4961b98d174201d5622a23b85e34"},
- {file = "sqlparse-0.4.3.tar.gz", hash = "sha256:69ca804846bb114d2ec380e4360a8a340db83f0ccf3afceeb1404df028f57268"},
-]
[[package]]
name = "stevedore"
version = "4.1.1"
description = "Manage dynamic plugins for Python applications"
+category = "dev"
optional = false
python-versions = ">=3.8"
-files = [
- {file = "stevedore-4.1.1-py3-none-any.whl", hash = "sha256:aa6436565c069b2946fe4ebff07f5041e0c8bf18c7376dd29edf80cf7d524e4e"},
- {file = "stevedore-4.1.1.tar.gz", hash = "sha256:7f8aeb6e3f90f96832c301bff21a7eb5eefbe894c88c506483d355565d88cc1a"},
-]
[package.dependencies]
pbr = ">=2.0.0,<2.1.0 || >2.1.0"
@@ -2655,12 +1856,9 @@ pbr = ">=2.0.0,<2.1.0 || >2.1.0"
name = "stripe"
version = "2.76.0"
description = "Python bindings for the Stripe API"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-files = [
- {file = "stripe-2.76.0-py2.py3-none-any.whl", hash = "sha256:756bf6c1206f438d1fa23bb90cdf1233c9383478f854f2720a8a3e1eaf1f715b"},
- {file = "stripe-2.76.0.tar.gz", hash = "sha256:fd3fc6935c3b6189967191607b6f38ebe490005a590b4d0d43fbe3aba45deca8"},
-]
[package.dependencies]
requests = {version = ">=2.20", markers = "python_version >= \"3.0\""}
@@ -2669,12 +1867,9 @@ requests = {version = ">=2.20", markers = "python_version >= \"3.0\""}
name = "tablib"
version = "3.3.0"
description = "Format agnostic tabular data library (XLS, JSON, YAML, CSV)"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "tablib-3.3.0-py3-none-any.whl", hash = "sha256:f7f2e214a1a68577f2599927a8870495adac0f7f2673b1819130f2060e1914ab"},
- {file = "tablib-3.3.0.tar.gz", hash = "sha256:11e02a6f81d256e0666877d8397972d10302307a54c04fd7157e92faf740cb10"},
-]
[package.dependencies]
markuppy = {version = "*", optional = true, markers = "extra == \"html\""}
@@ -2698,12 +1893,9 @@ yaml = ["pyyaml"]
name = "telepath"
version = "0.3"
description = "A library for exchanging data between Python and JavaScript"
+category = "main"
optional = false
python-versions = ">=3.5"
-files = [
- {file = "telepath-0.3-py35-none-any.whl", hash = "sha256:fbdbc6bdd9a4a5c2b230caae242fa6ba4994c9dbcfd780df9be63f2966feb034"},
- {file = "telepath-0.3.tar.gz", hash = "sha256:54f4b57232461bc67c54f63f437cb6d26843c189bae6b7ba8e4457f98d78e515"},
-]
[package.extras]
docs = ["mkdocs (>=1.1,<1.2)", "mkdocs-material (>=6.2,<6.3)"]
@@ -2712,76 +1904,49 @@ docs = ["mkdocs (>=1.1,<1.2)", "mkdocs-material (>=6.2,<6.3)"]
name = "tokenize-rt"
version = "4.2.1"
description = "A wrapper around the stdlib `tokenize` which roundtrips."
+category = "dev"
optional = false
python-versions = ">=3.6.1"
-files = [
- {file = "tokenize_rt-4.2.1-py2.py3-none-any.whl", hash = "sha256:08a27fa032a81cf45e8858d0ac706004fcd523e8463415ddf1442be38e204ea8"},
- {file = "tokenize_rt-4.2.1.tar.gz", hash = "sha256:0d4f69026fed520f8a1e0103aa36c406ef4661417f20ca643f913e33531b3b94"},
-]
[[package]]
name = "toml"
version = "0.10.2"
description = "Python Library for Tom's Obvious, Minimal Language"
+category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
-files = [
- {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
- {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
-]
[[package]]
name = "tomli"
version = "2.0.1"
description = "A lil' TOML parser"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
- {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
-]
[[package]]
name = "tomlkit"
version = "0.11.6"
description = "Style preserving TOML library"
+category = "dev"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"},
- {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"},
-]
[[package]]
name = "tornado"
version = "6.2"
description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
+category = "main"
optional = false
python-versions = ">= 3.7"
-files = [
- {file = "tornado-6.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:20f638fd8cc85f3cbae3c732326e96addff0a15e22d80f049e00121651e82e72"},
- {file = "tornado-6.2-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:87dcafae3e884462f90c90ecc200defe5e580a7fbbb4365eda7c7c1eb809ebc9"},
- {file = "tornado-6.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba09ef14ca9893954244fd872798b4ccb2367c165946ce2dd7376aebdde8e3ac"},
- {file = "tornado-6.2-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8150f721c101abdef99073bf66d3903e292d851bee51910839831caba341a75"},
- {file = "tornado-6.2-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3a2f5999215a3a06a4fc218026cd84c61b8b2b40ac5296a6db1f1451ef04c1e"},
- {file = "tornado-6.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5f8c52d219d4995388119af7ccaa0bcec289535747620116a58d830e7c25d8a8"},
- {file = "tornado-6.2-cp37-abi3-musllinux_1_1_i686.whl", hash = "sha256:6fdfabffd8dfcb6cf887428849d30cf19a3ea34c2c248461e1f7d718ad30b66b"},
- {file = "tornado-6.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:1d54d13ab8414ed44de07efecb97d4ef7c39f7438cf5e976ccd356bebb1b5fca"},
- {file = "tornado-6.2-cp37-abi3-win32.whl", hash = "sha256:5c87076709343557ef8032934ce5f637dbb552efa7b21d08e89ae7619ed0eb23"},
- {file = "tornado-6.2-cp37-abi3-win_amd64.whl", hash = "sha256:e5f923aa6a47e133d1cf87d60700889d7eae68988704e20c75fb2d65677a8e4b"},
- {file = "tornado-6.2.tar.gz", hash = "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13"},
-]
[[package]]
name = "tqdm"
version = "4.64.1"
description = "Fast, Extensible Progress Meter"
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
-files = [
- {file = "tqdm-4.64.1-py2.py3-none-any.whl", hash = "sha256:6fee160d6ffcd1b1c68c65f14c829c22832bc401726335ce92c52d395944a6a1"},
- {file = "tqdm-4.64.1.tar.gz", hash = "sha256:5f4f682a004951c1b450bc753c710e9280c5746ce6ffedee253ddbcbf54cf1e4"},
-]
[package.dependencies]
colorama = {version = "*", markers = "platform_system == \"Windows\""}
@@ -2796,12 +1961,9 @@ telegram = ["requests"]
name = "trio"
version = "0.22.0"
description = "A friendly Python library for async concurrency and I/O"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "trio-0.22.0-py3-none-any.whl", hash = "sha256:f1dd0780a89bfc880c7c7994519cb53f62aacb2c25ff487001c0052bd721cdf0"},
- {file = "trio-0.22.0.tar.gz", hash = "sha256:ce68f1c5400a47b137c5a4de72c7c901bd4e7a24fbdebfe9b41de8c6c04eaacf"},
-]
[package.dependencies]
async-generator = ">=1.9"
@@ -2817,50 +1979,50 @@ sortedcontainers = "*"
name = "trio-websocket"
version = "0.9.2"
description = "WebSocket library for Trio"
+category = "main"
optional = false
python-versions = ">=3.5"
-files = [
- {file = "trio-websocket-0.9.2.tar.gz", hash = "sha256:a3d34de8fac26023eee701ed1e7bf4da9a8326b61a62934ec9e53b64970fd8fe"},
- {file = "trio_websocket-0.9.2-py3-none-any.whl", hash = "sha256:5b558f6e83cc20a37c3b61202476c5295d1addf57bd65543364e0337e37ed2bc"},
-]
[package.dependencies]
async-generator = ">=1.10"
trio = ">=0.11"
wsproto = ">=0.14"
+[[package]]
+name = "typeguard"
+version = "2.13.3"
+description = "Run-time type checker for Python"
+category = "main"
+optional = false
+python-versions = ">=3.5.3"
+
+[package.extras]
+doc = ["sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
+test = ["mypy", "pytest", "typing-extensions"]
+
[[package]]
name = "typing-extensions"
version = "4.4.0"
description = "Backported and Experimental Type Hints for Python 3.7+"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"},
- {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"},
-]
[[package]]
name = "tzdata"
version = "2022.7"
description = "Provider of IANA time zone data"
+category = "main"
optional = false
python-versions = ">=2"
-files = [
- {file = "tzdata-2022.7-py2.py3-none-any.whl", hash = "sha256:2b88858b0e3120792a3c0635c23daf36a7d7eeeca657c323da299d2094402a0d"},
- {file = "tzdata-2022.7.tar.gz", hash = "sha256:fe5f866eddd8b96e9fcba978f8e503c909b19ea7efda11e52e39494bad3a7bfa"},
-]
[[package]]
name = "urllib3"
version = "1.26.13"
description = "HTTP library with thread-safe connection pooling, file post, and more."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
-files = [
- {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"},
- {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"},
-]
[package.dependencies]
PySocks = {version = ">=1.5.6,<1.5.7 || >1.5.7,<2.0", optional = true, markers = "extra == \"socks\""}
@@ -2874,12 +2036,9 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
name = "virtualenv"
version = "20.17.1"
description = "Virtual Python Environment builder"
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "virtualenv-20.17.1-py3-none-any.whl", hash = "sha256:ce3b1684d6e1a20a3e5ed36795a97dfc6af29bc3970ca8dab93e11ac6094b3c4"},
- {file = "virtualenv-20.17.1.tar.gz", hash = "sha256:f8b927684efc6f1cc206c9db297a570ab9ad0e51c16fa9e45487d36d1905c058"},
-]
[package.dependencies]
distlib = ">=0.3.6,<1"
@@ -2892,60 +2051,50 @@ testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7
[[package]]
name = "wagtail"
-version = "3.0.3"
+version = "5.2.1"
description = "A Django content management system."
+category = "main"
optional = false
-python-versions = ">=3.7"
-files = [
- {file = "wagtail-3.0.3-py3-none-any.whl", hash = "sha256:111ed9a0a6ff26d5d881d52deb4bf52b627d79a53c43829611752dbb68a9192f"},
- {file = "wagtail-3.0.3.tar.gz", hash = "sha256:23b3e541401355ea183372582050ea52b049c956dd5b506197f957bb68423ab3"},
-]
+python-versions = ">=3.8"
[package.dependencies]
anyascii = ">=0.1.5"
-beautifulsoup4 = ">=4.8,<4.10"
-Django = ">=3.2,<4.1"
-django-filter = ">=2.2,<22"
-django-modelcluster = ">=6.0,<7.0"
+beautifulsoup4 = ">=4.8,<4.12"
+Django = ">=3.2,<4.3"
+django-filter = ">=23.3,<24"
+django-modelcluster = ">=6.1,<7.0"
django-permissionedforms = ">=0.1,<1.0"
-django-taggit = ">=2.0,<3.0"
+django-taggit = ">=2.0,<5.0"
django-treebeard = ">=4.5.1,<5.0"
djangorestframework = ">=3.11.1,<4.0"
draftjs-exporter = ">=2.1.5,<3.0"
html5lib = ">=0.999,<2"
l18n = ">=2018.5"
-Pillow = ">=4.0.0,<10.0.0"
+openpyxl = ">=3.0.10,<4.0"
+Pillow = ">=9.1.0,<11.0.0"
requests = ">=2.11.1,<3.0"
-tablib = {version = ">=0.14.0", extras = ["xls", "xlsx"]}
telepath = ">=0.1.1,<1"
-Willow = ">=1.4,<1.5"
-xlsxwriter = ">=1.2.8,<4.0"
+Willow = {version = ">=1.6.2,<1.7", extras = ["heif"]}
[package.extras]
-docs = ["Sphinx (>=1.5.2)", "myst-parser (==0.17.0)", "pyenchant (>=3.1.1,<4)", "sphinx-autobuild (>=0.6.0)", "sphinx-wagtail-theme (==5.1.1)", "sphinxcontrib-spelling (>=5.4.0,<6)"]
-testing = ["Jinja2 (>=3.0,<3.2)", "azure-mgmt-cdn (>=5.1,<6.0)", "azure-mgmt-frontdoor (>=0.3,<0.4)", "black (==22.3.0)", "boto3 (>=1.16,<1.17)", "coverage (>=3.7.0)", "curlylint (==0.13.1)", "django-pattern-library (>=0.7,<0.8)", "djhtml (==1.4.13)", "doc8 (==0.8.1)", "elasticsearch (>=5.0,<6.0)", "flake8 (>=3.6.0)", "flake8-assertive (==2.0.0)", "flake8-blind-except (==0.1.1)", "flake8-comprehensions (==3.8.0)", "flake8-print (==5.0.0)", "freezegun (>=0.3.8)", "isort (==5.6.4)", "openpyxl (>=2.6.4)", "polib (>=1.1,<2.0)", "python-dateutil (>=2.7)", "pytz (>=2014.7)"]
+docs = ["Sphinx (>=1.5.2)", "myst-parser (==0.18.1)", "pyenchant (>=3.1.1,<4)", "sphinx-autobuild (>=0.6.0)", "sphinx-copybutton (>=0.5,<1.0)", "sphinx-wagtail-theme (==6.1.1)", "sphinxcontrib-spelling (>=5.4.0,<6)"]
+testing = ["Jinja2 (>=3.0,<3.2)", "azure-mgmt-cdn (>=12.0,<13.0)", "azure-mgmt-frontdoor (>=1.0,<1.1)", "black (==22.3.0)", "boto3 (>=1.28,<2)", "coverage (>=3.7.0)", "curlylint (==0.13.1)", "django-pattern-library (>=0.7,<0.8)", "djhtml (==1.5.2)", "doc8 (==0.8.1)", "factory-boy (>=3.2)", "freezegun (>=0.3.8)", "polib (>=1.1,<2.0)", "python-dateutil (>=2.7)", "pytz (>=2014.7)", "ruff (==0.0.290)", "semgrep (==1.40.0)", "tblib (>=2.0,<3.0)"]
[[package]]
name = "wagtail-admin-list-controls"
version = "0.1.7"
description = "A UI toolkit to build custom filtering and other functionalities into wagtail's admin list views."
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "wagtail-admin-list-controls-0.1.7.tar.gz", hash = "sha256:e56a88036072321f9200d402de639260b8a878a87637aad90cefeeeba493105c"},
- {file = "wagtail_admin_list_controls-0.1.7-py3-none-any.whl", hash = "sha256:7182db306f101fc13a15ae4b8659d91af50bb033b12ebdd71f22e4f4aa221835"},
-]
[[package]]
name = "wagtail-autocomplete"
version = "0.9.0"
description = "An Autocomplete edit handler for Pages, Snippets, and more."
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "wagtail-autocomplete-0.9.0.tar.gz", hash = "sha256:b64828d35f370453c84bc4094174872822798e54414f5fb9fc8a43c2a6c3e727"},
- {file = "wagtail_autocomplete-0.9.0-py3-none-any.whl", hash = "sha256:d85789543308d344447656725b9aac8d1c4c6fb271221a3340008a3c9f2ab6fa"},
-]
[package.dependencies]
wagtail = ">=2.15"
@@ -2956,94 +2105,60 @@ test = ["beautifulsoup4 (>=4.8)", "html5lib (>=0.999999999)", "pytest (>=3.5)",
[[package]]
name = "wagtail-cache"
-version = "2.2.0"
+version = "2.3.0"
description = "A simple page cache for Wagtail based on the Django cache middleware."
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "wagtail-cache-2.2.0.tar.gz", hash = "sha256:e9e6a8391795d5faab877183c025451c82905ea94b7a0d5eb4aca29ea136499f"},
- {file = "wagtail_cache-2.2.0-py3-none-any.whl", hash = "sha256:a231bc3941eb3ce3e8c73b9aea5d9a54e2f580009a0c87bf86ac59a6545a9609"},
-]
[package.dependencies]
-wagtail = ">=3.0,<5.0"
+wagtail = ">=3.0,<6"
[[package]]
name = "wagtail-seo"
-version = "2.3.0"
+version = "2.4.1"
description = "Search engine and social media optimization for Wagtail."
+category = "main"
optional = false
-python-versions = ">=3.6"
-files = [
- {file = "wagtail-seo-2.3.0.tar.gz", hash = "sha256:cefd8c1b011d55a95dbe8b6c75a504fb441df089f594e2b06d92e3d5b95f3609"},
- {file = "wagtail_seo-2.3.0-py3-none-any.whl", hash = "sha256:052c1cd56f13ad04ff8dd37c3937085f8f79677241e30ef5900a06c596c283c6"},
-]
+python-versions = ">=3.8"
[package.dependencies]
-wagtail = ">=3.0,<5.0"
+wagtail = ">=3.0,<6.0"
[[package]]
name = "wagtail-transfer"
version = "0.8.5"
description = "Content transfer for Wagtail"
+category = "main"
optional = false
python-versions = ">=3.6"
-files = [
- {file = "wagtail-transfer-0.8.5.tar.gz", hash = "sha256:8e32806cfc175c5a9ac2573f0ad09b7a6c273002aaf1efb44c01519e385ac827"},
- {file = "wagtail_transfer-0.8.5-py3-none-any.whl", hash = "sha256:1ec0847adc385f226d292532077e32a019fe2ba5c0ddf7819cac9c66c8e85a77"},
-]
[package.extras]
docs = ["mkdocs (>=1.0,<1.1)", "mkdocs-material (>=4.6,<4.7)"]
-[[package]]
-name = "wagtailfontawesome"
-version = "1.2.1"
-description = "Add FontAwesome icons to StreamField."
-optional = false
-python-versions = "*"
-files = [
- {file = "wagtailfontawesome-1.2.1-py2.py3-none-any.whl", hash = "sha256:76b1c64c4f1042d468a83e4352f74b57bda4a4aa09cdfeeb8663dead5ed632be"},
- {file = "wagtailfontawesome-1.2.1.tar.gz", hash = "sha256:6c1bd2d6061880848de6374ceb75d38a8c9b0debb1d4aef8a2fdc9d565a8f417"},
-]
-
-[package.dependencies]
-Django = ">=1.7.1"
-wagtail = ">=1.4.0"
-
[[package]]
name = "wagtailmenus"
-version = "3.1.1"
+version = "3.1.9"
description = "An app to help you manage menus in your Wagtail projects more consistently."
+category = "main"
optional = false
-python-versions = ">=3.7"
-files = []
-develop = false
+python-versions = ">=3.8"
[package.dependencies]
django-cogwheels = "0.3"
[package.extras]
-development = ["beautifulsoup4 (>=4.8,<4.10)", "coverage (>=4.5)", "django-debug-toolbar", "django-extensions", "django-webtest (>=1.9,<1.10)", "ipdb", "wagtail (>=2.15)", "werkzeug"]
-docs = ["Sphinx (>=1.7.4)", "pyenchant (>=2.0)", "sphinx_rtd_theme (>=0.3)", "sphinxcontrib-spelling (>=1.4)"]
+development = ["beautifulsoup4 (>=4.8,<4.10)", "coverage (>=4.5)", "django-debug-toolbar", "django-extensions", "django-webtest (>=1.9,<1.10)", "ipdb", "wagtail (>=2.15)", "wagtail-modeladmin (>=1.0)", "werkzeug"]
+docs = ["Sphinx (>=1.7.4)", "pyenchant (>=2.0)", "sphinx-rtd-theme (>=0.3)", "sphinxcontrib-spelling (>=1.4)"]
testing = ["beautifulsoup4 (>=4.8,<4.10)", "coverage (>=4.5)", "django-webtest (>=1.9,<1.10)"]
-[package.source]
-type = "git"
-url = "https://github.com/commonknowledge/wagtailmenus"
-reference = "master"
-resolved_reference = "68d6d2179f7e87be45caef2f6844e97da0db2519"
-
[[package]]
name = "webdriver-manager"
version = "3.8.5"
description = "Library provides the way to automatically manage drivers for different browsers"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "webdriver_manager-3.8.5-py2.py3-none-any.whl", hash = "sha256:2d807ec270d2d990022b86efabd4096053e0a1e7a34c6174f9937320dfdc6826"},
- {file = "webdriver_manager-3.8.5.tar.gz", hash = "sha256:e671f3b738af52351341d6df6674c2f0b959db0fe978e9a7135cfa36d1ad9560"},
-]
[package.dependencies]
packaging = "*"
@@ -3055,110 +2170,43 @@ tqdm = "*"
name = "webencodings"
version = "0.5.1"
description = "Character encoding aliases for legacy web content"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
- {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
-]
[[package]]
name = "willow"
-version = "1.4.1"
+version = "1.6.2"
description = "A Python image library that sits on top of Pillow, Wand and OpenCV"
+category = "main"
optional = false
-python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
-files = [
- {file = "Willow-1.4.1-py2.py3-none-any.whl", hash = "sha256:fc4042696d090e75aef922fa1ed26d483c764f005b36cf523cf7c34e69d5dd7a"},
- {file = "Willow-1.4.1.tar.gz", hash = "sha256:0df8ff528531e00b48d40bf72ed81beac1dc82f2d42e5bbed4aff0218bef8c0d"},
-]
+python-versions = ">=3.8"
+
+[package.dependencies]
+defusedxml = ">=0.7,<1.0"
+filetype = ">=1.0.10,<1.1.0 || >1.1.0"
+pillow-heif = {version = ">=0.10.0,<1.0.0", optional = true, markers = "extra == \"heif\""}
[package.extras]
-testing = ["Pillow (>=6.0.0,<10.0.0)", "Wand (>=0.6,<1.0)", "mock (>=3.0,<4.0)"]
+docs = ["Sphinx (>=7.0)", "sphinx-wagtail-theme (==6.0.0)", "sphinx_copybutton (>=0.5)", "sphinxcontrib-spelling (>=8.0,<9.0)"]
+heif = ["pillow-heif (>=0.10.0,<1.0.0)"]
+testing = ["Pillow (>=9.1.0,<11.0.0)", "Wand (>=0.6,<1.0)", "black (==22.3.0)", "coverage[toml] (>=7.2.7,<8.0)", "mock (>=3.0,<4.0)", "pillow-heif (>=0.10.0,<1.0.0)", "ruff (==0.0.275)"]
[[package]]
name = "wrapt"
version = "1.14.1"
description = "Module for decorators, wrappers and monkey patching."
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
-files = [
- {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"},
- {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"},
- {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"},
- {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"},
- {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"},
- {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"},
- {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"},
- {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"},
- {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"},
- {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"},
- {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"},
- {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"},
- {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"},
- {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"},
- {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"},
- {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"},
- {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"},
- {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"},
- {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"},
- {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"},
- {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"},
- {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"},
- {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"},
- {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"},
- {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"},
- {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"},
- {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"},
- {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"},
- {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"},
- {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"},
- {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"},
- {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"},
- {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"},
- {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"},
- {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"},
- {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"},
- {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"},
- {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"},
- {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"},
- {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"},
- {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"},
- {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"},
- {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"},
- {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"},
- {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"},
- {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"},
- {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"},
- {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"},
- {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"},
- {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"},
- {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"},
- {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"},
- {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"},
- {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"},
- {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"},
- {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"},
- {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"},
- {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"},
- {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"},
- {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"},
- {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"},
- {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"},
- {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"},
- {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"},
-]
[[package]]
name = "wsproto"
version = "1.2.0"
description = "WebSockets state-machine based protocol implementation"
+category = "main"
optional = false
python-versions = ">=3.7.0"
-files = [
- {file = "wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736"},
- {file = "wsproto-1.2.0.tar.gz", hash = "sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065"},
-]
[package.dependencies]
h11 = ">=0.9.0,<1"
@@ -3167,56 +2215,1293 @@ h11 = ">=0.9.0,<1"
name = "xlrd"
version = "2.0.1"
description = "Library for developers to extract data from Microsoft Excel (tm) .xls spreadsheet files"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
-files = [
- {file = "xlrd-2.0.1-py2.py3-none-any.whl", hash = "sha256:6a33ee89877bd9abc1158129f6e94be74e2679636b8a205b43b85206c3f0bbdd"},
- {file = "xlrd-2.0.1.tar.gz", hash = "sha256:f72f148f54442c6b056bf931dbc34f986fd0c3b0b6b5a58d013c9aef274d0c88"},
-]
[package.extras]
build = ["twine", "wheel"]
docs = ["sphinx"]
test = ["pytest", "pytest-cov"]
-[[package]]
-name = "xlsxwriter"
-version = "3.0.3"
-description = "A Python module for creating Excel XLSX files."
-optional = false
-python-versions = ">=3.4"
-files = [
- {file = "XlsxWriter-3.0.3-py3-none-any.whl", hash = "sha256:df0aefe5137478d206847eccf9f114715e42aaea077e6a48d0e8a2152e983010"},
- {file = "XlsxWriter-3.0.3.tar.gz", hash = "sha256:e89f4a1d2fa2c9ea15cde77de95cd3fd8b0345d0efb3964623f395c8c4988b7f"},
-]
-
[[package]]
name = "xlwt"
version = "1.3.0"
description = "Library to create spreadsheet files compatible with MS Excel 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2.7, 3.3+"
+category = "main"
optional = false
python-versions = "*"
-files = [
- {file = "xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e"},
- {file = "xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88"},
-]
[[package]]
name = "zipp"
version = "3.11.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
+category = "main"
optional = false
python-versions = ">=3.7"
-files = [
- {file = "zipp-3.11.0-py3-none-any.whl", hash = "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa"},
- {file = "zipp-3.11.0.tar.gz", hash = "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766"},
-]
[package.extras]
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"]
testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
[metadata]
-lock-version = "2.0"
+lock-version = "1.1"
python-versions = "^3.9"
-content-hash = "91e4424585c2cc43c69a50b50409f9ffcd00fe39a8f86fd24be28a2499f00ec4"
+content-hash = "9955ab65a8a387fcae78ba5d51ab35b09b3dcc2dd88767cc23de57a2f3550378"
+
+[metadata.files]
+anyascii = [
+ {file = "anyascii-0.3.1-py3-none-any.whl", hash = "sha256:8707d3185017435933360462a65e2c70a4818490745804f38a5ca55e59eb56a0"},
+ {file = "anyascii-0.3.1.tar.gz", hash = "sha256:dedf57728206e286c91eed7c759505a5e45c8cd01367dd40c2f7248bb15c11f6"},
+]
+asgiref = [
+ {file = "asgiref-3.7.2-py3-none-any.whl", hash = "sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e"},
+ {file = "asgiref-3.7.2.tar.gz", hash = "sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed"},
+]
+astroid = [
+ {file = "astroid-2.12.13-py3-none-any.whl", hash = "sha256:10e0ad5f7b79c435179d0d0f0df69998c4eef4597534aae44910db060baeb907"},
+ {file = "astroid-2.12.13.tar.gz", hash = "sha256:1493fe8bd3dfd73dc35bd53c9d5b6e49ead98497c47b2307662556a5692d29d7"},
+]
+async-generator = [
+ {file = "async_generator-1.10-py3-none-any.whl", hash = "sha256:01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b"},
+ {file = "async_generator-1.10.tar.gz", hash = "sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144"},
+]
+atomicwrites = [
+ {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"},
+]
+attrs = [
+ {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"},
+ {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"},
+]
+autopep8 = [
+ {file = "autopep8-2.0.0-py2.py3-none-any.whl", hash = "sha256:ad924b42c2e27a1ac58e432166cc4588f5b80747de02d0d35b1ecbd3e7d57207"},
+ {file = "autopep8-2.0.0.tar.gz", hash = "sha256:8b1659c7f003e693199f52caffdc06585bb0716900bbc6a7442fd931d658c077"},
+]
+babel = [
+ {file = "Babel-2.11.0-py3-none-any.whl", hash = "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe"},
+ {file = "Babel-2.11.0.tar.gz", hash = "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6"},
+]
+backoff = [
+ {file = "backoff-1.11.1-py2.py3-none-any.whl", hash = "sha256:61928f8fa48d52e4faa81875eecf308eccfb1016b018bb6bd21e05b5d90a96c5"},
+ {file = "backoff-1.11.1.tar.gz", hash = "sha256:ccb962a2378418c667b3c979b504fdeb7d9e0d29c0579e3b13b86467177728cb"},
+]
+bandit = [
+ {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"},
+ {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"},
+]
+bcrypt = [
+ {file = "bcrypt-4.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f"},
+ {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0"},
+ {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410"},
+ {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344"},
+ {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a"},
+ {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3"},
+ {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2"},
+ {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535"},
+ {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e"},
+ {file = "bcrypt-4.0.1-cp36-abi3-win32.whl", hash = "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab"},
+ {file = "bcrypt-4.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9"},
+ {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c"},
+ {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b"},
+ {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d"},
+ {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d"},
+ {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215"},
+ {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c"},
+ {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda"},
+ {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665"},
+ {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71"},
+ {file = "bcrypt-4.0.1.tar.gz", hash = "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd"},
+]
+beautifulsoup4 = [
+ {file = "beautifulsoup4-4.9.3-py2-none-any.whl", hash = "sha256:4c98143716ef1cb40bf7f39a8e3eec8f8b009509e74904ba3a7b315431577e35"},
+ {file = "beautifulsoup4-4.9.3-py3-none-any.whl", hash = "sha256:fff47e031e34ec82bf17e00da8f592fe7de69aeea38be00523c04623c04fb666"},
+ {file = "beautifulsoup4-4.9.3.tar.gz", hash = "sha256:84729e322ad1d5b4d25f805bfa05b902dd96450f43842c4e99067d5e1369eb25"},
+]
+black = [
+ {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"},
+ {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"},
+ {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"},
+ {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"},
+ {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"},
+ {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"},
+ {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"},
+ {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"},
+ {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"},
+ {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"},
+ {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"},
+ {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"},
+]
+boto3 = [
+ {file = "boto3-1.26.29-py3-none-any.whl", hash = "sha256:2e5e80daae3873185b046d1fabc13676aea519e891faf4f27ca71d287bc26039"},
+ {file = "boto3-1.26.29.tar.gz", hash = "sha256:4fb4a0ce2679e5dc1719441192b45687654201d5de76224f2c376b689c9ed4aa"},
+]
+botocore = [
+ {file = "botocore-1.29.29-py3-none-any.whl", hash = "sha256:dca2daf108aae6c847d8ec99b7e918b46ae81713bf70b2199ab94627faf935a1"},
+ {file = "botocore-1.29.29.tar.gz", hash = "sha256:97a6d059e688ff9caa7c0a4e30cc58fa27be8bf3347578ce7c62fb808380fb55"},
+]
+certifi = [
+ {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"},
+ {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"},
+]
+cffi = [
+ {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"},
+ {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"},
+ {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"},
+ {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"},
+ {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"},
+ {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"},
+ {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"},
+ {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"},
+ {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"},
+ {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"},
+ {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"},
+ {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"},
+ {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"},
+ {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"},
+ {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"},
+ {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"},
+ {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"},
+ {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"},
+ {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"},
+ {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"},
+ {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"},
+ {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"},
+ {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"},
+ {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"},
+ {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"},
+ {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"},
+ {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"},
+ {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"},
+ {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"},
+ {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"},
+ {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"},
+ {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"},
+ {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"},
+ {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"},
+ {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"},
+ {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"},
+ {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"},
+ {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"},
+ {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"},
+ {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"},
+ {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"},
+ {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"},
+ {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"},
+ {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"},
+ {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"},
+ {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"},
+ {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"},
+ {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"},
+ {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"},
+ {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"},
+ {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"},
+ {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"},
+ {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"},
+ {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"},
+ {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"},
+ {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"},
+ {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"},
+ {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"},
+ {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"},
+ {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"},
+ {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"},
+ {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"},
+ {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"},
+ {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"},
+]
+cfgv = [
+ {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"},
+ {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"},
+]
+charset-normalizer = [
+ {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"},
+ {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"},
+]
+click = [
+ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
+ {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
+]
+colorama = [
+ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
+ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
+]
+commonmark = [
+ {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"},
+ {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"},
+]
+cryptography = [
+ {file = "cryptography-38.0.4-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:2fa36a7b2cc0998a3a4d5af26ccb6273f3df133d61da2ba13b3286261e7efb70"},
+ {file = "cryptography-38.0.4-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:1f13ddda26a04c06eb57119caf27a524ccae20533729f4b1e4a69b54e07035eb"},
+ {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:2ec2a8714dd005949d4019195d72abed84198d877112abb5a27740e217e0ea8d"},
+ {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50a1494ed0c3f5b4d07650a68cd6ca62efe8b596ce743a5c94403e6f11bf06c1"},
+ {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a10498349d4c8eab7357a8f9aa3463791292845b79597ad1b98a543686fb1ec8"},
+ {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:10652dd7282de17990b88679cb82f832752c4e8237f0c714be518044269415db"},
+ {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:bfe6472507986613dc6cc00b3d492b2f7564b02b3b3682d25ca7f40fa3fd321b"},
+ {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ce127dd0a6a0811c251a6cddd014d292728484e530d80e872ad9806cfb1c5b3c"},
+ {file = "cryptography-38.0.4-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:53049f3379ef05182864d13bb9686657659407148f901f3f1eee57a733fb4b00"},
+ {file = "cryptography-38.0.4-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:8a4b2bdb68a447fadebfd7d24855758fe2d6fecc7fed0b78d190b1af39a8e3b0"},
+ {file = "cryptography-38.0.4-cp36-abi3-win32.whl", hash = "sha256:1d7e632804a248103b60b16fb145e8df0bc60eed790ece0d12efe8cd3f3e7744"},
+ {file = "cryptography-38.0.4-cp36-abi3-win_amd64.whl", hash = "sha256:8e45653fb97eb2f20b8c96f9cd2b3a0654d742b47d638cf2897afbd97f80fa6d"},
+ {file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca57eb3ddaccd1112c18fc80abe41db443cc2e9dcb1917078e02dfa010a4f353"},
+ {file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:c9e0d79ee4c56d841bd4ac6e7697c8ff3c8d6da67379057f29e66acffcd1e9a7"},
+ {file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:0e70da4bdff7601b0ef48e6348339e490ebfb0cbe638e083c9c41fb49f00c8bd"},
+ {file = "cryptography-38.0.4-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:998cd19189d8a747b226d24c0207fdaa1e6658a1d3f2494541cb9dfbf7dcb6d2"},
+ {file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67461b5ebca2e4c2ab991733f8ab637a7265bb582f07c7c88914b5afb88cb95b"},
+ {file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:4eb85075437f0b1fd8cd66c688469a0c4119e0ba855e3fef86691971b887caf6"},
+ {file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3178d46f363d4549b9a76264f41c6948752183b3f587666aff0555ac50fd7876"},
+ {file = "cryptography-38.0.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6391e59ebe7c62d9902c24a4d8bcbc79a68e7c4ab65863536127c8a9cd94043b"},
+ {file = "cryptography-38.0.4-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:78e47e28ddc4ace41dd38c42e6feecfdadf9c3be2af389abbfeef1ff06822285"},
+ {file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fb481682873035600b5502f0015b664abc26466153fab5c6bc92c1ea69d478b"},
+ {file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:4367da5705922cf7070462e964f66e4ac24162e22ab0a2e9d31f1b270dd78083"},
+ {file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b4cad0cea995af760f82820ab4ca54e5471fc782f70a007f31531957f43e9dee"},
+ {file = "cryptography-38.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:80ca53981ceeb3241998443c4964a387771588c4e4a5d92735a493af868294f9"},
+ {file = "cryptography-38.0.4.tar.gz", hash = "sha256:175c1a818b87c9ac80bb7377f5520b7f31b3ef2a0004e2420319beadedb67290"},
+]
+cssbeautifier = [
+ {file = "cssbeautifier-1.14.7.tar.gz", hash = "sha256:be7f1ea7a7b009f0172c2c0d0bebb2d136346e786f7182185ea944affb52135a"},
+]
+darglint = [
+ {file = "darglint-1.8.1-py3-none-any.whl", hash = "sha256:5ae11c259c17b0701618a20c3da343a3eb98b3bc4b5a83d31cdd94f5ebdced8d"},
+ {file = "darglint-1.8.1.tar.gz", hash = "sha256:080d5106df149b199822e7ee7deb9c012b49891538f14a11be681044f0bb20da"},
+]
+defusedxml = [
+ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
+ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
+]
+deprecated = [
+ {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"},
+ {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"},
+]
+diff-match-patch = [
+ {file = "diff-match-patch-20200713.tar.gz", hash = "sha256:da6f5a01aa586df23dfc89f3827e1cafbb5420be9d87769eeb079ddfd9477a18"},
+ {file = "diff_match_patch-20200713-py3-none-any.whl", hash = "sha256:8bf9d9c4e059d917b5c6312bac0c137971a32815ddbda9c682b949f2986b4d34"},
+]
+dill = [
+ {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"},
+ {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"},
+]
+distlib = [
+ {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"},
+ {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"},
+]
+dj-database-url = [
+ {file = "dj-database-url-1.2.0.tar.gz", hash = "sha256:b23b15046cb38180e0c95207bcc90fe5e9dbde8eef16065907dd85cf4ca7036c"},
+ {file = "dj_database_url-1.2.0-py3-none-any.whl", hash = "sha256:5c2993b91801c0f78a8b19e642b497b90831124cbade0c265900d4c1037b4730"},
+]
+dj-stripe = [
+ {file = "dj_stripe-2.7.3-py3-none-any.whl", hash = "sha256:4709f1c3091fdd565d96152c86136e93e73c5188a2f4847445e79e93ad203429"},
+ {file = "dj_stripe-2.7.3.tar.gz", hash = "sha256:88b584ff2940b0b87ec337df1e7f4974d739a48cdfc81c3b25e4247c541c75ec"},
+]
+django = [
+ {file = "Django-4.2-py3-none-any.whl", hash = "sha256:ad33ed68db9398f5dfb33282704925bce044bef4261cd4fb59e4e7f9ae505a78"},
+ {file = "Django-4.2.tar.gz", hash = "sha256:c36e2ab12824e2ac36afa8b2515a70c53c7742f0d6eaefa7311ec379558db997"},
+]
+django-active-link = [
+ {file = "django-active-link-0.1.8.tar.gz", hash = "sha256:87aac58cc89913ff3b017b91cb24cda0dbb05945aa46c6a1428d0744b56a3e1f"},
+ {file = "django_active_link-0.1.8-py2.py3-none-any.whl", hash = "sha256:a6a94f92e9150d05be4491e10e5dfb3274c08dd88866081f5f90ea2d738db647"},
+]
+django-allauth = [
+ {file = "django-allauth-0.50.0.tar.gz", hash = "sha256:ee3a174e249771caeb1d037e64b2704dd3c56cfec44f2058fae2214b224d35e8"},
+]
+django-anymail = [
+ {file = "django-anymail-8.6.tar.gz", hash = "sha256:783342d49dd07d68778b81dd12a94c86e1d217463a68a85450a0513fabe31345"},
+ {file = "django_anymail-8.6-py3-none-any.whl", hash = "sha256:49d83d7c16316ca86a624097496881d59b7d71b16bf1c5211cffa5b19ef98d0c"},
+]
+django-bootstrap5 = [
+ {file = "django-bootstrap5-21.3.tar.gz", hash = "sha256:35086341881780a44b2e27255894f6029fc5ef75e5a0ec8ebd82f47a5184fa73"},
+ {file = "django_bootstrap5-21.3-py3-none-any.whl", hash = "sha256:c7a686420aa98692f15bd16e61a90dc6a3607e441a4dea37af840b83d4820cac"},
+]
+django-cogwheels = [
+ {file = "django-cogwheels-0.3.tar.gz", hash = "sha256:848a4d9f2c96c582a4a4f2e7c276dfd95ab3905748cae13bb7c4b365a6717e94"},
+ {file = "django_cogwheels-0.3-py3-none-any.whl", hash = "sha256:197bd05e7114403d7301214b3f8a371c4fb6039cf21c811f099438b167b5ed21"},
+]
+django-countries = [
+ {file = "django-countries-7.5.tar.gz", hash = "sha256:979676b1147ebbc10e8cdd67857ffffbcba8d7a92abf7ca70696ecd57d8f3d4f"},
+ {file = "django_countries-7.5-py3-none-any.whl", hash = "sha256:5097d9c16eb5f8a8c195f55e647a1cf1ce8a88fdeb27b104de089424013845a6"},
+]
+django-db-queue = [
+ {file = "django-db-queue-3.0.0.tar.gz", hash = "sha256:78433771b0cb57df99c63f9fa8becc2cd87933cb95323124a3c31fed65635a41"},
+ {file = "django_db_queue-3.0.0-py3-none-any.whl", hash = "sha256:7ffbffc844ce5816d8f1a2f7f92daa87280224e9e5568694b7fd2c24b2afb101"},
+]
+django-debug-toolbar = [
+ {file = "django_debug_toolbar-3.8.1-py3-none-any.whl", hash = "sha256:879f8a4672d41621c06a4d322dcffa630fc4df056cada6e417ed01db0e5e0478"},
+ {file = "django_debug_toolbar-3.8.1.tar.gz", hash = "sha256:24ef1a7d44d25e60d7951e378454c6509bf536dce7e7d9d36e7c387db499bc27"},
+]
+django-extensions = [
+ {file = "django-extensions-3.2.1.tar.gz", hash = "sha256:2a4f4d757be2563cd1ff7cfdf2e57468f5f931cc88b23cf82ca75717aae504a4"},
+ {file = "django_extensions-3.2.1-py3-none-any.whl", hash = "sha256:421464be390289513f86cb5e18eb43e5dc1de8b4c27ba9faa3b91261b0d67e09"},
+]
+django-filter = [
+ {file = "django-filter-23.4.tar.gz", hash = "sha256:bed070b38359dce7d2dbe057b165d59773057986356cb809ded983b36c77a976"},
+ {file = "django_filter-23.4-py3-none-any.whl", hash = "sha256:526954f18bd7d6423f232a9a7974f58fbc6863908b9fc160de075e01adcc2a5f"},
+]
+django-gravatar2 = [
+ {file = "django-gravatar2-1.4.4.tar.gz", hash = "sha256:c813280967511ced93eea0359f60e5369c35b3311efe565c3e5d4ab35c10c9ee"},
+ {file = "django_gravatar2-1.4.4-py2.py3-none-any.whl", hash = "sha256:545a6c2c5c624c7635dec29c7bc0be1a2cb89c9b8821af8616ae9838827cc35b"},
+]
+django-import-export = [
+ {file = "django-import-export-2.9.0.tar.gz", hash = "sha256:02ce3a8e191992fa7aa1d660877ac6764fa9e32a5ba6394293f2fc761a5bdd19"},
+ {file = "django_import_export-2.9.0-py3-none-any.whl", hash = "sha256:126d32a4410c42b6e1bf060355bf45968f6fe427c3b7ed04c96873bd45d7549a"},
+]
+django-livereload-server = [
+ {file = "django-livereload-server-0.4.tar.gz", hash = "sha256:60ed030085ca53671d25704b10ec7aa3cc94a16da437b727a8dcce42471b4c65"},
+ {file = "django_livereload_server-0.4-py2.py3-none-any.whl", hash = "sha256:136c231e7ad3ba7a4db65426632dfa9b964ac04e8fa5f3808166447f016a4a91"},
+]
+django-mathfilters = [
+ {file = "django-mathfilters-1.0.0.tar.gz", hash = "sha256:c9b892ef6dfc893683e75cfd0279c187a601ca68f4684c38f9da44657fb64b07"},
+ {file = "django_mathfilters-1.0.0-py3-none-any.whl", hash = "sha256:64200a21bb249fbf27be601d4bbb788779e09c6e063170c097cd82c4d18ebb83"},
+]
+django-mjml = [
+ {file = "django-mjml-1.1.tar.gz", hash = "sha256:1a057d790227ea30fe4088eebfcfd5993e4e92840021034a1415d5b5c7997841"},
+ {file = "django_mjml-1.1-py3-none-any.whl", hash = "sha256:30a57d83c2257a998530032bb5f8fe2c1ca582ec021f884fed2798ec7ab993a9"},
+]
+django-modelcluster = [
+ {file = "django-modelcluster-6.1.tar.gz", hash = "sha256:3b1791638046c73ae7415327cf54bfa0adad9d89d342a5b86d0ec29a2504e067"},
+ {file = "django_modelcluster-6.1-py2.py3-none-any.whl", hash = "sha256:8ce72635db4b90b34993afda5021ed8676ef94f1d4c607466d0f8d3f676c5b64"},
+]
+django-money = [
+ {file = "django-money-3.4.0.tar.gz", hash = "sha256:d2719b0ed8f7f54d6310018b9906bc13ac05b397de576c763d9b0722097a4e04"},
+ {file = "django_money-3.4.0-py3-none-any.whl", hash = "sha256:09e6008a224a78911574ff82ffa3445d1d5fa3cd7a74955469b2f11ad175651a"},
+]
+django-oauth-toolkit = [
+ {file = "django-oauth-toolkit-2.2.0.tar.gz", hash = "sha256:46890decb24a34e2a5382debeaf7752e50d90b7a11716cf2a9fd067097ec0963"},
+ {file = "django_oauth_toolkit-2.2.0-py3-none-any.whl", hash = "sha256:abd85c74af525a62365ec2049113e73a2ff8b46ef906e7104a7ba968ef02a11d"},
+]
+django-permissionedforms = [
+ {file = "django-permissionedforms-0.1.tar.gz", hash = "sha256:4340bb20c4477fffb13b4cc5cccf9f1b1010b64f79956c291c72d2ad2ed243f8"},
+ {file = "django_permissionedforms-0.1-py2.py3-none-any.whl", hash = "sha256:d341a961a27cc77fde8cc42141c6ab55cc1f0cb886963cc2d6967b9674fa47d6"},
+]
+django-redirect-to-non-www = [
+ {file = "django-redirect-to-non-www-0.1.1.tar.gz", hash = "sha256:a8c3836d16ca21be8bd71a8d0e0326db2651b4f29a0fa19348aafa2d855d8bec"},
+]
+django-shopify-webhook = []
+django-silk = [
+ {file = "django-silk-4.4.1.tar.gz", hash = "sha256:5d4d3f1d4e3454fb073be8928293bc8af33c61cb32987783c8f93243ebf9705e"},
+ {file = "django_silk-4.4.1-py3-none-any.whl", hash = "sha256:72f20020177e929ca5733dfebf226b4ce8559c5a7bdb1517daf9aaf7916b188a"},
+]
+django-storages = [
+ {file = "django-storages-1.13.1.tar.gz", hash = "sha256:b3d98ecc09f1b1627c2b2cf430964322ce4e08617dbf9b4236c16a32875a1e0b"},
+ {file = "django_storages-1.13.1-py3-none-any.whl", hash = "sha256:3540b45618b04be2c867c0982e8d2bd8e34f84dae922267fcebe4691fb93daf0"},
+]
+django-taggit = [
+ {file = "django-taggit-2.1.0.tar.gz", hash = "sha256:a9f41e4ad58efe4b28d86f274728ee87eb98eeae90c9eb4b4efad39e5068184e"},
+ {file = "django_taggit-2.1.0-py3-none-any.whl", hash = "sha256:61547a23fc99967c9304107414a09e662b459f4163dbbae32e60b8ba40c34d05"},
+]
+django-treebeard = [
+ {file = "django-treebeard-4.5.1.tar.gz", hash = "sha256:80150017725239702054e5fa64dc66e383dc13ac262c8d47ee5a82cb005969da"},
+ {file = "django_treebeard-4.5.1-py3-none-any.whl", hash = "sha256:7c2b1cdb1e9b46d595825186064a1228bc4d00dbbc186db5b0b9412357fba91c"},
+]
+django-vite = [
+ {file = "django-vite-3.0.0.tar.gz", hash = "sha256:a2326f14d7aeba29e2db5ac4bcf27b0437810590d25f1b99a7fd20c5d1d312a2"},
+ {file = "django_vite-3.0.0-py3-none-any.whl", hash = "sha256:01407f806590872735f4ed87c79684e063942dba51838fc13f9056ebff10940c"},
+]
+djangorestframework = [
+ {file = "djangorestframework-3.14.0-py3-none-any.whl", hash = "sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08"},
+ {file = "djangorestframework-3.14.0.tar.gz", hash = "sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8"},
+]
+djangorestframework-camel-case = [
+ {file = "djangorestframework-camel-case-1.3.0.tar.gz", hash = "sha256:df591362ffa448c8f0a354c56ae8a53fb7abbb15e222951d0c6f5f781633907e"},
+]
+djangorestframework-dataclasses = [
+ {file = "djangorestframework-dataclasses-1.2.0.tar.gz", hash = "sha256:4fa8d93a19a3e256487674e9c654b45992bc76de155bd097eced6fe4af4100a2"},
+ {file = "djangorestframework_dataclasses-1.2.0-py3-none-any.whl", hash = "sha256:e4f54a2a21b6dfdb07ba657f91b5a97a41d03c6760203e8a6c3749276d3f129c"},
+]
+djlint = [
+ {file = "djlint-1.19.7-py3-none-any.whl", hash = "sha256:517b1a2dfb943854abaf8b1ad2117d5c2e699d5916cd2621e24f8669eb564af2"},
+ {file = "djlint-1.19.7.tar.gz", hash = "sha256:7339b0e2b228655000e6bc5e85adb146e1cdad11a1a29c52c3f1e68707d02d86"},
+]
+dparse = [
+ {file = "dparse-0.6.2-py3-none-any.whl", hash = "sha256:8097076f1dd26c377f30d4745e6ec18fef42f3bf493933b842ac5bafad8c345f"},
+ {file = "dparse-0.6.2.tar.gz", hash = "sha256:d45255bda21f998bc7ddf2afd5e62505ba6134756ba2d42a84c56b0826614dfe"},
+]
+draftjs-exporter = [
+ {file = "draftjs_exporter-2.1.7-py3-none-any.whl", hash = "sha256:d415a9964690a2cddb66a31ef32dd46c277e9b80434b94e39e3043188ed83e33"},
+ {file = "draftjs_exporter-2.1.7.tar.gz", hash = "sha256:5839cbc29d7bce2fb99837a404ca40c3a07313f2a20e2700de7ad6aa9a9a18fb"},
+]
+editorconfig = [
+ {file = "EditorConfig-0.12.3-py3-none-any.whl", hash = "sha256:6b0851425aa875b08b16789ee0eeadbd4ab59666e9ebe728e526314c4a2e52c1"},
+ {file = "EditorConfig-0.12.3.tar.gz", hash = "sha256:57f8ce78afcba15c8b18d46b5170848c88d56fd38f05c2ec60dbbfcb8996e89e"},
+]
+et-xmlfile = [
+ {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"},
+ {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"},
+]
+exceptiongroup = [
+ {file = "exceptiongroup-1.0.4-py3-none-any.whl", hash = "sha256:542adf9dea4055530d6e1279602fa5cb11dab2395fa650b8674eaec35fc4a828"},
+ {file = "exceptiongroup-1.0.4.tar.gz", hash = "sha256:bd14967b79cd9bdb54d97323216f8fdf533e278df937aa2a90089e7d6e06e5ec"},
+]
+filelock = [
+ {file = "filelock-3.8.2-py3-none-any.whl", hash = "sha256:8df285554452285f79c035efb0c861eb33a4bcfa5b7a137016e32e6a90f9792c"},
+ {file = "filelock-3.8.2.tar.gz", hash = "sha256:7565f628ea56bfcd8e54e42bdc55da899c85c1abfe1b5bcfd147e9188cebb3b2"},
+]
+filetype = [
+ {file = "filetype-1.2.0-py2.py3-none-any.whl", hash = "sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25"},
+ {file = "filetype-1.2.0.tar.gz", hash = "sha256:66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb"},
+]
+gitdb = [
+ {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"},
+ {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"},
+]
+gitpython = [
+ {file = "GitPython-3.1.29-py3-none-any.whl", hash = "sha256:41eea0deec2deea139b459ac03656f0dd28fc4a3387240ec1d3c259a2c47850f"},
+ {file = "GitPython-3.1.29.tar.gz", hash = "sha256:cc36bfc4a3f913e66805a28e84703e419d9c264c1077e537b54f0e1af85dbefd"},
+]
+gprof2dot = [
+ {file = "gprof2dot-2022.7.29-py2.py3-none-any.whl", hash = "sha256:f165b3851d3c52ee4915eb1bd6cca571e5759823c2cd0f71a79bda93c2dc85d6"},
+ {file = "gprof2dot-2022.7.29.tar.gz", hash = "sha256:45b4d298bd36608fccf9511c3fd88a773f7a1abc04d6cd39445b11ba43133ec5"},
+]
+groundwork-django = [
+ {file = "groundwork_django-0.2.0-py3-none-any.whl", hash = "sha256:611a24395666d233df3ae874f4b024b0089f4def2cdaf60a23273cf4473fd778"},
+ {file = "groundwork_django-0.2.0.tar.gz", hash = "sha256:629fee311d4de6b8d540d18e8e2f53e628d4ae599cf626059270d18b039d4f83"},
+]
+gunicorn = [
+ {file = "gunicorn-20.1.0-py3-none-any.whl", hash = "sha256:9dcc4547dbb1cb284accfb15ab5667a0e5d1881cc443e0677b4882a4067a807e"},
+ {file = "gunicorn-20.1.0.tar.gz", hash = "sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8"},
+]
+h11 = [
+ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
+ {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
+]
+html-tag-names = [
+ {file = "html-tag-names-0.1.2.tar.gz", hash = "sha256:04924aca48770f36b5a41c27e4d917062507be05118acb0ba869c97389084297"},
+ {file = "html_tag_names-0.1.2-py3-none-any.whl", hash = "sha256:eeb69ef21078486b615241f0393a72b41352c5219ee648e7c61f5632d26f0420"},
+]
+html-void-elements = [
+ {file = "html-void-elements-0.1.0.tar.gz", hash = "sha256:931b88f84cd606fee0b582c28fcd00e41d7149421fb673e1e1abd2f0c4f231f0"},
+ {file = "html_void_elements-0.1.0-py3-none-any.whl", hash = "sha256:784cf39db03cdeb017320d9301009f8f3480f9d7b254d0974272e80e0cb5e0d2"},
+]
+html5lib = [
+ {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"},
+ {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"},
+]
+humanize = [
+ {file = "humanize-4.4.0-py3-none-any.whl", hash = "sha256:8830ebf2d65d0395c1bd4c79189ad71e023f277c2c7ae00f263124432e6f2ffa"},
+ {file = "humanize-4.4.0.tar.gz", hash = "sha256:efb2584565cc86b7ea87a977a15066de34cdedaf341b11c851cfcfd2b964779c"},
+]
+identify = [
+ {file = "identify-2.5.9-py2.py3-none-any.whl", hash = "sha256:a390fb696e164dbddb047a0db26e57972ae52fbd037ae68797e5ae2f4492485d"},
+ {file = "identify-2.5.9.tar.gz", hash = "sha256:906036344ca769539610436e40a684e170c3648b552194980bb7b617a8daeb9f"},
+]
+idna = [
+ {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
+ {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
+]
+importlib-metadata = [
+ {file = "importlib_metadata-5.1.0-py3-none-any.whl", hash = "sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313"},
+ {file = "importlib_metadata-5.1.0.tar.gz", hash = "sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b"},
+]
+iniconfig = [
+ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
+ {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
+]
+isort = [
+ {file = "isort-5.11.2-py3-none-any.whl", hash = "sha256:e486966fba83f25b8045f8dd7455b0a0d1e4de481e1d7ce4669902d9fb85e622"},
+ {file = "isort-5.11.2.tar.gz", hash = "sha256:dd8bbc5c0990f2a095d754e50360915f73b4c26fc82733eb5bfc6b48396af4d2"},
+]
+jinja2 = [
+ {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"},
+ {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"},
+]
+jmespath = [
+ {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"},
+ {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"},
+]
+jsbeautifier = [
+ {file = "jsbeautifier-1.14.7.tar.gz", hash = "sha256:77993254db1ff6f84eb6e1d75e3b6b72cba2ef20813a585b2d81e8e5e3c713c6"},
+]
+jsonfield = [
+ {file = "jsonfield-3.1.0-py3-none-any.whl", hash = "sha256:df857811587f252b97bafba42e02805e70a398a7a47870bc6358a0308dd689ed"},
+ {file = "jsonfield-3.1.0.tar.gz", hash = "sha256:7e4e84597de21eeaeeaaa7cc5da08c61c48a9b64d0c446b2d71255d01812887a"},
+]
+jwcrypto = [
+ {file = "jwcrypto-1.4.2.tar.gz", hash = "sha256:80a35e9ed1b3b2c43ce03d92c5d48e6d0b6647e2aa2618e4963448923d78a37b"},
+]
+l18n = [
+ {file = "l18n-2021.3-py3-none-any.whl", hash = "sha256:78495d1df95b6f7dcc694d1ba8994df709c463a1cbac1bf016e1b9a5ce7280b9"},
+ {file = "l18n-2021.3.tar.gz", hash = "sha256:1956e890d673d17135cc20913253c154f6bc1c00266c22b7d503cc1a5a42d848"},
+]
+lazy-object-proxy = [
+ {file = "lazy-object-proxy-1.8.0.tar.gz", hash = "sha256:c219a00245af0f6fa4e95901ed28044544f50152840c5b6a3e7b2568db34d156"},
+ {file = "lazy_object_proxy-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4fd031589121ad46e293629b39604031d354043bb5cdf83da4e93c2d7f3389fe"},
+ {file = "lazy_object_proxy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:b70d6e7a332eb0217e7872a73926ad4fdc14f846e85ad6749ad111084e76df25"},
+ {file = "lazy_object_proxy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:eb329f8d8145379bf5dbe722182410fe8863d186e51bf034d2075eb8d85ee25b"},
+ {file = "lazy_object_proxy-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4e2d9f764f1befd8bdc97673261b8bb888764dfdbd7a4d8f55e4fbcabb8c3fb7"},
+ {file = "lazy_object_proxy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:e20bfa6db17a39c706d24f82df8352488d2943a3b7ce7d4c22579cb89ca8896e"},
+ {file = "lazy_object_proxy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:14010b49a2f56ec4943b6cf925f597b534ee2fe1f0738c84b3bce0c1a11ff10d"},
+ {file = "lazy_object_proxy-1.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6850e4aeca6d0df35bb06e05c8b934ff7c533734eb51d0ceb2d63696f1e6030c"},
+ {file = "lazy_object_proxy-1.8.0-cp37-cp37m-win32.whl", hash = "sha256:5b51d6f3bfeb289dfd4e95de2ecd464cd51982fe6f00e2be1d0bf94864d58acd"},
+ {file = "lazy_object_proxy-1.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6f593f26c470a379cf7f5bc6db6b5f1722353e7bf937b8d0d0b3fba911998858"},
+ {file = "lazy_object_proxy-1.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c1c7c0433154bb7c54185714c6929acc0ba04ee1b167314a779b9025517eada"},
+ {file = "lazy_object_proxy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:d176f392dbbdaacccf15919c77f526edf11a34aece58b55ab58539807b85436f"},
+ {file = "lazy_object_proxy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:afcaa24e48bb23b3be31e329deb3f1858f1f1df86aea3d70cb5c8578bfe5261c"},
+ {file = "lazy_object_proxy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:71d9ae8a82203511a6f60ca5a1b9f8ad201cac0fc75038b2dc5fa519589c9288"},
+ {file = "lazy_object_proxy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:8f6ce2118a90efa7f62dd38c7dbfffd42f468b180287b748626293bf12ed468f"},
+ {file = "lazy_object_proxy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:eac3a9a5ef13b332c059772fd40b4b1c3d45a3a2b05e33a361dee48e54a4dad0"},
+ {file = "lazy_object_proxy-1.8.0-pp37-pypy37_pp73-any.whl", hash = "sha256:ae032743794fba4d171b5b67310d69176287b5bf82a21f588282406a79498891"},
+ {file = "lazy_object_proxy-1.8.0-pp38-pypy38_pp73-any.whl", hash = "sha256:7e1561626c49cb394268edd00501b289053a652ed762c58e1081224c8d881cec"},
+ {file = "lazy_object_proxy-1.8.0-pp39-pypy39_pp73-any.whl", hash = "sha256:ce58b2b3734c73e68f0e30e4e725264d4d6be95818ec0a0be4bb6bf9a7e79aa8"},
+]
+mailchimp-marketing = [
+ {file = "mailchimp_marketing-3.0.80-py3-none-any.whl", hash = "sha256:a5bcb3ebd3be60908c65af765f8195724e6fd2d61ecf6da667a794c5bc7b84d3"},
+]
+markuppy = [
+ {file = "MarkupPy-1.14.tar.gz", hash = "sha256:1adee2c0a542af378fe84548ff6f6b0168f3cb7f426b46961038a2bcfaad0d5f"},
+]
+markupsafe = [
+ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"},
+ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"},
+ {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"},
+ {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"},
+ {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"},
+ {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"},
+ {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"},
+ {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"},
+ {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"},
+ {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"},
+ {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"},
+ {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"},
+ {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"},
+ {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"},
+ {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"},
+ {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"},
+ {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"},
+ {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"},
+ {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"},
+ {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"},
+ {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"},
+ {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"},
+ {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"},
+ {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"},
+ {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"},
+ {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"},
+ {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"},
+ {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"},
+ {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"},
+ {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"},
+ {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"},
+ {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"},
+ {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"},
+ {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"},
+ {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"},
+ {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"},
+ {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"},
+ {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"},
+ {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"},
+ {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"},
+]
+mccabe = [
+ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
+ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
+]
+monotonic = [
+ {file = "monotonic-1.6-py2.py3-none-any.whl", hash = "sha256:68687e19a14f11f26d140dd5c86f3dba4bf5df58003000ed467e0e2a69bca96c"},
+ {file = "monotonic-1.6.tar.gz", hash = "sha256:3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7"},
+]
+mypy-extensions = [
+ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
+ {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
+]
+nodeenv = [
+ {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"},
+ {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"},
+]
+oauthlib = [
+ {file = "oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca"},
+ {file = "oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918"},
+]
+odfpy = [
+ {file = "odfpy-1.4.1.tar.gz", hash = "sha256:db766a6e59c5103212f3cc92ec8dd50a0f3a02790233ed0b52148b70d3c438ec"},
+]
+openpyxl = [
+ {file = "openpyxl-3.0.10-py2.py3-none-any.whl", hash = "sha256:0ab6d25d01799f97a9464630abacbb34aafecdcaa0ef3cba6d6b3499867d0355"},
+ {file = "openpyxl-3.0.10.tar.gz", hash = "sha256:e47805627aebcf860edb4edf7987b1309c1b3632f3750538ed962bbcc3bd7449"},
+]
+orjson = [
+ {file = "orjson-3.9.2-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7323e4ca8322b1ecb87562f1ec2491831c086d9faa9a6c6503f489dadbed37d7"},
+ {file = "orjson-3.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1272688ea1865f711b01ba479dea2d53e037ea00892fd04196b5875f7021d9d3"},
+ {file = "orjson-3.9.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b9a26f1d1427a9101a1e8910f2e2df1f44d3d18ad5480ba031b15d5c1cb282e"},
+ {file = "orjson-3.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6a5ca55b0d8f25f18b471e34abaee4b175924b6cd62f59992945b25963443141"},
+ {file = "orjson-3.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:877872db2c0f41fbe21f852ff642ca842a43bc34895b70f71c9d575df31fffb4"},
+ {file = "orjson-3.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a39c2529d75373b7167bf84c814ef9b8f3737a339c225ed6c0df40736df8748"},
+ {file = "orjson-3.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:84ebd6fdf138eb0eb4280045442331ee71c0aab5e16397ba6645f32f911bfb37"},
+ {file = "orjson-3.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a60a1cfcfe310547a1946506dd4f1ed0a7d5bd5b02c8697d9d5dcd8d2e9245e"},
+ {file = "orjson-3.9.2-cp310-none-win32.whl", hash = "sha256:2ae61f5d544030a6379dbc23405df66fea0777c48a0216d2d83d3e08b69eb676"},
+ {file = "orjson-3.9.2-cp310-none-win_amd64.whl", hash = "sha256:c290c4f81e8fd0c1683638802c11610b2f722b540f8e5e858b6914b495cf90c8"},
+ {file = "orjson-3.9.2-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:02ef014f9a605e84b675060785e37ec9c0d2347a04f1307a9d6840ab8ecd6f55"},
+ {file = "orjson-3.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:992af54265ada1c1579500d6594ed73fe333e726de70d64919cf37f93defdd06"},
+ {file = "orjson-3.9.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a40958f7af7c6d992ee67b2da4098dca8b770fc3b4b3834d540477788bfa76d3"},
+ {file = "orjson-3.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93864dec3e3dd058a2dbe488d11ac0345214a6a12697f53a63e34de7d28d4257"},
+ {file = "orjson-3.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16fdf5a82df80c544c3c91516ab3882cd1ac4f1f84eefeafa642e05cef5f6699"},
+ {file = "orjson-3.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:275b5a18fd9ed60b2720543d3ddac170051c43d680e47d04ff5203d2c6d8ebf1"},
+ {file = "orjson-3.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b9aea6dcb99fcbc9f6d1dd84fca92322fda261da7fb014514bb4689c7c2097a8"},
+ {file = "orjson-3.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7d74ae0e101d17c22ef67b741ba356ab896fc0fa64b301c2bf2bb0a4d874b190"},
+ {file = "orjson-3.9.2-cp311-none-win32.whl", hash = "sha256:a9a7d618f99b2d67365f2b3a588686195cb6e16666cd5471da603a01315c17cc"},
+ {file = "orjson-3.9.2-cp311-none-win_amd64.whl", hash = "sha256:6320b28e7bdb58c3a3a5efffe04b9edad3318d82409e84670a9b24e8035a249d"},
+ {file = "orjson-3.9.2-cp37-cp37m-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:368e9cc91ecb7ac21f2aa475e1901204110cf3e714e98649c2502227d248f947"},
+ {file = "orjson-3.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58e9e70f0dcd6a802c35887f306b555ff7a214840aad7de24901fc8bd9cf5dde"},
+ {file = "orjson-3.9.2-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00c983896c2e01c94c0ef72fd7373b2aa06d0c0eed0342c4884559f812a6835b"},
+ {file = "orjson-3.9.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ee743e8890b16c87a2f89733f983370672272b61ee77429c0a5899b2c98c1a7"},
+ {file = "orjson-3.9.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7b065942d362aad4818ff599d2f104c35a565c2cbcbab8c09ec49edba91da75"},
+ {file = "orjson-3.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e46e9c5b404bb9e41d5555762fd410d5466b7eb1ec170ad1b1609cbebe71df21"},
+ {file = "orjson-3.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8170157288714678ffd64f5de33039e1164a73fd8b6be40a8a273f80093f5c4f"},
+ {file = "orjson-3.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e3e2f087161947dafe8319ea2cfcb9cea4bb9d2172ecc60ac3c9738f72ef2909"},
+ {file = "orjson-3.9.2-cp37-none-win32.whl", hash = "sha256:373b7b2ad11975d143556fdbd2c27e1150b535d2c07e0b48dc434211ce557fe6"},
+ {file = "orjson-3.9.2-cp37-none-win_amd64.whl", hash = "sha256:d7de3dbbe74109ae598692113cec327fd30c5a30ebca819b21dfa4052f7b08ef"},
+ {file = "orjson-3.9.2-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8cd4385c59bbc1433cad4a80aca65d2d9039646a9c57f8084897549b55913b17"},
+ {file = "orjson-3.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a74036aab1a80c361039290cdbc51aa7adc7ea13f56e5ef94e9be536abd227bd"},
+ {file = "orjson-3.9.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1aaa46d7d4ae55335f635eadc9be0bd9bcf742e6757209fc6dc697e390010adc"},
+ {file = "orjson-3.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e52c67ed6bb368083aa2078ea3ccbd9721920b93d4b06c43eb4e20c4c860046"},
+ {file = "orjson-3.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a6cdfcf9c7dd4026b2b01fdff56986251dc0cc1e980c690c79eec3ae07b36e7"},
+ {file = "orjson-3.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1882a70bb69595b9ec5aac0040a819e94d2833fe54901e2b32f5e734bc259a8b"},
+ {file = "orjson-3.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fc05e060d452145ab3c0b5420769e7356050ea311fc03cb9d79c481982917cca"},
+ {file = "orjson-3.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f8bc2c40d9bb26efefb10949d261a47ca196772c308babc538dd9f4b73e8d386"},
+ {file = "orjson-3.9.2-cp38-none-win32.whl", hash = "sha256:302d80198d8d5b658065627da3a356cbe5efa082b89b303f162f030c622e0a17"},
+ {file = "orjson-3.9.2-cp38-none-win_amd64.whl", hash = "sha256:3164fc20a585ec30a9aff33ad5de3b20ce85702b2b2a456852c413e3f0d7ab09"},
+ {file = "orjson-3.9.2-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7a6ccadf788531595ed4728aa746bc271955448d2460ff0ef8e21eb3f2a281ba"},
+ {file = "orjson-3.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3245d230370f571c945f69aab823c279a868dc877352817e22e551de155cb06c"},
+ {file = "orjson-3.9.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:205925b179550a4ee39b8418dd4c94ad6b777d165d7d22614771c771d44f57bd"},
+ {file = "orjson-3.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0325fe2d69512187761f7368c8cda1959bcb75fc56b8e7a884e9569112320e57"},
+ {file = "orjson-3.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:806704cd58708acc66a064a9a58e3be25cf1c3f9f159e8757bd3f515bfabdfa1"},
+ {file = "orjson-3.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03fb36f187a0c19ff38f6289418863df8b9b7880cdbe279e920bef3a09d8dab1"},
+ {file = "orjson-3.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:20925d07a97c49c6305bff1635318d9fc1804aa4ccacb5fb0deb8a910e57d97a"},
+ {file = "orjson-3.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:eebfed53bec5674e981ebe8ed2cf00b3f7bcda62d634733ff779c264307ea505"},
+ {file = "orjson-3.9.2-cp39-none-win32.whl", hash = "sha256:ba60f09d735f16593950c6adf033fbb526faa94d776925579a87b777db7d0838"},
+ {file = "orjson-3.9.2-cp39-none-win_amd64.whl", hash = "sha256:869b961df5fcedf6c79f4096119b35679b63272362e9b745e668f0391a892d39"},
+ {file = "orjson-3.9.2.tar.gz", hash = "sha256:24257c8f641979bf25ecd3e27251b5cc194cdd3a6e96004aac8446f5e63d9664"},
+]
+outcome = [
+ {file = "outcome-1.2.0-py2.py3-none-any.whl", hash = "sha256:c4ab89a56575d6d38a05aa16daeaa333109c1f96167aba8901ab18b6b5e0f7f5"},
+ {file = "outcome-1.2.0.tar.gz", hash = "sha256:6f82bd3de45da303cf1f771ecafa1633750a358436a8bb60e06a1ceb745d2672"},
+]
+packaging = [
+ {file = "packaging-22.0-py3-none-any.whl", hash = "sha256:957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3"},
+ {file = "packaging-22.0.tar.gz", hash = "sha256:2198ec20bd4c017b8f9717e00f0c8714076fc2fd93816750ab48e2c41de2cfd3"},
+]
+pathspec = [
+ {file = "pathspec-0.10.3-py3-none-any.whl", hash = "sha256:3c95343af8b756205e2aba76e843ba9520a24dd84f68c22b9f93251507509dd6"},
+ {file = "pathspec-0.10.3.tar.gz", hash = "sha256:56200de4077d9d0791465aa9095a01d421861e405b5096955051deefd697d6f6"},
+]
+pbr = [
+ {file = "pbr-5.11.0-py2.py3-none-any.whl", hash = "sha256:db2317ff07c84c4c63648c9064a79fe9d9f5c7ce85a9099d4b6258b3db83225a"},
+ {file = "pbr-5.11.0.tar.gz", hash = "sha256:b97bc6695b2aff02144133c2e7399d5885223d42b7912ffaec2ca3898e673bfe"},
+]
+pillow = [
+ {file = "Pillow-9.3.0-1-cp37-cp37m-win32.whl", hash = "sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74"},
+ {file = "Pillow-9.3.0-1-cp37-cp37m-win_amd64.whl", hash = "sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa"},
+ {file = "Pillow-9.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:0b7257127d646ff8676ec8a15520013a698d1fdc48bc2a79ba4e53df792526f2"},
+ {file = "Pillow-9.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b90f7616ea170e92820775ed47e136208e04c967271c9ef615b6fbd08d9af0e3"},
+ {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68943d632f1f9e3dce98908e873b3a090f6cba1cbb1b892a9e8d97c938871fbe"},
+ {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be55f8457cd1eac957af0c3f5ece7bc3f033f89b114ef30f710882717670b2a8"},
+ {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d77adcd56a42d00cc1be30843d3426aa4e660cab4a61021dc84467123f7a00c"},
+ {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:829f97c8e258593b9daa80638aee3789b7df9da5cf1336035016d76f03b8860c"},
+ {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:801ec82e4188e935c7f5e22e006d01611d6b41661bba9fe45b60e7ac1a8f84de"},
+ {file = "Pillow-9.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:871b72c3643e516db4ecf20efe735deb27fe30ca17800e661d769faab45a18d7"},
+ {file = "Pillow-9.3.0-cp310-cp310-win32.whl", hash = "sha256:655a83b0058ba47c7c52e4e2df5ecf484c1b0b0349805896dd350cbc416bdd91"},
+ {file = "Pillow-9.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:9f47eabcd2ded7698106b05c2c338672d16a6f2a485e74481f524e2a23c2794b"},
+ {file = "Pillow-9.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:57751894f6618fd4308ed8e0c36c333e2f5469744c34729a27532b3db106ee20"},
+ {file = "Pillow-9.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7db8b751ad307d7cf238f02101e8e36a128a6cb199326e867d1398067381bff4"},
+ {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1"},
+ {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22b012ea2d065fd163ca096f4e37e47cd8b59cf4b0fd47bfca6abb93df70b34c"},
+ {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a65733d103311331875c1dca05cb4606997fd33d6acfed695b1232ba1df193"},
+ {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:502526a2cbfa431d9fc2a079bdd9061a2397b842bb6bc4239bb176da00993812"},
+ {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:90fb88843d3902fe7c9586d439d1e8c05258f41da473952aa8b328d8b907498c"},
+ {file = "Pillow-9.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:89dca0ce00a2b49024df6325925555d406b14aa3efc2f752dbb5940c52c56b11"},
+ {file = "Pillow-9.3.0-cp311-cp311-win32.whl", hash = "sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c"},
+ {file = "Pillow-9.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:18498994b29e1cf86d505edcb7edbe814d133d2232d256db8c7a8ceb34d18cef"},
+ {file = "Pillow-9.3.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:772a91fc0e03eaf922c63badeca75e91baa80fe2f5f87bdaed4280662aad25c9"},
+ {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa4107d1b306cdf8953edde0534562607fe8811b6c4d9a486298ad31de733b2"},
+ {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4012d06c846dc2b80651b120e2cdd787b013deb39c09f407727ba90015c684f"},
+ {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77ec3e7be99629898c9a6d24a09de089fa5356ee408cdffffe62d67bb75fdd72"},
+ {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:6c738585d7a9961d8c2821a1eb3dcb978d14e238be3d70f0a706f7fa9316946b"},
+ {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:828989c45c245518065a110434246c44a56a8b2b2f6347d1409c787e6e4651ee"},
+ {file = "Pillow-9.3.0-cp37-cp37m-win32.whl", hash = "sha256:82409ffe29d70fd733ff3c1025a602abb3e67405d41b9403b00b01debc4c9a29"},
+ {file = "Pillow-9.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4"},
+ {file = "Pillow-9.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:b03ae6f1a1878233ac620c98f3459f79fd77c7e3c2b20d460284e1fb370557d4"},
+ {file = "Pillow-9.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4390e9ce199fc1951fcfa65795f239a8a4944117b5935a9317fb320e7767b40f"},
+ {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502"},
+ {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0a06a052c5f37b4ed81c613a455a81f9a3a69429b4fd7bb913c3fa98abefc20"},
+ {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040"},
+ {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:15c42fb9dea42465dfd902fb0ecf584b8848ceb28b41ee2b58f866411be33f07"},
+ {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:51e0e543a33ed92db9f5ef69a0356e0b1a7a6b6a71b80df99f1d181ae5875636"},
+ {file = "Pillow-9.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32"},
+ {file = "Pillow-9.3.0-cp38-cp38-win32.whl", hash = "sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0"},
+ {file = "Pillow-9.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:276a5ca930c913f714e372b2591a22c4bd3b81a418c0f6635ba832daec1cbcfc"},
+ {file = "Pillow-9.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:73bd195e43f3fadecfc50c682f5055ec32ee2c933243cafbfdec69ab1aa87cad"},
+ {file = "Pillow-9.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c7c8ae3864846fc95f4611c78129301e203aaa2af813b703c55d10cc1628535"},
+ {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3"},
+ {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0915e734b33a474d76c28e07292f196cdf2a590a0d25bcc06e64e545f2d146c"},
+ {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0372acb5d3598f36ec0914deed2a63f6bcdb7b606da04dc19a88d31bf0c05b"},
+ {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:ad58d27a5b0262c0c19b47d54c5802db9b34d38bbf886665b626aff83c74bacd"},
+ {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:97aabc5c50312afa5e0a2b07c17d4ac5e865b250986f8afe2b02d772567a380c"},
+ {file = "Pillow-9.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9aaa107275d8527e9d6e7670b64aabaaa36e5b6bd71a1015ddd21da0d4e06448"},
+ {file = "Pillow-9.3.0-cp39-cp39-win32.whl", hash = "sha256:bac18ab8d2d1e6b4ce25e3424f709aceef668347db8637c2296bcf41acb7cf48"},
+ {file = "Pillow-9.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:b472b5ea442148d1c3e2209f20f1e0bb0eb556538690fa70b5e1f79fa0ba8dc2"},
+ {file = "Pillow-9.3.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ab388aaa3f6ce52ac1cb8e122c4bd46657c15905904b3120a6248b5b8b0bc228"},
+ {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b"},
+ {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca31dd6014cb8b0b2db1e46081b0ca7d936f856da3b39744aef499db5d84d02"},
+ {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e"},
+ {file = "Pillow-9.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb"},
+ {file = "Pillow-9.3.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b59430236b8e58840a0dfb4099a0e8717ffb779c952426a69ae435ca1f57210c"},
+ {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12ce4932caf2ddf3e41d17fc9c02d67126935a44b86df6a206cf0d7161548627"},
+ {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae5331c23ce118c53b172fa64a4c037eb83c9165aba3a7ba9ddd3ec9fa64a699"},
+ {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:0b07fffc13f474264c336298d1b4ce01d9c5a011415b79d4ee5527bb69ae6f65"},
+ {file = "Pillow-9.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8"},
+ {file = "Pillow-9.3.0.tar.gz", hash = "sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f"},
+]
+pillow-heif = [
+ {file = "pillow_heif-0.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:62a0269a06119ae1395e28803677d46d4895410a360133d244dcffa6ecfdd4b9"},
+ {file = "pillow_heif-0.13.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ba6f634008762818033e7df942e0fa6649dec95fbbaaf8de498d7e43ff136435"},
+ {file = "pillow_heif-0.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9e7964e54b65bb7fb9b60e606dcb21582d7eea1046364d380a74081bec61478"},
+ {file = "pillow_heif-0.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7925f04312f39b7ef1334f1d676f901ba09615d1ccbec95b49c87af80677f383"},
+ {file = "pillow_heif-0.13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c02598f2103d385366dbd0c29da8a2bd30521d9cfc2f7342698839bf0c69e15a"},
+ {file = "pillow_heif-0.13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3239390575a25b1fd1bc8f41f0d3783c1aa26c77a467731fa301175d542f5e8b"},
+ {file = "pillow_heif-0.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:24a8c78a5fc2e5efa3650a10c061cd507888896d583c4e63a54549b34cb84d05"},
+ {file = "pillow_heif-0.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:779af08dc4dc0e787608ef035a525de40bf98e946ab194e3f702510c07af5f80"},
+ {file = "pillow_heif-0.13.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:df4eba9bd64bb50656eda31acddac58f53bc3f2c5b35ea8c90438a7e2763bce7"},
+ {file = "pillow_heif-0.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b586ba25c003bc2b608fe5cd1396b738b838ad4277348a5ca4525aac1f28e7b9"},
+ {file = "pillow_heif-0.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5389574c874805bd6a3f2d5ef14ef90b61fdbebd75b58798677e84018caac6c1"},
+ {file = "pillow_heif-0.13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:736800774f9754ebfeba21ae137db0aa9f19df17521aee70ceeb68e569a5fb00"},
+ {file = "pillow_heif-0.13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:86f47db53eb719bccddb14cadd91fe9fa38b57aa07e3823ffe74b796a2bc50f2"},
+ {file = "pillow_heif-0.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:4f0eb2babec34900367384feaacff9a2f42e959767ba5df214560ef579b657b1"},
+ {file = "pillow_heif-0.13.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:14787322b70e9cb02e599ef836f33181f981383f4848206f9fe5a272821806cb"},
+ {file = "pillow_heif-0.13.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f483c68895faad5af313e30c546cd935389ee99e59522d12f53225b46dcb9753"},
+ {file = "pillow_heif-0.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae9169e1ec94793d1b9ffe98ee39f856ca002e3ac476eaef0b524fedc81d2304"},
+ {file = "pillow_heif-0.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8e11c2a564663ce52f56851f3b9653abb254ec520191d3cf7841fcd02c29e3a"},
+ {file = "pillow_heif-0.13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:023ec7a6f085be0cf33e1b4458575579e3952da36b9c32956dbb2749b53e63b3"},
+ {file = "pillow_heif-0.13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459b8536e86df2f957998f9ba830ae3e8a51177db67d1a9cb7243402bb70b576"},
+ {file = "pillow_heif-0.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:6fa3661f6f8c6c28e4e565c7aa9e4a1ae2507aa1f3691f831d3a9bfd465ceea4"},
+ {file = "pillow_heif-0.13.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b78e59d89d57dbfa27b346ea5841bd80c61441d5dddfbaa135007dea81a24a53"},
+ {file = "pillow_heif-0.13.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:52b26bd99c1604fcd2760b0826e79a3301b6269ff6c129750e0e6ef4e4980f96"},
+ {file = "pillow_heif-0.13.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4f03ee12b249725144cf01bbacaf99029e54a67495fd2df6c29c493c44cdb15"},
+ {file = "pillow_heif-0.13.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a23e660c73739e2e4e3b18667bc478c4d62b31dfba07d962f1e8256bd37148b3"},
+ {file = "pillow_heif-0.13.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e72ee2971b722110fa6eb4b0ff640fc3854d9959f9a61f93eba62a16c6c40b75"},
+ {file = "pillow_heif-0.13.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:403a652a6665b1672590890edf2489686dc343c05fa2cae320ffc551de315392"},
+ {file = "pillow_heif-0.13.1-cp38-cp38-win_amd64.whl", hash = "sha256:385b93f575c98bd69bcefe2b013af324ed9c50d4600449f46fe784e909ac370e"},
+ {file = "pillow_heif-0.13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b56974c11e63ef1cda133bdd2eac2b4a992448a92dab3fcd20c5ec3195958952"},
+ {file = "pillow_heif-0.13.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:426662a4c3da6c499627303b858accb482583f7f1c5874d40057a8c843a3d53f"},
+ {file = "pillow_heif-0.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bce196e134b1dec0b82c157b27d665deb2193cbcce5a338a06766819a1878df9"},
+ {file = "pillow_heif-0.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97154e03be732005b51130aedff30229e9ae5038fa717afaca30e22d3e49d69e"},
+ {file = "pillow_heif-0.13.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1ac0bbcacb84e270c4accb519bf115dc18b80d7b3e283ddbb98bb77af613f5f4"},
+ {file = "pillow_heif-0.13.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6312ee1730e742851e0f2fec60b1390db9ffd831a26fd967fb3c7ed8a3f61197"},
+ {file = "pillow_heif-0.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:894caef12129966df326605b8ce7a18b88fabf50dcf3bdd4595ddf76c8543b9e"},
+ {file = "pillow_heif-0.13.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e7651354c30a4e2fb075df2a0e48ae3193a0b378ee2c262dea63b5b3013ec9b5"},
+ {file = "pillow_heif-0.13.1-pp310-pypy310_pp73-macosx_12_0_arm64.whl", hash = "sha256:9998235d3f1edfec3691161dbe83501b7139840d80caef640a9c87d7d5934b69"},
+ {file = "pillow_heif-0.13.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c8f070fe3705a52ef34c6b8cd39c29529972b5d7e2388a80530421e6d042b38"},
+ {file = "pillow_heif-0.13.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64b6ab214fa5ec6f709ec79b7bc2abaecba1553849ef0f04cd8ab1cf3b0aaf94"},
+ {file = "pillow_heif-0.13.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2fd56909022dfff4e02397585dda6b3ae25cd11adf1123c5617224947734205b"},
+ {file = "pillow_heif-0.13.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b3bd97b4ce968a776eb04c1085f20834d100021407398d1ea6db2c9fa4167fed"},
+ {file = "pillow_heif-0.13.1-pp38-pypy38_pp73-macosx_12_0_arm64.whl", hash = "sha256:c4f6125b5d3d18a17e43318ceaadc0eaad12ec37948bb7cc3ffee016c9d62ea4"},
+ {file = "pillow_heif-0.13.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c0a9763fb132b606c3fc1f749f3c4b94e01453a96366b9746d61c431626af12"},
+ {file = "pillow_heif-0.13.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:441751e7a09d4f253f48a4076fdf4778eea6d90fd8a57f0afde27236ba535eb1"},
+ {file = "pillow_heif-0.13.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6edc64c8e7172364bbeff09745cd76e443e673f68bd84708904dcdedab2645fd"},
+ {file = "pillow_heif-0.13.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1f61ebf35ad81994fcde3e7a7ebd15adc9dc9419aab97c6e4a535c04940daa20"},
+ {file = "pillow_heif-0.13.1-pp39-pypy39_pp73-macosx_12_0_arm64.whl", hash = "sha256:a7745c019f954aab611299908089e3e53f45ed4eda057cb32782b90cbf5c1ef9"},
+ {file = "pillow_heif-0.13.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99235d323388de1bef001f06f6a35f20a1d6954896d79e44f4dc4d2bb6f3229c"},
+ {file = "pillow_heif-0.13.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e360c0c533345b34e05b923b49abbf08ec7ebe8e17f6cca6b446d386b7fd8b3"},
+ {file = "pillow_heif-0.13.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d9cf0b1a18e660b829fb9c618b5539c3c741301009ff06e8438b89211e890a13"},
+ {file = "pillow_heif-0.13.1.tar.gz", hash = "sha256:0d46adc8a8afb515297fd47fc0b15657b8927f7ec52ad1fb8d63250413d4c6ba"},
+]
+platformdirs = [
+ {file = "platformdirs-2.6.0-py3-none-any.whl", hash = "sha256:1a89a12377800c81983db6be069ec068eee989748799b946cce2a6e80dcc54ca"},
+ {file = "platformdirs-2.6.0.tar.gz", hash = "sha256:b46ffafa316e6b83b47489d240ce17173f123a9b9c83282141c3daf26ad9ac2e"},
+]
+pluggy = [
+ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
+ {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
+]
+posthog = [
+ {file = "posthog-1.4.9-py2.py3-none-any.whl", hash = "sha256:f2dde13313193a735fc968acfca8298afb78efb5fe67780c496d533211a8f280"},
+ {file = "posthog-1.4.9.tar.gz", hash = "sha256:6f99ca20da4e343be80b7535a719a2652b77cf06c10406e66e3340a9c278f928"},
+]
+pre-commit = [
+ {file = "pre_commit-2.20.0-py2.py3-none-any.whl", hash = "sha256:51a5ba7c480ae8072ecdb6933df22d2f812dc897d5fe848778116129a681aac7"},
+ {file = "pre_commit-2.20.0.tar.gz", hash = "sha256:a978dac7bc9ec0bcee55c18a277d553b0f419d259dadb4b9418ff2d00eb43959"},
+]
+psycopg2 = [
+ {file = "psycopg2-2.9.5-cp310-cp310-win32.whl", hash = "sha256:d3ef67e630b0de0779c42912fe2cbae3805ebaba30cda27fea2a3de650a9414f"},
+ {file = "psycopg2-2.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:4cb9936316d88bfab614666eb9e32995e794ed0f8f6b3b718666c22819c1d7ee"},
+ {file = "psycopg2-2.9.5-cp311-cp311-win32.whl", hash = "sha256:093e3894d2d3c592ab0945d9eba9d139c139664dcf83a1c440b8a7aa9bb21955"},
+ {file = "psycopg2-2.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:920bf418000dd17669d2904472efeab2b20546efd0548139618f8fa305d1d7ad"},
+ {file = "psycopg2-2.9.5-cp36-cp36m-win32.whl", hash = "sha256:b9ac1b0d8ecc49e05e4e182694f418d27f3aedcfca854ebd6c05bb1cffa10d6d"},
+ {file = "psycopg2-2.9.5-cp36-cp36m-win_amd64.whl", hash = "sha256:fc04dd5189b90d825509caa510f20d1d504761e78b8dfb95a0ede180f71d50e5"},
+ {file = "psycopg2-2.9.5-cp37-cp37m-win32.whl", hash = "sha256:922cc5f0b98a5f2b1ff481f5551b95cd04580fd6f0c72d9b22e6c0145a4840e0"},
+ {file = "psycopg2-2.9.5-cp37-cp37m-win_amd64.whl", hash = "sha256:1e5a38aa85bd660c53947bd28aeaafb6a97d70423606f1ccb044a03a1203fe4a"},
+ {file = "psycopg2-2.9.5-cp38-cp38-win32.whl", hash = "sha256:f5b6320dbc3cf6cfb9f25308286f9f7ab464e65cfb105b64cc9c52831748ced2"},
+ {file = "psycopg2-2.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:1a5c7d7d577e0eabfcf15eb87d1e19314c8c4f0e722a301f98e0e3a65e238b4e"},
+ {file = "psycopg2-2.9.5-cp39-cp39-win32.whl", hash = "sha256:322fd5fca0b1113677089d4ebd5222c964b1760e361f151cbb2706c4912112c5"},
+ {file = "psycopg2-2.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:190d51e8c1b25a47484e52a79638a8182451d6f6dff99f26ad9bd81e5359a0fa"},
+ {file = "psycopg2-2.9.5.tar.gz", hash = "sha256:a5246d2e683a972e2187a8714b5c2cf8156c064629f9a9b1a873c1730d9e245a"},
+]
+py = [
+ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
+ {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
+]
+py-moneyed = [
+ {file = "py-moneyed-3.0.tar.gz", hash = "sha256:4906f0f02cf2b91edba2e156f2d4e9a78f224059ab8c8fa2ff26230c75d894e8"},
+ {file = "py_moneyed-3.0-py3-none-any.whl", hash = "sha256:9583a14f99c05b46196193d8185206e9b73c8439fc8a5eee9cfc7e733676d9bb"},
+]
+pyactiveresource = [
+ {file = "pyactiveresource-2.2.2.tar.gz", hash = "sha256:2f03844652dc206d9a086b0b15564d78dcec55786fa5fe0055dd2119e0dffdd8"},
+]
+pycodestyle = [
+ {file = "pycodestyle-2.10.0-py2.py3-none-any.whl", hash = "sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610"},
+ {file = "pycodestyle-2.10.0.tar.gz", hash = "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053"},
+]
+pycountry = [
+ {file = "pycountry-22.3.5.tar.gz", hash = "sha256:b2163a246c585894d808f18783e19137cb70a0c18fb36748dc01fc6f109c1646"},
+]
+pycparser = [
+ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
+ {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
+]
+pydocstyle = [
+ {file = "pydocstyle-6.1.1-py3-none-any.whl", hash = "sha256:6987826d6775056839940041beef5c08cc7e3d71d63149b48e36727f70144dc4"},
+ {file = "pydocstyle-6.1.1.tar.gz", hash = "sha256:1d41b7c459ba0ee6c345f2eb9ae827cab14a7533a88c5c6f7e94923f72df92dc"},
+]
+pygments = [
+ {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"},
+ {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"},
+]
+pyjwt = [
+ {file = "PyJWT-2.6.0-py3-none-any.whl", hash = "sha256:d83c3d892a77bbb74d3e1a2cfa90afaadb60945205d1095d9221f04466f64c14"},
+ {file = "PyJWT-2.6.0.tar.gz", hash = "sha256:69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd"},
+]
+pylint = [
+ {file = "pylint-2.15.8-py3-none-any.whl", hash = "sha256:ea82cd6a1e11062dc86d555d07c021b0fb65afe39becbe6fe692efd6c4a67443"},
+ {file = "pylint-2.15.8.tar.gz", hash = "sha256:ec4a87c33da054ab86a6c79afa6771dc8765cb5631620053e727fcf3ef8cbed7"},
+]
+pysocks = [
+ {file = "PySocks-1.7.1-py27-none-any.whl", hash = "sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299"},
+ {file = "PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5"},
+ {file = "PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0"},
+]
+pytest = [
+ {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
+ {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"},
+]
+pytest-django = [
+ {file = "pytest-django-4.5.2.tar.gz", hash = "sha256:d9076f759bb7c36939dbdd5ae6633c18edfc2902d1a69fdbefd2426b970ce6c2"},
+ {file = "pytest_django-4.5.2-py3-none-any.whl", hash = "sha256:c60834861933773109334fe5a53e83d1ef4828f2203a1d6a0fa9972f4f75ab3e"},
+]
+python-dateutil = [
+ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
+ {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
+]
+python-dotenv = [
+ {file = "python-dotenv-0.21.0.tar.gz", hash = "sha256:b77d08274639e3d34145dfa6c7008e66df0f04b7be7a75fd0d5292c191d79045"},
+ {file = "python_dotenv-0.21.0-py3-none-any.whl", hash = "sha256:1684eb44636dd462b66c3ee016599815514527ad99965de77f43e0944634a7e5"},
+]
+python3-openid = [
+ {file = "python3-openid-3.2.0.tar.gz", hash = "sha256:33fbf6928f401e0b790151ed2b5290b02545e8775f982485205a066f874aaeaf"},
+ {file = "python3_openid-3.2.0-py3-none-any.whl", hash = "sha256:6626f771e0417486701e0b4daff762e7212e820ca5b29fcc0d05f6f8736dfa6b"},
+]
+pytz = [
+ {file = "pytz-2022.6-py2.py3-none-any.whl", hash = "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427"},
+ {file = "pytz-2022.6.tar.gz", hash = "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"},
+]
+pyupgrade = [
+ {file = "pyupgrade-2.38.4-py2.py3-none-any.whl", hash = "sha256:944ff993c396ddc2b9012eb3de4cda138eb4c149b22c6c560d4c8bfd0e180982"},
+ {file = "pyupgrade-2.38.4.tar.gz", hash = "sha256:1eb43a49f416752929741ba4d706bf3f33593d3cac9bdc217fc1ef55c047c1f4"},
+]
+pyyaml = [
+ {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"},
+ {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"},
+ {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"},
+ {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"},
+ {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"},
+ {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"},
+ {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"},
+ {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"},
+ {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"},
+ {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"},
+ {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"},
+ {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"},
+ {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"},
+ {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"},
+ {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"},
+ {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"},
+ {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"},
+ {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"},
+ {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"},
+ {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"},
+ {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"},
+ {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"},
+ {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"},
+ {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"},
+ {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"},
+ {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"},
+ {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"},
+ {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"},
+ {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"},
+ {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"},
+ {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"},
+ {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"},
+ {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"},
+ {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"},
+ {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"},
+ {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"},
+ {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"},
+ {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"},
+ {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"},
+ {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"},
+]
+regex = [
+ {file = "regex-2022.10.31-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f"},
+ {file = "regex-2022.10.31-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9"},
+ {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b"},
+ {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d03fe67b2325cb3f09be029fd5da8df9e6974f0cde2c2ac6a79d2634e791dd57"},
+ {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9d0b68ac1743964755ae2d89772c7e6fb0118acd4d0b7464eaf3921c6b49dd4"},
+ {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a45b6514861916c429e6059a55cf7db74670eaed2052a648e3e4d04f070e001"},
+ {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b0886885f7323beea6f552c28bff62cbe0983b9fbb94126531693ea6c5ebb90"},
+ {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5aefb84a301327ad115e9d346c8e2760009131d9d4b4c6b213648d02e2abe144"},
+ {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:702d8fc6f25bbf412ee706bd73019da5e44a8400861dfff7ff31eb5b4a1276dc"},
+ {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a3c1ebd4ed8e76e886507c9eddb1a891673686c813adf889b864a17fafcf6d66"},
+ {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:50921c140561d3db2ab9f5b11c5184846cde686bb5a9dc64cae442926e86f3af"},
+ {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:7db345956ecce0c99b97b042b4ca7326feeec6b75facd8390af73b18e2650ffc"},
+ {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:763b64853b0a8f4f9cfb41a76a4a85a9bcda7fdda5cb057016e7706fde928e66"},
+ {file = "regex-2022.10.31-cp310-cp310-win32.whl", hash = "sha256:44136355e2f5e06bf6b23d337a75386371ba742ffa771440b85bed367c1318d1"},
+ {file = "regex-2022.10.31-cp310-cp310-win_amd64.whl", hash = "sha256:bfff48c7bd23c6e2aec6454aaf6edc44444b229e94743b34bdcdda2e35126cf5"},
+ {file = "regex-2022.10.31-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4b4b1fe58cd102d75ef0552cf17242705ce0759f9695334a56644ad2d83903fe"},
+ {file = "regex-2022.10.31-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:542e3e306d1669b25936b64917285cdffcd4f5c6f0247636fec037187bd93542"},
+ {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c27cc1e4b197092e50ddbf0118c788d9977f3f8f35bfbbd3e76c1846a3443df7"},
+ {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8e38472739028e5f2c3a4aded0ab7eadc447f0d84f310c7a8bb697ec417229e"},
+ {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76c598ca73ec73a2f568e2a72ba46c3b6c8690ad9a07092b18e48ceb936e9f0c"},
+ {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c28d3309ebd6d6b2cf82969b5179bed5fefe6142c70f354ece94324fa11bf6a1"},
+ {file = "regex-2022.10.31-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9af69f6746120998cd9c355e9c3c6aec7dff70d47247188feb4f829502be8ab4"},
+ {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a5f9505efd574d1e5b4a76ac9dd92a12acb2b309551e9aa874c13c11caefbe4f"},
+ {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5ff525698de226c0ca743bfa71fc6b378cda2ddcf0d22d7c37b1cc925c9650a5"},
+ {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4fe7fda2fe7c8890d454f2cbc91d6c01baf206fbc96d89a80241a02985118c0c"},
+ {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2cdc55ca07b4e70dda898d2ab7150ecf17c990076d3acd7a5f3b25cb23a69f1c"},
+ {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:44a6c2f6374e0033873e9ed577a54a3602b4f609867794c1a3ebba65e4c93ee7"},
+ {file = "regex-2022.10.31-cp311-cp311-win32.whl", hash = "sha256:d8716f82502997b3d0895d1c64c3b834181b1eaca28f3f6336a71777e437c2af"},
+ {file = "regex-2022.10.31-cp311-cp311-win_amd64.whl", hash = "sha256:61edbca89aa3f5ef7ecac8c23d975fe7261c12665f1d90a6b1af527bba86ce61"},
+ {file = "regex-2022.10.31-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a069c8483466806ab94ea9068c34b200b8bfc66b6762f45a831c4baaa9e8cdd"},
+ {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d26166acf62f731f50bdd885b04b38828436d74e8e362bfcb8df221d868b5d9b"},
+ {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac741bf78b9bb432e2d314439275235f41656e189856b11fb4e774d9f7246d81"},
+ {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75f591b2055523fc02a4bbe598aa867df9e953255f0b7f7715d2a36a9c30065c"},
+ {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b30bddd61d2a3261f025ad0f9ee2586988c6a00c780a2fb0a92cea2aa702c54"},
+ {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef4163770525257876f10e8ece1cf25b71468316f61451ded1a6f44273eedeb5"},
+ {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7b280948d00bd3973c1998f92e22aa3ecb76682e3a4255f33e1020bd32adf443"},
+ {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:d0213671691e341f6849bf33cd9fad21f7b1cb88b89e024f33370733fec58742"},
+ {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:22e7ebc231d28393dfdc19b185d97e14a0f178bedd78e85aad660e93b646604e"},
+ {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:8ad241da7fac963d7573cc67a064c57c58766b62a9a20c452ca1f21050868dfa"},
+ {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:586b36ebda81e6c1a9c5a5d0bfdc236399ba6595e1397842fd4a45648c30f35e"},
+ {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4"},
+ {file = "regex-2022.10.31-cp36-cp36m-win32.whl", hash = "sha256:144486e029793a733e43b2e37df16a16df4ceb62102636ff3db6033994711066"},
+ {file = "regex-2022.10.31-cp36-cp36m-win_amd64.whl", hash = "sha256:c14b63c9d7bab795d17392c7c1f9aaabbffd4cf4387725a0ac69109fb3b550c6"},
+ {file = "regex-2022.10.31-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4cac3405d8dda8bc6ed499557625585544dd5cbf32072dcc72b5a176cb1271c8"},
+ {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23cbb932cc53a86ebde0fb72e7e645f9a5eec1a5af7aa9ce333e46286caef783"},
+ {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74bcab50a13960f2a610cdcd066e25f1fd59e23b69637c92ad470784a51b1347"},
+ {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78d680ef3e4d405f36f0d6d1ea54e740366f061645930072d39bca16a10d8c93"},
+ {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce6910b56b700bea7be82c54ddf2e0ed792a577dfaa4a76b9af07d550af435c6"},
+ {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:659175b2144d199560d99a8d13b2228b85e6019b6e09e556209dfb8c37b78a11"},
+ {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1ddf14031a3882f684b8642cb74eea3af93a2be68893901b2b387c5fd92a03ec"},
+ {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b683e5fd7f74fb66e89a1ed16076dbab3f8e9f34c18b1979ded614fe10cdc4d9"},
+ {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2bde29cc44fa81c0a0c8686992c3080b37c488df167a371500b2a43ce9f026d1"},
+ {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4919899577ba37f505aaebdf6e7dc812d55e8f097331312db7f1aab18767cce8"},
+ {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:9c94f7cc91ab16b36ba5ce476f1904c91d6c92441f01cd61a8e2729442d6fcf5"},
+ {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae1e96785696b543394a4e3f15f3f225d44f3c55dafe3f206493031419fedf95"},
+ {file = "regex-2022.10.31-cp37-cp37m-win32.whl", hash = "sha256:c670f4773f2f6f1957ff8a3962c7dd12e4be54d05839b216cb7fd70b5a1df394"},
+ {file = "regex-2022.10.31-cp37-cp37m-win_amd64.whl", hash = "sha256:8e0caeff18b96ea90fc0eb6e3bdb2b10ab5b01a95128dfeccb64a7238decf5f0"},
+ {file = "regex-2022.10.31-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:131d4be09bea7ce2577f9623e415cab287a3c8e0624f778c1d955ec7c281bd4d"},
+ {file = "regex-2022.10.31-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e613a98ead2005c4ce037c7b061f2409a1a4e45099edb0ef3200ee26ed2a69a8"},
+ {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad"},
+ {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa62a07ac93b7cb6b7d0389d8ef57ffc321d78f60c037b19dfa78d6b17c928ee"},
+ {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5352bea8a8f84b89d45ccc503f390a6be77917932b1c98c4cdc3565137acc714"},
+ {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20f61c9944f0be2dc2b75689ba409938c14876c19d02f7585af4460b6a21403e"},
+ {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29c04741b9ae13d1e94cf93fca257730b97ce6ea64cfe1eba11cf9ac4e85afb6"},
+ {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:543883e3496c8b6d58bd036c99486c3c8387c2fc01f7a342b760c1ea3158a318"},
+ {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7a8b43ee64ca8f4befa2bea4083f7c52c92864d8518244bfa6e88c751fa8fff"},
+ {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6a9a19bea8495bb419dc5d38c4519567781cd8d571c72efc6aa959473d10221a"},
+ {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6ffd55b5aedc6f25fd8d9f905c9376ca44fcf768673ffb9d160dd6f409bfda73"},
+ {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4bdd56ee719a8f751cf5a593476a441c4e56c9b64dc1f0f30902858c4ef8771d"},
+ {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ca88da1bd78990b536c4a7765f719803eb4f8f9971cc22d6ca965c10a7f2c4c"},
+ {file = "regex-2022.10.31-cp38-cp38-win32.whl", hash = "sha256:5a260758454580f11dd8743fa98319bb046037dfab4f7828008909d0aa5292bc"},
+ {file = "regex-2022.10.31-cp38-cp38-win_amd64.whl", hash = "sha256:5e6a5567078b3eaed93558842346c9d678e116ab0135e22eb72db8325e90b453"},
+ {file = "regex-2022.10.31-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5217c25229b6a85049416a5c1e6451e9060a1edcf988641e309dbe3ab26d3e49"},
+ {file = "regex-2022.10.31-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4bf41b8b0a80708f7e0384519795e80dcb44d7199a35d52c15cc674d10b3081b"},
+ {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf0da36a212978be2c2e2e2d04bdff46f850108fccc1851332bcae51c8907cc"},
+ {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d403d781b0e06d2922435ce3b8d2376579f0c217ae491e273bab8d092727d244"},
+ {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a37d51fa9a00d265cf73f3de3930fa9c41548177ba4f0faf76e61d512c774690"},
+ {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4f781ffedd17b0b834c8731b75cce2639d5a8afe961c1e58ee7f1f20b3af185"},
+ {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d243b36fbf3d73c25e48014961e83c19c9cc92530516ce3c43050ea6276a2ab7"},
+ {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:370f6e97d02bf2dd20d7468ce4f38e173a124e769762d00beadec3bc2f4b3bc4"},
+ {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:597f899f4ed42a38df7b0e46714880fb4e19a25c2f66e5c908805466721760f5"},
+ {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7dbdce0c534bbf52274b94768b3498abdf675a691fec5f751b6057b3030f34c1"},
+ {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:22960019a842777a9fa5134c2364efaed5fbf9610ddc5c904bd3a400973b0eb8"},
+ {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7f5a3ffc731494f1a57bd91c47dc483a1e10048131ffb52d901bfe2beb6102e8"},
+ {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7ef6b5942e6bfc5706301a18a62300c60db9af7f6368042227ccb7eeb22d0892"},
+ {file = "regex-2022.10.31-cp39-cp39-win32.whl", hash = "sha256:395161bbdbd04a8333b9ff9763a05e9ceb4fe210e3c7690f5e68cedd3d65d8e1"},
+ {file = "regex-2022.10.31-cp39-cp39-win_amd64.whl", hash = "sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692"},
+ {file = "regex-2022.10.31.tar.gz", hash = "sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83"},
+]
+requests = [
+ {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"},
+ {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"},
+]
+requests-oauthlib = [
+ {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"},
+ {file = "requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5"},
+]
+rich = [
+ {file = "rich-10.16.2-py3-none-any.whl", hash = "sha256:c59d73bd804c90f747c8d7b1d023b88f2a9ac2454224a4aeaf959b21eeb42d03"},
+ {file = "rich-10.16.2.tar.gz", hash = "sha256:720974689960e06c2efdb54327f8bf0cdbdf4eae4ad73b6c94213cad405c371b"},
+]
+s3transfer = [
+ {file = "s3transfer-0.6.0-py3-none-any.whl", hash = "sha256:06176b74f3a15f61f1b4f25a1fc29a4429040b7647133a463da8fa5bd28d5ecd"},
+ {file = "s3transfer-0.6.0.tar.gz", hash = "sha256:2ed07d3866f523cc561bf4a00fc5535827981b117dd7876f036b0c1aca42c947"},
+]
+safety = [
+ {file = "safety-1.10.3-py2.py3-none-any.whl", hash = "sha256:5f802ad5df5614f9622d8d71fedec2757099705c2356f862847c58c6dfe13e84"},
+ {file = "safety-1.10.3.tar.gz", hash = "sha256:30e394d02a20ac49b7f65292d19d38fa927a8f9582cdfd3ad1adbbc66c641ad5"},
+]
+schedule = [
+ {file = "schedule-1.1.0-py2.py3-none-any.whl", hash = "sha256:617adce8b4bf38c360b781297d59918fbebfb2878f1671d189f4f4af5d0567a4"},
+ {file = "schedule-1.1.0.tar.gz", hash = "sha256:e6ca13585e62c810e13a08682e0a6a8ad245372e376ba2b8679294f377dfc8e4"},
+]
+selenium = [
+ {file = "selenium-4.7.2-py3-none-any.whl", hash = "sha256:06a1c7d9f313130b21c3218ddd8852070d0e7419afdd31f96160cd576555a5ce"},
+ {file = "selenium-4.7.2.tar.gz", hash = "sha256:3aefa14a28a42e520550c1cd0f29cf1d566328186ea63aa9a3e01fb265b5894d"},
+]
+sentry-sdk = [
+ {file = "sentry-sdk-1.11.1.tar.gz", hash = "sha256:675f6279b6bb1fea09fd61751061f9a90dca3b5929ef631dd50dc8b3aeb245e9"},
+ {file = "sentry_sdk-1.11.1-py2.py3-none-any.whl", hash = "sha256:8b4ff696c0bdcceb3f70bbb87a57ba84fd3168b1332d493fcd16c137f709578c"},
+]
+setuptools = [
+ {file = "setuptools-65.6.3-py3-none-any.whl", hash = "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54"},
+ {file = "setuptools-65.6.3.tar.gz", hash = "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"},
+]
+shopifyapi = [
+ {file = "ShopifyAPI-11.0.0.tar.gz", hash = "sha256:864a4505151859200af210d3add1b9abe9284e59a6e8f97611a8f83e857869ac"},
+]
+six = [
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+]
+slippers = [
+ {file = "slippers-0.6.2-py3-none-any.whl", hash = "sha256:739e05f85354becbf0a65daab831eea62557d89e7512042209ab629af4378bca"},
+ {file = "slippers-0.6.2.tar.gz", hash = "sha256:4cb555b8822ba0d404e5405723f5d723994022c29046008ee917081031bc0cf1"},
+]
+smmap = [
+ {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"},
+ {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"},
+]
+sniffio = [
+ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
+ {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
+]
+snowballstemmer = [
+ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"},
+ {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"},
+]
+sortedcontainers = [
+ {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"},
+ {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"},
+]
+soupsieve = [
+ {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"},
+ {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"},
+]
+sqlparse = [
+ {file = "sqlparse-0.4.3-py3-none-any.whl", hash = "sha256:0323c0ec29cd52bceabc1b4d9d579e311f3e4961b98d174201d5622a23b85e34"},
+ {file = "sqlparse-0.4.3.tar.gz", hash = "sha256:69ca804846bb114d2ec380e4360a8a340db83f0ccf3afceeb1404df028f57268"},
+]
+stevedore = [
+ {file = "stevedore-4.1.1-py3-none-any.whl", hash = "sha256:aa6436565c069b2946fe4ebff07f5041e0c8bf18c7376dd29edf80cf7d524e4e"},
+ {file = "stevedore-4.1.1.tar.gz", hash = "sha256:7f8aeb6e3f90f96832c301bff21a7eb5eefbe894c88c506483d355565d88cc1a"},
+]
+stripe = [
+ {file = "stripe-2.76.0-py2.py3-none-any.whl", hash = "sha256:756bf6c1206f438d1fa23bb90cdf1233c9383478f854f2720a8a3e1eaf1f715b"},
+ {file = "stripe-2.76.0.tar.gz", hash = "sha256:fd3fc6935c3b6189967191607b6f38ebe490005a590b4d0d43fbe3aba45deca8"},
+]
+tablib = [
+ {file = "tablib-3.3.0-py3-none-any.whl", hash = "sha256:f7f2e214a1a68577f2599927a8870495adac0f7f2673b1819130f2060e1914ab"},
+ {file = "tablib-3.3.0.tar.gz", hash = "sha256:11e02a6f81d256e0666877d8397972d10302307a54c04fd7157e92faf740cb10"},
+]
+telepath = [
+ {file = "telepath-0.3-py35-none-any.whl", hash = "sha256:fbdbc6bdd9a4a5c2b230caae242fa6ba4994c9dbcfd780df9be63f2966feb034"},
+ {file = "telepath-0.3.tar.gz", hash = "sha256:54f4b57232461bc67c54f63f437cb6d26843c189bae6b7ba8e4457f98d78e515"},
+]
+tokenize-rt = [
+ {file = "tokenize_rt-4.2.1-py2.py3-none-any.whl", hash = "sha256:08a27fa032a81cf45e8858d0ac706004fcd523e8463415ddf1442be38e204ea8"},
+ {file = "tokenize_rt-4.2.1.tar.gz", hash = "sha256:0d4f69026fed520f8a1e0103aa36c406ef4661417f20ca643f913e33531b3b94"},
+]
+toml = [
+ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
+ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
+]
+tomli = [
+ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
+ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
+]
+tomlkit = [
+ {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"},
+ {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"},
+]
+tornado = [
+ {file = "tornado-6.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:20f638fd8cc85f3cbae3c732326e96addff0a15e22d80f049e00121651e82e72"},
+ {file = "tornado-6.2-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:87dcafae3e884462f90c90ecc200defe5e580a7fbbb4365eda7c7c1eb809ebc9"},
+ {file = "tornado-6.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba09ef14ca9893954244fd872798b4ccb2367c165946ce2dd7376aebdde8e3ac"},
+ {file = "tornado-6.2-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8150f721c101abdef99073bf66d3903e292d851bee51910839831caba341a75"},
+ {file = "tornado-6.2-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3a2f5999215a3a06a4fc218026cd84c61b8b2b40ac5296a6db1f1451ef04c1e"},
+ {file = "tornado-6.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5f8c52d219d4995388119af7ccaa0bcec289535747620116a58d830e7c25d8a8"},
+ {file = "tornado-6.2-cp37-abi3-musllinux_1_1_i686.whl", hash = "sha256:6fdfabffd8dfcb6cf887428849d30cf19a3ea34c2c248461e1f7d718ad30b66b"},
+ {file = "tornado-6.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:1d54d13ab8414ed44de07efecb97d4ef7c39f7438cf5e976ccd356bebb1b5fca"},
+ {file = "tornado-6.2-cp37-abi3-win32.whl", hash = "sha256:5c87076709343557ef8032934ce5f637dbb552efa7b21d08e89ae7619ed0eb23"},
+ {file = "tornado-6.2-cp37-abi3-win_amd64.whl", hash = "sha256:e5f923aa6a47e133d1cf87d60700889d7eae68988704e20c75fb2d65677a8e4b"},
+ {file = "tornado-6.2.tar.gz", hash = "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13"},
+]
+tqdm = [
+ {file = "tqdm-4.64.1-py2.py3-none-any.whl", hash = "sha256:6fee160d6ffcd1b1c68c65f14c829c22832bc401726335ce92c52d395944a6a1"},
+ {file = "tqdm-4.64.1.tar.gz", hash = "sha256:5f4f682a004951c1b450bc753c710e9280c5746ce6ffedee253ddbcbf54cf1e4"},
+]
+trio = [
+ {file = "trio-0.22.0-py3-none-any.whl", hash = "sha256:f1dd0780a89bfc880c7c7994519cb53f62aacb2c25ff487001c0052bd721cdf0"},
+ {file = "trio-0.22.0.tar.gz", hash = "sha256:ce68f1c5400a47b137c5a4de72c7c901bd4e7a24fbdebfe9b41de8c6c04eaacf"},
+]
+trio-websocket = [
+ {file = "trio-websocket-0.9.2.tar.gz", hash = "sha256:a3d34de8fac26023eee701ed1e7bf4da9a8326b61a62934ec9e53b64970fd8fe"},
+ {file = "trio_websocket-0.9.2-py3-none-any.whl", hash = "sha256:5b558f6e83cc20a37c3b61202476c5295d1addf57bd65543364e0337e37ed2bc"},
+]
+typeguard = [
+ {file = "typeguard-2.13.3-py3-none-any.whl", hash = "sha256:5e3e3be01e887e7eafae5af63d1f36c849aaa94e3a0112097312aabfa16284f1"},
+ {file = "typeguard-2.13.3.tar.gz", hash = "sha256:00edaa8da3a133674796cf5ea87d9f4b4c367d77476e185e80251cc13dfbb8c4"},
+]
+typing-extensions = [
+ {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"},
+ {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"},
+]
+tzdata = [
+ {file = "tzdata-2022.7-py2.py3-none-any.whl", hash = "sha256:2b88858b0e3120792a3c0635c23daf36a7d7eeeca657c323da299d2094402a0d"},
+ {file = "tzdata-2022.7.tar.gz", hash = "sha256:fe5f866eddd8b96e9fcba978f8e503c909b19ea7efda11e52e39494bad3a7bfa"},
+]
+urllib3 = [
+ {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"},
+ {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"},
+]
+virtualenv = [
+ {file = "virtualenv-20.17.1-py3-none-any.whl", hash = "sha256:ce3b1684d6e1a20a3e5ed36795a97dfc6af29bc3970ca8dab93e11ac6094b3c4"},
+ {file = "virtualenv-20.17.1.tar.gz", hash = "sha256:f8b927684efc6f1cc206c9db297a570ab9ad0e51c16fa9e45487d36d1905c058"},
+]
+wagtail = [
+ {file = "wagtail-5.2.1-py3-none-any.whl", hash = "sha256:fde8055e6988b5d88ff561535acfe1d10ca42334eea22bb5acd194f331f887e3"},
+ {file = "wagtail-5.2.1.tar.gz", hash = "sha256:1186b2baa74eee858f4b6b573324990f37a667c91afc439ba2651d8ac4be1a8d"},
+]
+wagtail-admin-list-controls = [
+ {file = "wagtail-admin-list-controls-0.1.7.tar.gz", hash = "sha256:e56a88036072321f9200d402de639260b8a878a87637aad90cefeeeba493105c"},
+ {file = "wagtail_admin_list_controls-0.1.7-py3-none-any.whl", hash = "sha256:7182db306f101fc13a15ae4b8659d91af50bb033b12ebdd71f22e4f4aa221835"},
+]
+wagtail-autocomplete = [
+ {file = "wagtail-autocomplete-0.9.0.tar.gz", hash = "sha256:b64828d35f370453c84bc4094174872822798e54414f5fb9fc8a43c2a6c3e727"},
+ {file = "wagtail_autocomplete-0.9.0-py3-none-any.whl", hash = "sha256:d85789543308d344447656725b9aac8d1c4c6fb271221a3340008a3c9f2ab6fa"},
+]
+wagtail-cache = [
+ {file = "wagtail-cache-2.3.0.tar.gz", hash = "sha256:fbb0c04f8238ed688b5f58ad8644366d017d0ebdcaf84d12be33ad85624f0a25"},
+ {file = "wagtail_cache-2.3.0-py3-none-any.whl", hash = "sha256:3d4fd0c6f8b5fc30e6a110ebe4e4a144df72a011fb79703e601a753895fc0713"},
+]
+wagtail-seo = [
+ {file = "wagtail-seo-2.4.1.tar.gz", hash = "sha256:fd9ff0f840a2800f30421182bd101615da236bc8431227f9aeb19bcc7adb87ac"},
+ {file = "wagtail_seo-2.4.1-py3-none-any.whl", hash = "sha256:bf187ad4c2e4c270d11eb93f59f109a5c5f8bde9c52e6b3d869d03581dd3bf76"},
+]
+wagtail-transfer = [
+ {file = "wagtail-transfer-0.8.5.tar.gz", hash = "sha256:8e32806cfc175c5a9ac2573f0ad09b7a6c273002aaf1efb44c01519e385ac827"},
+ {file = "wagtail_transfer-0.8.5-py3-none-any.whl", hash = "sha256:1ec0847adc385f226d292532077e32a019fe2ba5c0ddf7819cac9c66c8e85a77"},
+]
+wagtailmenus = [
+ {file = "wagtailmenus-3.1.9-py3-none-any.whl", hash = "sha256:cfcaa942474c20383eed6e01a1ddf1249c7a18bb1a2faa25a744fc28c57a745b"},
+ {file = "wagtailmenus-3.1.9.tar.gz", hash = "sha256:ce484d06cf901402238ad337fc09ba8842ceff3baa08b4cafaddbb158878cda3"},
+]
+webdriver-manager = [
+ {file = "webdriver_manager-3.8.5-py2.py3-none-any.whl", hash = "sha256:2d807ec270d2d990022b86efabd4096053e0a1e7a34c6174f9937320dfdc6826"},
+ {file = "webdriver_manager-3.8.5.tar.gz", hash = "sha256:e671f3b738af52351341d6df6674c2f0b959db0fe978e9a7135cfa36d1ad9560"},
+]
+webencodings = [
+ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
+ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
+]
+willow = [
+ {file = "willow-1.6.2-py3-none-any.whl", hash = "sha256:957a4af8a7733e116a65eca34da11afe3fd52ffdb397494c8823901c25863787"},
+ {file = "willow-1.6.2.tar.gz", hash = "sha256:e2d0450fd78ab19052d0478b888ef163e3264e8dcd1af002dd691458db98056f"},
+]
+wrapt = [
+ {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"},
+ {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"},
+ {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"},
+ {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"},
+ {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"},
+ {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"},
+ {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"},
+ {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"},
+ {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"},
+ {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"},
+ {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"},
+ {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"},
+ {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"},
+ {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"},
+ {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"},
+ {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"},
+ {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"},
+ {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"},
+ {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"},
+ {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"},
+ {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"},
+ {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"},
+ {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"},
+ {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"},
+ {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"},
+ {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"},
+ {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"},
+ {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"},
+ {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"},
+ {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"},
+ {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"},
+ {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"},
+ {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"},
+ {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"},
+ {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"},
+ {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"},
+ {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"},
+ {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"},
+ {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"},
+ {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"},
+ {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"},
+ {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"},
+ {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"},
+ {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"},
+ {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"},
+ {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"},
+ {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"},
+ {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"},
+ {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"},
+ {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"},
+ {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"},
+ {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"},
+ {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"},
+ {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"},
+ {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"},
+ {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"},
+ {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"},
+ {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"},
+ {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"},
+ {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"},
+ {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"},
+ {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"},
+ {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"},
+ {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"},
+]
+wsproto = [
+ {file = "wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736"},
+ {file = "wsproto-1.2.0.tar.gz", hash = "sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065"},
+]
+xlrd = [
+ {file = "xlrd-2.0.1-py2.py3-none-any.whl", hash = "sha256:6a33ee89877bd9abc1158129f6e94be74e2679636b8a205b43b85206c3f0bbdd"},
+ {file = "xlrd-2.0.1.tar.gz", hash = "sha256:f72f148f54442c6b056bf931dbc34f986fd0c3b0b6b5a58d013c9aef274d0c88"},
+]
+xlwt = [
+ {file = "xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e"},
+ {file = "xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88"},
+]
+zipp = [
+ {file = "zipp-3.11.0-py3-none-any.whl", hash = "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa"},
+ {file = "zipp-3.11.0.tar.gz", hash = "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766"},
+]
diff --git a/pyproject.toml b/pyproject.toml
index 72e7466c..1bc37d3b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -20,34 +20,33 @@ boto3 = '>=1.17.77'
botocore = '>=1.20.77'
requests = '>=2.25.1'
rich = "^10.7.0"
+django = "4.2"
django-anymail = '>=8.3'
django-filter = '>=2.4.0'
djangorestframework = '>=3.12.4'
django-taggit = "*"
-django-vite = "^1.2.1"
dj-database-url = '>=0.5.0'
groundwork-django = ">=0.1.5"
# groundwork-django = { path = "./groundwork", develop = true }
django-storages = "*"
gunicorn = '>=20.1.0'
-wagtail = "^3.0"
+wagtail = "~5.2"
psycopg2 = '>=2.8.6'
wagtail-transfer = "*"
django-livereload-server = "^0.4"
stripe = "^2.68.0"
django-mathfilters = "^1.0.0"
-django-money = "^2.1.1"
+django-money = "^3"
pre-commit = "^2.17.0"
wagtail-autocomplete = "^0.9"
django-allauth = "^0.50.0"
django-bootstrap5 = "^21.3"
django-countries = "^7.3.2"
django-extensions = "^3.1.5"
-wagtailfontawesome = "^1.2.1"
django-gravatar2 = "^1.4.4"
django-active-link = "^0.1.8"
-wagtailmenus = { git = "https://github.com/commonknowledge/wagtailmenus", rev = "master" }
-django-mjml = "^0.12.0"
+wagtailmenus = "^3.1.9"
+django-mjml = "^1.1"
wagtail-seo = "^2.0.0"
ShopifyAPI = "^11.0.0"
python-dateutil = "^2.8.2"
@@ -70,6 +69,8 @@ selenium = "^4.7.2"
webdriver-manager = "^3.8.5"
wagtail-cache = "^2.2.0"
orjson = "^3.9.2"
+slippers = "^0.6.2"
+django-vite = "^3.0.0"
[tool.poetry.dev-dependencies]
bandit = "^1.7.0"
diff --git a/tailwind.config.js b/tailwind.config.js
index 5748c709..11d23145 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -10,9 +10,9 @@ const {
module.exports = {
prefix: "tw-",
content: [
- "./app/**/*.{py,html,js,ts,tsx}",
+ "./app/templates/**/*.html",
"./frontend/**/*.{html,js,ts,tsx}",
- "./static/**/*.{html,js,ts,tsx}",
+ // "./static/**/*.{html,js,ts,tsx}",
],
theme: {
/*
diff --git a/vite.config.js b/vite.config.js
index 64db2e97..ce8a2e10 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -1,5 +1,4 @@
import { defineConfig } from "vite";
-import purgecss from "@fullhuman/postcss-purgecss";
import tailwindcss from "tailwindcss";
import tailwindNesting from "tailwindcss/nesting";
import postcssImport from "postcss-import";
@@ -18,7 +17,9 @@ export default defineConfig(({ command }) => {
build: {
manifest: true,
emptyOutDir: true,
- polyfillModulePreload: false,
+ modulePreload: {
+ polyfill: command === "build",
+ },
rollupOptions: {
output: {
dir: "vite/",
@@ -39,13 +40,6 @@ export default defineConfig(({ command }) => {
tailwindNesting,
tailwindcss,
autoprefixer,
- // purgecss({
- // content: [
- // "./app/**/*.{py,html,js,ts}",
- // "./frontend/**/*.{html,js,ts}",
- // "./static/**/*.{html,js,ts}",
- // ],
- // }),
],
},
}
diff --git a/yarn.lock b/yarn.lock
index f25fff19..a2d2260b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,11 @@
# yarn lockfile v1
+"@alloc/quick-lru@^5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30"
+ integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
+
"@ampproject/remapping@^2.1.0":
version "2.1.2"
resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34"
@@ -300,6 +305,116 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
+"@esbuild/android-arm64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.7.tgz#646156aea43e8e6723de6e94a4ac07c5aed41be1"
+ integrity sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==
+
+"@esbuild/android-arm@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.7.tgz#0827b49aed813c33ea18ee257c1728cdc4a01030"
+ integrity sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==
+
+"@esbuild/android-x64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.7.tgz#fa294ed5214d88219d519e0ab1bbb0253a89b864"
+ integrity sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==
+
+"@esbuild/darwin-arm64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.7.tgz#e24d2ed545749ff251eabe8bce11fefa688892d3"
+ integrity sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==
+
+"@esbuild/darwin-x64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.7.tgz#02d1f8a572874c90d8f55dde8a859e5145bd06f6"
+ integrity sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==
+
+"@esbuild/freebsd-arm64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.7.tgz#bc6a69b9a7915da278f0a5ebaec069c813982c22"
+ integrity sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==
+
+"@esbuild/freebsd-x64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.7.tgz#ec3708488625d70e565968ceea1355e7c8613865"
+ integrity sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==
+
+"@esbuild/linux-arm64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.7.tgz#8e04b66c306858f92d4f90f8222775270755e88a"
+ integrity sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==
+
+"@esbuild/linux-arm@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.7.tgz#12d5b65e089029ee1fe4c591b60969c9b1a85355"
+ integrity sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==
+
+"@esbuild/linux-ia32@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.7.tgz#01eabc2a3ad9039e115db650268e4f48f910dbe2"
+ integrity sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==
+
+"@esbuild/linux-loong64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.7.tgz#70681113632970e6a5766607bbdb98aa18cf4d5f"
+ integrity sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==
+
+"@esbuild/linux-mips64el@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.7.tgz#f63c022a71a3d70c482d1943a27cb8997021e230"
+ integrity sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==
+
+"@esbuild/linux-ppc64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.7.tgz#614eafd08b0c50212f287b948b3c08d6e60f221f"
+ integrity sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==
+
+"@esbuild/linux-riscv64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.7.tgz#31d3b63f92f65968268a8e61ba59872538e80e88"
+ integrity sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==
+
+"@esbuild/linux-s390x@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.7.tgz#be94974e0caa0783ae05f9477fd7170b9ac29cb0"
+ integrity sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==
+
+"@esbuild/linux-x64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.7.tgz#84e8018a913dd4ecee954623e395984aef3d0007"
+ integrity sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==
+
+"@esbuild/netbsd-x64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.7.tgz#98898ba8800374c9df9bb182ca4f69fcecaf4411"
+ integrity sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==
+
+"@esbuild/openbsd-x64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.7.tgz#46dc4eda2adb51f16361b1ad10e9b3f4938c4573"
+ integrity sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==
+
+"@esbuild/sunos-x64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.7.tgz#1650d40dd88412ecc11490119cd23cbaf661a591"
+ integrity sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==
+
+"@esbuild/win32-arm64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.7.tgz#e61de6c4eb204d83fd912f3ae6812cc8c7d32d25"
+ integrity sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==
+
+"@esbuild/win32-ia32@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.7.tgz#3d9c159d42c67e37a433e44ef8217c661cb6f6d0"
+ integrity sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==
+
+"@esbuild/win32-x64@0.19.7":
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.7.tgz#02c4446f802706098d8e6ee70cf2b7aba96ded0b"
+ integrity sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==
+
"@fullhuman/postcss-purgecss@^4.1.3":
version "4.1.3"
resolved "https://registry.yarnpkg.com/@fullhuman/postcss-purgecss/-/postcss-purgecss-4.1.3.tgz#e4eb21fc7a49257e4081c6a3a86b338618e61fce"
@@ -502,16 +617,40 @@
"@types/yargs" "^16.0.0"
chalk "^4.0.0"
+"@jridgewell/gen-mapping@^0.3.2":
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
+ integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
"@jridgewell/resolve-uri@^3.0.3":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c"
integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==
+"@jridgewell/resolve-uri@^3.1.0":
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
+ integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
+
+"@jridgewell/set-array@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
+ integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
+
"@jridgewell/sourcemap-codec@^1.4.10":
version "1.4.11"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec"
integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==
+"@jridgewell/sourcemap-codec@^1.4.14":
+ version "1.4.15"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
+ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+
"@jridgewell/trace-mapping@^0.3.0":
version "0.3.4"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3"
@@ -520,6 +659,14 @@
"@jridgewell/resolve-uri" "^3.0.3"
"@jridgewell/sourcemap-codec" "^1.4.10"
+"@jridgewell/trace-mapping@^0.3.9":
+ version "0.3.20"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f"
+ integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
"@jvitela/mustache-wax@^1.0.4":
version "1.0.4"
resolved "https://registry.yarnpkg.com/@jvitela/mustache-wax/-/mustache-wax-1.0.4.tgz#18c54e8dc9793e01515674beadf80bd1dfb1dd29"
@@ -606,6 +753,66 @@
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45"
integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==
+"@rollup/rollup-android-arm-eabi@4.5.2":
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.5.2.tgz#fa3e9ba323449f098b8d144ecaa4f044d2ff2ee3"
+ integrity sha512-ee7BudTwwrglFYSc3UnqInDDjCLWHKrFmGNi4aK7jlEyg4CyPa1DCMrZfsN1O13YT76UFEqXz2CoN7BCGpUlJw==
+
+"@rollup/rollup-android-arm64@4.5.2":
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.5.2.tgz#961089fe117ceca642b6432fadd093048da93ae8"
+ integrity sha512-xOuhj9HHtn8128ir8veoQsBbAUBasDbHIBniYTEx02pAmu9EXL+ZjJqngnNEy6ZgZ4h1JwL33GMNu3yJL5Mzow==
+
+"@rollup/rollup-darwin-arm64@4.5.2":
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.5.2.tgz#a8c13123b830aa743f604b732d72b260dd9de0f6"
+ integrity sha512-NTGJWoL8bKyqyWFn9/RzSv4hQ4wTbaAv0lHHRwf4OnpiiP4P8W0jiXbm8Nc5BCXKmWAwuvJY82mcIU2TayC20g==
+
+"@rollup/rollup-darwin-x64@4.5.2":
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.5.2.tgz#ab3a46c846bed784e8f52f253c59dcd70175ef24"
+ integrity sha512-hlKqj7bpPvU15sZo4za14u185lpMzdwWLMc9raMqPK4wywt0wR23y1CaVQ4oAFXat3b5/gmRntyfpwWTKl+vvA==
+
+"@rollup/rollup-linux-arm-gnueabihf@4.5.2":
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.5.2.tgz#aa98197f06d9d795a317152ec8d95e65a369053b"
+ integrity sha512-7ZIZx8c3u+pfI0ohQsft/GywrXez0uR6dUP0JhBuCK3sFO5TfdLn/YApnVkvPxuTv3+YKPIZend9Mt7Cz6sS3Q==
+
+"@rollup/rollup-linux-arm64-gnu@4.5.2":
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.5.2.tgz#a0dc66fa46553b8bb1c96df41ae8308770aebecf"
+ integrity sha512-7Pk/5mO11JW/cH+a8lL/i0ZxmRGrbpYqN0VwO2DHhU+SJWWOH2zE1RAcPaj8KqiwC8DCDIJOSxjV9+9lLb6aeA==
+
+"@rollup/rollup-linux-arm64-musl@4.5.2":
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.5.2.tgz#32117bb51bdd761b8f759c9fed9eab493154cdfd"
+ integrity sha512-KrRnuG5phJx756e62wxvWH2e+TK84MP2IVuPwfge+GBvWqIUfVzFRn09TKruuQBXzZp52Vyma7FjMDkwlA9xpg==
+
+"@rollup/rollup-linux-x64-gnu@4.5.2":
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.5.2.tgz#566cda292f95d6ef995344887217a82e9fd20ad6"
+ integrity sha512-My+53GasPa2D2tU5dXiyHYwrELAUouSfkNlZ3bUKpI7btaztO5vpALEs3mvFjM7aKTvEbc7GQckuXeXIDKQ0fg==
+
+"@rollup/rollup-linux-x64-musl@4.5.2":
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.5.2.tgz#d5dcc18af0388209e11586d3c0c9626ba7577b04"
+ integrity sha512-/f0Q6Sc+Vw54Ws6N8fxaEe4R7at3b8pFyv+O/F2VaQ4hODUJcRUcCBJh6zuqtgQQt7w845VTkGLFgWZkP3tUoQ==
+
+"@rollup/rollup-win32-arm64-msvc@4.5.2":
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.5.2.tgz#b880eb1d349f166939ffbe27cbf1efd2e1923819"
+ integrity sha512-NCKuuZWLht6zj7s6EIFef4BxCRX1GMr83S2W4HPCA0RnJ4iHE4FS1695q6Ewoa6A9nFjJe1//yUu0kgBU07Edw==
+
+"@rollup/rollup-win32-ia32-msvc@4.5.2":
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.5.2.tgz#4b799c851864a10491a4755b5b8eadceae3e9889"
+ integrity sha512-J5zL3riR4AOyU/J3M/i4k/zZ8eP1yT+nTmAKztCXJtnI36jYH0eepvob22mAQ/kLwfsK2TB6dbyVY1F8c/0H5A==
+
+"@rollup/rollup-win32-x64-msvc@4.5.2":
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.5.2.tgz#7e59216d929a6b444304000be40c32d2d127fe4f"
+ integrity sha512-pL0RXRHuuGLhvs7ayX/SAHph1hrDPXOM5anyYUQXWJEENxw3nfHkzv8FfVlEVcLyKPAEgDRkd6RKZq2SMqS/yg==
+
"@sentry/browser@^6.19.7":
version "6.19.7"
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.19.7.tgz#a40b6b72d911b5f1ed70ed3b4e7d4d4e625c0b5f"
@@ -846,21 +1053,12 @@ acorn-globals@^6.0.0:
acorn "^7.1.1"
acorn-walk "^7.1.1"
-acorn-node@^1.6.1:
- version "1.8.2"
- resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8"
- integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==
- dependencies:
- acorn "^7.0.0"
- acorn-walk "^7.0.0"
- xtend "^4.0.2"
-
-acorn-walk@^7.0.0, acorn-walk@^7.1.1:
+acorn-walk@^7.1.1:
version "7.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
-acorn@^7.0.0, acorn@^7.1.1:
+acorn@^7.1.1:
version "7.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
@@ -913,6 +1111,11 @@ ansi-styles@^5.0.0:
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
+any-promise@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
+ integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
+
anymatch@^3.0.3, anymatch@~3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
@@ -921,10 +1124,10 @@ anymatch@^3.0.3, anymatch@~3.1.2:
normalize-path "^3.0.0"
picomatch "^2.0.4"
-arg@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb"
- integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==
+arg@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c"
+ integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
argparse@^1.0.7:
version "1.0.10"
@@ -1301,7 +1504,7 @@ color-name@1.1.3:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-color-name@^1.1.4, color-name@~1.1.4:
+color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
@@ -1318,6 +1521,11 @@ commander@^2.19.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+commander@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
+ integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
+
commander@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
@@ -1457,11 +1665,6 @@ deepmerge@^4.2.2:
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
-defined@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
- integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
-
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@@ -1477,15 +1680,6 @@ detect-node@2.0.4:
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==
-detective@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b"
- integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==
- dependencies:
- acorn-node "^1.6.1"
- defined "^1.0.0"
- minimist "^1.1.1"
-
didyoumean@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
@@ -1600,131 +1794,33 @@ error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-esbuild-android-64@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.27.tgz#b868bbd9955a92309c69df628d8dd1945478b45c"
- integrity sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==
-
-esbuild-android-arm64@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.27.tgz#e7d6430555e8e9c505fd87266bbc709f25f1825c"
- integrity sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==
-
-esbuild-darwin-64@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.27.tgz#4dc7484127564e89b4445c0a560a3cb50b3d68e1"
- integrity sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==
-
-esbuild-darwin-arm64@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.27.tgz#469e59c665f84a8ed323166624c5e7b9b2d22ac1"
- integrity sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==
-
-esbuild-freebsd-64@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.27.tgz#895df03bf5f87094a56c9a5815bf92e591903d70"
- integrity sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==
-
-esbuild-freebsd-arm64@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.27.tgz#0b72a41a6b8655e9a8c5608f2ec1afdcf6958441"
- integrity sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==
-
-esbuild-linux-32@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.27.tgz#43b8ba3803b0bbe7f051869c6a8bf6de1e95de28"
- integrity sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==
-
-esbuild-linux-64@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.27.tgz#dc8072097327ecfadba1735562824ce8c05dd0bd"
- integrity sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==
-
-esbuild-linux-arm64@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.27.tgz#c52b58cbe948426b1559910f521b0a3f396f10b8"
- integrity sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==
-
-esbuild-linux-arm@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.27.tgz#df869dbd67d4ee3a04b3c7273b6bd2b233e78a18"
- integrity sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==
-
-esbuild-linux-mips64le@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.27.tgz#a2b646d9df368b01aa970a7b8968be6dd6b01d19"
- integrity sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==
-
-esbuild-linux-ppc64le@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.27.tgz#9a21af766a0292578a3009c7408b8509cac7cefd"
- integrity sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==
-
-esbuild-linux-riscv64@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.27.tgz#344a27f91568056a5903ad5841b447e00e78d740"
- integrity sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==
-
-esbuild-linux-s390x@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.27.tgz#73a7309bd648a07ef58f069658f989a5096130db"
- integrity sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==
-
-esbuild-netbsd-64@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.27.tgz#482a587cdbd18a6c264a05136596927deb46c30a"
- integrity sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==
-
-esbuild-openbsd-64@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.27.tgz#e99f8cdc63f1628747b63edd124d53cf7796468d"
- integrity sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==
-
-esbuild-sunos-64@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.27.tgz#8611d825bcb8239c78d57452e83253a71942f45c"
- integrity sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==
-
-esbuild-windows-32@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.27.tgz#c06374206d4d92dd31d4fda299b09f51a35e82f6"
- integrity sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==
-
-esbuild-windows-64@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.27.tgz#756631c1d301dfc0d1a887deed2459ce4079582f"
- integrity sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==
-
-esbuild-windows-arm64@0.14.27:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.27.tgz#ad7e187193dcd18768b16065a950f4441d7173f4"
- integrity sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==
-
-esbuild@^0.14.14:
- version "0.14.27"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.27.tgz#41fe0f1b6b68b9f77cac025009bc54bb96e616f1"
- integrity sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==
+esbuild@^0.19.3:
+ version "0.19.7"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.7.tgz#b9a7235097b81278dcf090e2532ed13c95a2ee84"
+ integrity sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==
optionalDependencies:
- esbuild-android-64 "0.14.27"
- esbuild-android-arm64 "0.14.27"
- esbuild-darwin-64 "0.14.27"
- esbuild-darwin-arm64 "0.14.27"
- esbuild-freebsd-64 "0.14.27"
- esbuild-freebsd-arm64 "0.14.27"
- esbuild-linux-32 "0.14.27"
- esbuild-linux-64 "0.14.27"
- esbuild-linux-arm "0.14.27"
- esbuild-linux-arm64 "0.14.27"
- esbuild-linux-mips64le "0.14.27"
- esbuild-linux-ppc64le "0.14.27"
- esbuild-linux-riscv64 "0.14.27"
- esbuild-linux-s390x "0.14.27"
- esbuild-netbsd-64 "0.14.27"
- esbuild-openbsd-64 "0.14.27"
- esbuild-sunos-64 "0.14.27"
- esbuild-windows-32 "0.14.27"
- esbuild-windows-64 "0.14.27"
- esbuild-windows-arm64 "0.14.27"
+ "@esbuild/android-arm" "0.19.7"
+ "@esbuild/android-arm64" "0.19.7"
+ "@esbuild/android-x64" "0.19.7"
+ "@esbuild/darwin-arm64" "0.19.7"
+ "@esbuild/darwin-x64" "0.19.7"
+ "@esbuild/freebsd-arm64" "0.19.7"
+ "@esbuild/freebsd-x64" "0.19.7"
+ "@esbuild/linux-arm" "0.19.7"
+ "@esbuild/linux-arm64" "0.19.7"
+ "@esbuild/linux-ia32" "0.19.7"
+ "@esbuild/linux-loong64" "0.19.7"
+ "@esbuild/linux-mips64el" "0.19.7"
+ "@esbuild/linux-ppc64" "0.19.7"
+ "@esbuild/linux-riscv64" "0.19.7"
+ "@esbuild/linux-s390x" "0.19.7"
+ "@esbuild/linux-x64" "0.19.7"
+ "@esbuild/netbsd-x64" "0.19.7"
+ "@esbuild/openbsd-x64" "0.19.7"
+ "@esbuild/sunos-x64" "0.19.7"
+ "@esbuild/win32-arm64" "0.19.7"
+ "@esbuild/win32-ia32" "0.19.7"
+ "@esbuild/win32-x64" "0.19.7"
escalade@^3.1.1:
version "3.1.1"
@@ -1803,10 +1899,10 @@ expect@^27.5.1:
jest-matcher-utils "^27.5.1"
jest-message-util "^27.5.1"
-fast-glob@^3.2.11:
- version "3.2.11"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
- integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
+fast-glob@^3.3.0:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
+ integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
dependencies:
"@nodelib/fs.stat" "^2.0.2"
"@nodelib/fs.walk" "^1.2.3"
@@ -1882,11 +1978,21 @@ fsevents@^2.3.2, fsevents@~2.3.2:
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+fsevents@~2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+function-bind@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
@@ -1931,6 +2037,18 @@ glob-parent@^6.0.2:
dependencies:
is-glob "^4.0.3"
+glob@7.1.6:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.7:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
@@ -1980,6 +2098,13 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
+hasown@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c"
+ integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
+ dependencies:
+ function-bind "^1.1.2"
+
he@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
@@ -2120,6 +2245,13 @@ is-binary-path@~2.1.0:
dependencies:
binary-extensions "^2.0.0"
+is-core-module@^2.13.0:
+ version "2.13.1"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384"
+ integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
+ dependencies:
+ hasown "^2.0.0"
+
is-core-module@^2.8.1:
version "2.8.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
@@ -2621,6 +2753,11 @@ jest@^27.5.1:
import-local "^3.0.2"
jest-cli "^27.5.1"
+jiti@^1.19.1:
+ version "1.21.0"
+ resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d"
+ integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==
+
js-beautify@^1.6.14:
version "1.14.3"
resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.3.tgz#3dd11c949178de7f3bdf3f6f752778d3bed95150"
@@ -2726,10 +2863,15 @@ levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
-lilconfig@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25"
- integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==
+lilconfig@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
+ integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
+
+lilconfig@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc"
+ integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==
lines-and-columns@^1.1.6:
version "1.2.4"
@@ -2847,7 +2989,7 @@ merge2@^1.3.0:
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-micromatch@^4.0.4:
+micromatch@^4.0.4, micromatch@^4.0.5:
version "4.0.5"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
@@ -2884,7 +3026,7 @@ minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
-minimist@^1.1.1, minimist@^1.2.6:
+minimist@^1.2.6:
version "1.2.6"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
@@ -3236,11 +3378,25 @@ mustache@^4.2.0:
resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64"
integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==
+mz@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
+ integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
+ dependencies:
+ any-promise "^1.0.0"
+ object-assign "^4.0.1"
+ thenify-all "^1.0.0"
+
nanoid@^3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35"
integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==
+nanoid@^3.3.6:
+ version "3.3.7"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
+ integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
+
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -3319,6 +3475,11 @@ nwsapi@^2.2.0:
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
+object-assign@^4.0.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
object-hash@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"
@@ -3470,6 +3631,11 @@ pify@^2.3.0:
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+pirates@^4.0.1:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
+ integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
+
pirates@^4.0.4:
version "4.0.5"
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b"
@@ -3491,32 +3657,41 @@ postcss-import@^14.1.0:
read-cache "^1.0.0"
resolve "^1.1.7"
-postcss-js@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00"
- integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==
+postcss-import@^15.1.0:
+ version "15.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70"
+ integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==
+ dependencies:
+ postcss-value-parser "^4.0.0"
+ read-cache "^1.0.0"
+ resolve "^1.1.7"
+
+postcss-js@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2"
+ integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==
dependencies:
camelcase-css "^2.0.1"
-postcss-load-config@^3.1.4:
- version "3.1.4"
- resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855"
- integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==
+postcss-load-config@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3"
+ integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==
dependencies:
- lilconfig "^2.0.5"
- yaml "^1.10.2"
+ lilconfig "^3.0.0"
+ yaml "^2.3.4"
-postcss-nested@5.0.6:
- version "5.0.6"
- resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc"
- integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==
+postcss-nested@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c"
+ integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==
dependencies:
- postcss-selector-parser "^6.0.6"
+ postcss-selector-parser "^6.0.11"
-postcss-selector-parser@^6.0.10:
- version "6.0.10"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d"
- integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==
+postcss-selector-parser@^6.0.11:
+ version "6.0.13"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b"
+ integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
@@ -3534,7 +3709,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-postcss@^8.3.5, postcss@^8.4.12, postcss@^8.4.6:
+postcss@^8.3.5, postcss@^8.4.12:
version "8.4.12"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905"
integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==
@@ -3543,6 +3718,15 @@ postcss@^8.3.5, postcss@^8.4.12, postcss@^8.4.6:
picocolors "^1.0.0"
source-map-js "^1.0.2"
+postcss@^8.4.23, postcss@^8.4.31:
+ version "8.4.31"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
+ integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
+ dependencies:
+ nanoid "^3.3.6"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
posthog-js@^1.21.1:
version "1.21.1"
resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.21.1.tgz#3f4242c2832b7fc80b4a177b0d0e1b71da2b8272"
@@ -3624,11 +3808,6 @@ queue-microtask@^1.2.2:
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-quick-lru@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
- integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
-
quickselect@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018"
@@ -3692,7 +3871,7 @@ resolve.exports@^1.1.0:
resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9"
integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==
-resolve@^1.1.7, resolve@^1.20.0, resolve@^1.22.0:
+resolve@^1.1.7, resolve@^1.20.0:
version "1.22.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
@@ -3701,6 +3880,15 @@ resolve@^1.1.7, resolve@^1.20.0, resolve@^1.22.0:
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
+resolve@^1.22.2:
+ version "1.22.8"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
+ integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
+ dependencies:
+ is-core-module "^2.13.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
reusify@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
@@ -3713,11 +3901,23 @@ rimraf@^3.0.0:
dependencies:
glob "^7.1.3"
-rollup@^2.59.0:
- version "2.61.0"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.61.0.tgz#ccd927bcd6cc0c78a4689c918627a717977208f4"
- integrity sha512-teQ+T1mUYbyvGyUavCodiyA9hD4DxwYZJwr/qehZGhs1Z49vsmzelMVYMxGU4ZhGRKxYPupHuz5yzm/wj7VpWA==
+rollup@^4.2.0:
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.5.2.tgz#2cf0ef0a57cb4038c50a66356684fd30071d0595"
+ integrity sha512-CRK1uoROBfkcqrZKyaFcqCcZWNsvJ6yVYZkqTlRocZhO2s5yER6Z3f/QaYtO8RGyloPnmhwgzuPQpNGeK210xQ==
optionalDependencies:
+ "@rollup/rollup-android-arm-eabi" "4.5.2"
+ "@rollup/rollup-android-arm64" "4.5.2"
+ "@rollup/rollup-darwin-arm64" "4.5.2"
+ "@rollup/rollup-darwin-x64" "4.5.2"
+ "@rollup/rollup-linux-arm-gnueabihf" "4.5.2"
+ "@rollup/rollup-linux-arm64-gnu" "4.5.2"
+ "@rollup/rollup-linux-arm64-musl" "4.5.2"
+ "@rollup/rollup-linux-x64-gnu" "4.5.2"
+ "@rollup/rollup-linux-x64-musl" "4.5.2"
+ "@rollup/rollup-win32-arm64-msvc" "4.5.2"
+ "@rollup/rollup-win32-ia32-msvc" "4.5.2"
+ "@rollup/rollup-win32-x64-msvc" "4.5.2"
fsevents "~2.3.2"
rrweb-snapshot@^1.1.14:
@@ -3922,6 +4122,19 @@ strip-json-comments@^3.1.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+sucrase@^3.32.0:
+ version "3.34.0"
+ resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f"
+ integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.2"
+ commander "^4.0.0"
+ glob "7.1.6"
+ lines-and-columns "^1.1.6"
+ mz "^2.7.0"
+ pirates "^4.0.1"
+ ts-interface-checker "^0.1.9"
+
supercluster@^7.1.4:
version "7.1.5"
resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-7.1.5.tgz#65a6ce4a037a972767740614c19051b64b8be5a3"
@@ -3968,32 +4181,33 @@ symbol-tree@^3.2.4:
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
-tailwindcss@^3.0.24:
- version "3.0.24"
- resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.0.24.tgz#22e31e801a44a78a1d9a81ecc52e13b69d85704d"
- integrity sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig==
+tailwindcss@^3.3.5:
+ version "3.3.5"
+ resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.5.tgz#22a59e2fbe0ecb6660809d9cc5f3976b077be3b8"
+ integrity sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==
dependencies:
- arg "^5.0.1"
+ "@alloc/quick-lru" "^5.2.0"
+ arg "^5.0.2"
chokidar "^3.5.3"
- color-name "^1.1.4"
- detective "^5.2.0"
didyoumean "^1.2.2"
dlv "^1.1.3"
- fast-glob "^3.2.11"
+ fast-glob "^3.3.0"
glob-parent "^6.0.2"
is-glob "^4.0.3"
- lilconfig "^2.0.5"
+ jiti "^1.19.1"
+ lilconfig "^2.1.0"
+ micromatch "^4.0.5"
normalize-path "^3.0.0"
object-hash "^3.0.0"
picocolors "^1.0.0"
- postcss "^8.4.12"
- postcss-js "^4.0.0"
- postcss-load-config "^3.1.4"
- postcss-nested "5.0.6"
- postcss-selector-parser "^6.0.10"
- postcss-value-parser "^4.2.0"
- quick-lru "^5.1.1"
- resolve "^1.22.0"
+ postcss "^8.4.23"
+ postcss-import "^15.1.0"
+ postcss-js "^4.0.1"
+ postcss-load-config "^4.0.1"
+ postcss-nested "^6.0.1"
+ postcss-selector-parser "^6.0.11"
+ resolve "^1.22.2"
+ sucrase "^3.32.0"
terminal-link@^2.0.0:
version "2.1.1"
@@ -4012,6 +4226,20 @@ test-exclude@^6.0.0:
glob "^7.1.4"
minimatch "^3.0.4"
+thenify-all@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
+ integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
+ dependencies:
+ thenify ">= 3.1.0 < 4"
+
+"thenify@>= 3.1.0 < 4":
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f"
+ integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
+ dependencies:
+ any-promise "^1.0.0"
+
throat@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375"
@@ -4060,6 +4288,11 @@ tr46@~0.0.3:
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
+ts-interface-checker@^0.1.9:
+ version "0.1.13"
+ resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
+ integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
+
ts-jest@^27.1.4:
version "27.1.4"
resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.4.tgz#84d42cf0f4e7157a52e7c64b1492c46330943e00"
@@ -4166,17 +4399,16 @@ valid-data-url@^3.0.0:
resolved "https://registry.yarnpkg.com/valid-data-url/-/valid-data-url-3.0.1.tgz#826c1744e71b5632e847dd15dbd45b9fb38aa34f"
integrity sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==
-vite@^2.8.6:
- version "2.8.6"
- resolved "https://registry.yarnpkg.com/vite/-/vite-2.8.6.tgz#32d50e23c99ca31b26b8ccdc78b1d72d4d7323d3"
- integrity sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==
+vite@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.2.tgz#3c94627dace83b9bf04b64eaf618038e30fb95c0"
+ integrity sha512-6CCq1CAJCNM1ya2ZZA7+jS2KgnhbzvxakmlIjN24cF/PXhRMzpM/z8QgsVJA/Dm5fWUWnVEsmtBoMhmerPxT0g==
dependencies:
- esbuild "^0.14.14"
- postcss "^8.4.6"
- resolve "^1.22.0"
- rollup "^2.59.0"
+ esbuild "^0.19.3"
+ postcss "^8.4.31"
+ rollup "^4.2.0"
optionalDependencies:
- fsevents "~2.3.2"
+ fsevents "~2.3.3"
vt-pbf@^3.1.3:
version "3.1.3"
@@ -4315,11 +4547,6 @@ xmlchars@^2.2.0:
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
-xtend@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
- integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
-
y18n@^5.0.5:
version "5.0.8"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
@@ -4335,10 +4562,10 @@ yallist@^4.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-yaml@^1.10.2:
- version "1.10.2"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
- integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+yaml@^2.3.4:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2"
+ integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==
yargs-parser@20.x, yargs-parser@^20.2.2:
version "20.2.9"