├── email_project ├── db.sqlite3 ├── email_project │ ├── __init__.py │ ├── wsgi.py │ ├── urls.py │ └── settings.py ├── email_sender_app │ ├── __init__.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ ├── admin.py │ ├── apps.py │ ├── urls.py │ ├── templates │ │ └── email_sender_app │ │ │ └── message.html │ └── views.py └── manage.py ├── .gitignore ├── images ├── setup_app_pwd.jpg └── path_to_app_pwd.png ├── Pipfile ├── change.log ├── README.md └── Pipfile.lock /email_project/db.sqlite3: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.DS_Store 2 | *.idea/ -------------------------------------------------------------------------------- /email_project/email_project/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /email_project/email_sender_app/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /email_project/email_sender_app/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /email_project/email_sender_app/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /email_project/email_sender_app/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /email_project/email_sender_app/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /images/setup_app_pwd.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sukanya-pai/Django-Email-Sender/HEAD/images/setup_app_pwd.jpg -------------------------------------------------------------------------------- /images/path_to_app_pwd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sukanya-pai/Django-Email-Sender/HEAD/images/path_to_app_pwd.png -------------------------------------------------------------------------------- /email_project/email_sender_app/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class EmailProjConfig(AppConfig): 5 | name = 'email_sender_app' 6 | -------------------------------------------------------------------------------- /email_project/email_sender_app/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path, include 2 | from rest_framework import routers 3 | from . import views 4 | 5 | urlpatterns = [ 6 | path('send-mail', views.index), 7 | ] -------------------------------------------------------------------------------- /email_project/email_project/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for email_project project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'email_project.settings') 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /email_project/email_sender_app/templates/email_sender_app/message.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |

Hi {{name|default:"All,"}} 4 | 5 |

6 | {{body}} 7 |

8 |

9 | Thanks and Regards, 10 |

11 |

12 | {{sign}} 13 |

14 |
15 |
-------------------------------------------------------------------------------- /Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | name = "pypi" 3 | url = "https://pypi.org/simple" 4 | verify_ssl = true 5 | 6 | [dev-packages] 7 | flake8 = "*" 8 | 9 | [packages] 10 | django = '<3' 11 | djangorestframework = "*" 12 | django-rest-swagger = "*" 13 | django-allauth = "*" 14 | django-cors-headers = "*" 15 | django-rest-auth = "*" 16 | django-silk = "*" 17 | djangorestframework-simplejwt = "*" 18 | djangorestframework-jwt = "*" 19 | jsonfield = "*" 20 | django-ftpserver = "*" 21 | django-storages = "*" 22 | kombu = "*" 23 | 24 | 25 | [requires] 26 | python_version = "3.8" 27 | -------------------------------------------------------------------------------- /email_project/manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """Django's command-line utility for administrative tasks.""" 3 | import os 4 | import sys 5 | 6 | 7 | def main(): 8 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'email_project.settings') 9 | try: 10 | from django.core.management import execute_from_command_line 11 | except ImportError as exc: 12 | raise ImportError( 13 | "Couldn't import Django. Are you sure it's installed and " 14 | "available on your PYTHONPATH environment variable? Did you " 15 | "forget to activate a virtual environment?" 16 | ) from exc 17 | execute_from_command_line(sys.argv) 18 | 19 | 20 | if __name__ == '__main__': 21 | main() 22 | -------------------------------------------------------------------------------- /change.log: -------------------------------------------------------------------------------- 1 | Previously: 2 | - The project used Python 3.7 3 | - The code to send the email was present in "email_proj" app. 4 | - The endpoint was http://127.0.0.1:8000/api 5 | - It made use of Google "Less secure app access" option of the Google Account. Google has now disabled this option as part of security measures. 6 | 7 | In this version: 8 | - Updated Python to v3.8 9 | - The Django app name is updated from "email_proj" to "email_sender_app" 10 | - Updated endpoint to from http://127.0.0.1:8000/api to http://127.0.0.1:8000/api/send-mail 11 | - Added TODO comments so that its easy to identify where the developer has to make changes 12 | - Updated README with steps to use Google App password instead of "Less secure app access" of Google. 13 | - Removed unnecessary imports and comments and added .gitignore file 14 | 15 | -------------------------------------------------------------------------------- /email_project/email_project/urls.py: -------------------------------------------------------------------------------- 1 | """email_project URL Configuration 2 | 3 | The `urlpatterns` list routes URLs to views. For more information please see: 4 | https://docs.djangoproject.com/en/2.2/topics/http/urls/ 5 | Examples: 6 | Function views 7 | 1. Add an import: from my_app import views 8 | 2. Add a URL to urlpatterns: path('', views.home, name='home') 9 | Class-based views 10 | 1. Add an import: from other_app.views import Home 11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') 12 | Including another URLconf 13 | 1. Import the include() function: from django.urls import include, path 14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 15 | """ 16 | from django.contrib import admin 17 | from django.urls import path, include 18 | 19 | urlpatterns = [ 20 | path('admin/', admin.site.urls), 21 | path('api/',include('email_sender_app.urls')) 22 | ] 23 | -------------------------------------------------------------------------------- /email_project/email_sender_app/views.py: -------------------------------------------------------------------------------- 1 | from rest_framework import viewsets 2 | from rest_framework.decorators import api_view, permission_classes 3 | from rest_framework.views import APIView 4 | from rest_framework.response import Response 5 | from rest_framework.parsers import JSONParser 6 | from rest_framework.renderers import JSONRenderer 7 | import json 8 | from django.http import Http404, HttpResponseBadRequest 9 | from django.http import JsonResponse 10 | from django.core import serializers 11 | from rest_framework import status 12 | 13 | from rest_framework import generics 14 | from rest_framework import viewsets 15 | 16 | from django.http import HttpResponse 17 | import traceback 18 | from django.core.mail import send_mail 19 | from django.template import loader 20 | 21 | 22 | def index(request): 23 | # inject the respective values in HTML template 24 | html_message = loader.render_to_string( 25 | 'email_sender_app/message.html', 26 | { 27 | # TODO: Enter the recipient name 28 | 'name': 'Recipient Name', 29 | # TODO: Update with your own body 30 | 'body': 'This email is to verify whether we can send email in Django from Gmail account.', 31 | # TODO: Update the signature 32 | 'sign': 'Sender', 33 | }) 34 | send_mail( 35 | 'Congratulations!', 36 | 'You are lucky to receive this mail.', 37 | 'from@example.com', # TODO: Update this with your mail id 38 | ['to@example.com'], # TODO: Update this with the recipients mail id 39 | html_message=html_message, 40 | fail_silently=False, 41 | ) 42 | 43 | return HttpResponse("Mail Sent!!") 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Django-Email-Sender 2 | Send email from Gmail Id in Django using HTML Template 3 | 4 | ## Pre-Requisites 5 | - Python 3.8 6 | - Pip 7 | - Git 8 | 9 | ## Steps to run: 10 | 11 | - Clone the project using the command **git clone https://github.com/sukanya-pai/Django-Email-Sender.git** 12 | 13 | - In PipFile, the dependencies are mentioned. It is recommended to run the app inside a virtual environment to avoid conflict of existing dependencies. 14 | 15 | - Run the command `pip install pipenv` 16 | 17 | - Run `pipenv shell`. Creates virtual env 18 | 19 | - Run `pipenv install`. Installs dependencies from the PipFile and creates PipFile.lock 20 | 21 | - Run `python email_project/manage.py runserver` to start the server 22 | 23 | - Open [http://127.0.0.1:8000/api/send-mail](http://127.0.0.1:8000/api/send-mail) to start 24 | 25 | - Make changes in the **views.py** file of the **email_sender_app** directory inside the `send_mail()` method to add your *mail address* and the *recipients mail address* accordingly. 26 | 27 | - Make changes in the **settings.py** of the **email_project** directory file with your **gmail id** and **your app password**. 28 | 29 | - Since this is a demo project, the password is written directly in settings.py. For security reasons of your account, it is recommended you store the password in key vault or encrypt it and then host the application or push your changes to GitHub. 30 | 31 | - Read [change log](change.log) to see what has changed. 32 | 33 | ## Mandatory changes to be done in Host Gmail account 34 | - Go to https://myaccount.google.com/security 35 | 36 | - Scroll till you find **Signing in to Google** 37 | 38 | - In that section, you will see the "App Passwords" option as shown in the below image. 39 | 40 | ![img.png](images/path_to_app_pwd.png) 41 | 42 | - When you click on **App Passwords**, you will be asked to enter your Gmail account password. Enter it and the page would open: 43 | 44 | - Follow the below steps as shown in the image to setup your app password. 45 | 46 | ![SetupAppPassword](images/setup_app_pwd.jpg) 47 | 48 | - Only if you follow the above steps, then you can send mail from your Gmail account using your django code. 49 | -------------------------------------------------------------------------------- /email_project/email_project/settings.py: -------------------------------------------------------------------------------- 1 | """ 2 | Django settings for email_project project. 3 | 4 | Generated by 'django-admin startproject' using Django 2.2.12. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/2.2/topics/settings/ 8 | 9 | For the full list of settings and their values, see 10 | https://docs.djangoproject.com/en/2.2/ref/settings/ 11 | """ 12 | 13 | import os 14 | 15 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 16 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 17 | 18 | # Quick-start development settings - unsuitable for production 19 | # See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/ 20 | 21 | # SECURITY WARNING: keep the secret key used in production secret! 22 | SECRET_KEY = 'hvix&g1a(f_o3=)kw!p!72o!3n(cm1-gv!z!&=k_mx+%qh7$$h' 23 | 24 | # SECURITY WARNING: don't run with debug turned on in production! 25 | DEBUG = True 26 | 27 | ALLOWED_HOSTS = [] 28 | 29 | # Application definition 30 | 31 | INSTALLED_APPS = [ 32 | 'django.contrib.admin', 33 | 'django.contrib.auth', 34 | 'django.contrib.contenttypes', 35 | 'django.contrib.sessions', 36 | 'django.contrib.messages', 37 | 'django.contrib.staticfiles', 38 | 'email_sender_app' # Write app name here 39 | ] 40 | 41 | MIDDLEWARE = [ 42 | 'django.middleware.security.SecurityMiddleware', 43 | 'django.contrib.sessions.middleware.SessionMiddleware', 44 | 'django.middleware.common.CommonMiddleware', 45 | 'django.middleware.csrf.CsrfViewMiddleware', 46 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 47 | 'django.contrib.messages.middleware.MessageMiddleware', 48 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 49 | ] 50 | 51 | ROOT_URLCONF = 'email_project.urls' 52 | 53 | TEMPLATES = [ 54 | { 55 | 'BACKEND': 'django.template.backends.django.DjangoTemplates', 56 | 'DIRS': [], 57 | 'APP_DIRS': True, 58 | 'OPTIONS': { 59 | 'context_processors': [ 60 | 'django.template.context_processors.debug', 61 | 'django.template.context_processors.request', 62 | 'django.contrib.auth.context_processors.auth', 63 | 'django.contrib.messages.context_processors.messages', 64 | ], 65 | }, 66 | }, 67 | ] 68 | 69 | WSGI_APPLICATION = 'email_project.wsgi.application' 70 | 71 | # Database 72 | # https://docs.djangoproject.com/en/2.2/ref/settings/#databases 73 | 74 | DATABASES = { 75 | 'default': { 76 | 'ENGINE': 'django.db.backends.sqlite3', 77 | 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 78 | } 79 | } 80 | 81 | # Password validation 82 | # https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators 83 | 84 | AUTH_PASSWORD_VALIDATORS = [ 85 | { 86 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 87 | }, 88 | { 89 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 90 | }, 91 | { 92 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 93 | }, 94 | { 95 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 96 | }, 97 | ] 98 | 99 | # Internationalization 100 | # https://docs.djangoproject.com/en/2.2/topics/i18n/ 101 | 102 | LANGUAGE_CODE = 'en-us' 103 | 104 | TIME_ZONE = 'UTC' 105 | 106 | USE_I18N = True 107 | 108 | USE_L10N = True 109 | 110 | USE_TZ = True 111 | 112 | # Static files (CSS, JavaScript, Images) 113 | # https://docs.djangoproject.com/en/2.2/howto/static-files/ 114 | 115 | STATIC_URL = '/static/' 116 | 117 | # EMAIL Related 118 | 119 | EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 120 | EMAIL_HOST_USER = 'yourmail@gmail.com' # TODO: Your email 121 | EMAIL_HOST = 'smtp.gmail.com' 122 | EMAIL_PORT = 587 123 | EMAIL_HOST_PASSWORD = '' # TODO: Give APP Password here 124 | EMAIL_USE_TLS = True 125 | -------------------------------------------------------------------------------- /Pipfile.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_meta": { 3 | "hash": { 4 | "sha256": "804007a57ed3941d2a9373df16e0ce33cdbac900d29a0efa32d24f69a1dd8358" 5 | }, 6 | "pipfile-spec": 6, 7 | "requires": { 8 | "python_version": "3.8" 9 | }, 10 | "sources": [ 11 | { 12 | "name": "pypi", 13 | "url": "https://pypi.org/simple", 14 | "verify_ssl": true 15 | } 16 | ] 17 | }, 18 | "default": { 19 | "amqp": { 20 | "hashes": [ 21 | "sha256:2c1b13fecc0893e946c65cbd5f36427861cffa4ea2201d8f6fca22e2a373b5e2", 22 | "sha256:6f0956d2c23d8fa6e7691934d8c3930eadb44972cbbd1a7ae3a520f735d43359" 23 | ], 24 | "markers": "python_version >= '3.6'", 25 | "version": "==5.1.1" 26 | }, 27 | "autopep8": { 28 | "hashes": [ 29 | "sha256:067959ca4a07b24dbd5345efa8325f5f58da4298dab0dde0443d5ed765de80cb", 30 | "sha256:2913064abd97b3419d1cc83ea71f042cb821f87e45b9c88cad5ad3c4ea87fe0c" 31 | ], 32 | "markers": "python_version >= '3.6'", 33 | "version": "==2.0.4" 34 | }, 35 | "certifi": { 36 | "hashes": [ 37 | "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082", 38 | "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9" 39 | ], 40 | "index": "pypi", 41 | "markers": "python_version >= '3.6'", 42 | "version": "==2023.7.22" 43 | }, 44 | "cffi": { 45 | "hashes": [ 46 | "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc", 47 | "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a", 48 | "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417", 49 | "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab", 50 | "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520", 51 | "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36", 52 | "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743", 53 | "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8", 54 | "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed", 55 | "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684", 56 | "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56", 57 | "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324", 58 | "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d", 59 | "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235", 60 | "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e", 61 | "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088", 62 | "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000", 63 | "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7", 64 | "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e", 65 | "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673", 66 | "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c", 67 | "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe", 68 | "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2", 69 | "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098", 70 | "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8", 71 | "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a", 72 | "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0", 73 | "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b", 74 | "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896", 75 | "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e", 76 | "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9", 77 | "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2", 78 | "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b", 79 | "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6", 80 | "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404", 81 | "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f", 82 | "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0", 83 | "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4", 84 | "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc", 85 | "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936", 86 | "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba", 87 | "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872", 88 | "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb", 89 | "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614", 90 | "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1", 91 | "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d", 92 | "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969", 93 | "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b", 94 | "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4", 95 | "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627", 96 | "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956", 97 | "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357" 98 | ], 99 | "markers": "python_version >= '3.8'", 100 | "version": "==1.16.0" 101 | }, 102 | "charset-normalizer": { 103 | "hashes": [ 104 | "sha256:06cf46bdff72f58645434d467bf5228080801298fbba19fe268a01b4534467f5", 105 | "sha256:0c8c61fb505c7dad1d251c284e712d4e0372cef3b067f7ddf82a7fa82e1e9a93", 106 | "sha256:10b8dd31e10f32410751b3430996f9807fc4d1587ca69772e2aa940a82ab571a", 107 | "sha256:1171ef1fc5ab4693c5d151ae0fdad7f7349920eabbaca6271f95969fa0756c2d", 108 | "sha256:17a866d61259c7de1bdadef418a37755050ddb4b922df8b356503234fff7932c", 109 | "sha256:1d6bfc32a68bc0933819cfdfe45f9abc3cae3877e1d90aac7259d57e6e0f85b1", 110 | "sha256:1ec937546cad86d0dce5396748bf392bb7b62a9eeb8c66efac60e947697f0e58", 111 | "sha256:223b4d54561c01048f657fa6ce41461d5ad8ff128b9678cfe8b2ecd951e3f8a2", 112 | "sha256:2465aa50c9299d615d757c1c888bc6fef384b7c4aec81c05a0172b4400f98557", 113 | "sha256:28f512b9a33235545fbbdac6a330a510b63be278a50071a336afc1b78781b147", 114 | "sha256:2c092be3885a1b7899cd85ce24acedc1034199d6fca1483fa2c3a35c86e43041", 115 | "sha256:2c4c99f98fc3a1835af8179dcc9013f93594d0670e2fa80c83aa36346ee763d2", 116 | "sha256:31445f38053476a0c4e6d12b047b08ced81e2c7c712e5a1ad97bc913256f91b2", 117 | "sha256:31bbaba7218904d2eabecf4feec0d07469284e952a27400f23b6628439439fa7", 118 | "sha256:34d95638ff3613849f473afc33f65c401a89f3b9528d0d213c7037c398a51296", 119 | "sha256:352a88c3df0d1fa886562384b86f9a9e27563d4704ee0e9d56ec6fcd270ea690", 120 | "sha256:39b70a6f88eebe239fa775190796d55a33cfb6d36b9ffdd37843f7c4c1b5dc67", 121 | "sha256:3c66df3f41abee950d6638adc7eac4730a306b022570f71dd0bd6ba53503ab57", 122 | "sha256:3f70fd716855cd3b855316b226a1ac8bdb3caf4f7ea96edcccc6f484217c9597", 123 | "sha256:3f9bc2ce123637a60ebe819f9fccc614da1bcc05798bbbaf2dd4ec91f3e08846", 124 | "sha256:3fb765362688821404ad6cf86772fc54993ec11577cd5a92ac44b4c2ba52155b", 125 | "sha256:45f053a0ece92c734d874861ffe6e3cc92150e32136dd59ab1fb070575189c97", 126 | "sha256:46fb9970aa5eeca547d7aa0de5d4b124a288b42eaefac677bde805013c95725c", 127 | "sha256:4cb50a0335382aac15c31b61d8531bc9bb657cfd848b1d7158009472189f3d62", 128 | "sha256:4e12f8ee80aa35e746230a2af83e81bd6b52daa92a8afaef4fea4a2ce9b9f4fa", 129 | "sha256:4f3100d86dcd03c03f7e9c3fdb23d92e32abbca07e7c13ebd7ddfbcb06f5991f", 130 | "sha256:4f6e2a839f83a6a76854d12dbebde50e4b1afa63e27761549d006fa53e9aa80e", 131 | "sha256:4f861d94c2a450b974b86093c6c027888627b8082f1299dfd5a4bae8e2292821", 132 | "sha256:501adc5eb6cd5f40a6f77fbd90e5ab915c8fd6e8c614af2db5561e16c600d6f3", 133 | "sha256:520b7a142d2524f999447b3a0cf95115df81c4f33003c51a6ab637cbda9d0bf4", 134 | "sha256:548eefad783ed787b38cb6f9a574bd8664468cc76d1538215d510a3cd41406cb", 135 | "sha256:555fe186da0068d3354cdf4bbcbc609b0ecae4d04c921cc13e209eece7720727", 136 | "sha256:55602981b2dbf8184c098bc10287e8c245e351cd4fdcad050bd7199d5a8bf514", 137 | "sha256:58e875eb7016fd014c0eea46c6fa92b87b62c0cb31b9feae25cbbe62c919f54d", 138 | "sha256:5a3580a4fdc4ac05f9e53c57f965e3594b2f99796231380adb2baaab96e22761", 139 | "sha256:5b70bab78accbc672f50e878a5b73ca692f45f5b5e25c8066d748c09405e6a55", 140 | "sha256:5ceca5876032362ae73b83347be8b5dbd2d1faf3358deb38c9c88776779b2e2f", 141 | "sha256:61f1e3fb621f5420523abb71f5771a204b33c21d31e7d9d86881b2cffe92c47c", 142 | "sha256:633968254f8d421e70f91c6ebe71ed0ab140220469cf87a9857e21c16687c034", 143 | "sha256:63a6f59e2d01310f754c270e4a257426fe5a591dc487f1983b3bbe793cf6bac6", 144 | "sha256:63accd11149c0f9a99e3bc095bbdb5a464862d77a7e309ad5938fbc8721235ae", 145 | "sha256:6db3cfb9b4fcecb4390db154e75b49578c87a3b9979b40cdf90d7e4b945656e1", 146 | "sha256:71ef3b9be10070360f289aea4838c784f8b851be3ba58cf796262b57775c2f14", 147 | "sha256:7ae8e5142dcc7a49168f4055255dbcced01dc1714a90a21f87448dc8d90617d1", 148 | "sha256:7b6cefa579e1237ce198619b76eaa148b71894fb0d6bcf9024460f9bf30fd228", 149 | "sha256:800561453acdecedaac137bf09cd719c7a440b6800ec182f077bb8e7025fb708", 150 | "sha256:82ca51ff0fc5b641a2d4e1cc8c5ff108699b7a56d7f3ad6f6da9dbb6f0145b48", 151 | "sha256:851cf693fb3aaef71031237cd68699dded198657ec1e76a76eb8be58c03a5d1f", 152 | "sha256:854cc74367180beb327ab9d00f964f6d91da06450b0855cbbb09187bcdb02de5", 153 | "sha256:87071618d3d8ec8b186d53cb6e66955ef2a0e4fa63ccd3709c0c90ac5a43520f", 154 | "sha256:871d045d6ccc181fd863a3cd66ee8e395523ebfbc57f85f91f035f50cee8e3d4", 155 | "sha256:8aee051c89e13565c6bd366813c386939f8e928af93c29fda4af86d25b73d8f8", 156 | "sha256:8af5a8917b8af42295e86b64903156b4f110a30dca5f3b5aedea123fbd638bff", 157 | "sha256:8ec8ef42c6cd5856a7613dcd1eaf21e5573b2185263d87d27c8edcae33b62a61", 158 | "sha256:91e43805ccafa0a91831f9cd5443aa34528c0c3f2cc48c4cb3d9a7721053874b", 159 | "sha256:9505dc359edb6a330efcd2be825fdb73ee3e628d9010597aa1aee5aa63442e97", 160 | "sha256:985c7965f62f6f32bf432e2681173db41336a9c2611693247069288bcb0c7f8b", 161 | "sha256:9a74041ba0bfa9bc9b9bb2cd3238a6ab3b7618e759b41bd15b5f6ad958d17605", 162 | "sha256:9edbe6a5bf8b56a4a84533ba2b2f489d0046e755c29616ef8830f9e7d9cf5728", 163 | "sha256:a15c1fe6d26e83fd2e5972425a772cca158eae58b05d4a25a4e474c221053e2d", 164 | "sha256:a66bcdf19c1a523e41b8e9d53d0cedbfbac2e93c649a2e9502cb26c014d0980c", 165 | "sha256:ae4070f741f8d809075ef697877fd350ecf0b7c5837ed68738607ee0a2c572cf", 166 | "sha256:ae55d592b02c4349525b6ed8f74c692509e5adffa842e582c0f861751701a673", 167 | "sha256:b578cbe580e3b41ad17b1c428f382c814b32a6ce90f2d8e39e2e635d49e498d1", 168 | "sha256:b891a2f68e09c5ef989007fac11476ed33c5c9994449a4e2c3386529d703dc8b", 169 | "sha256:baec8148d6b8bd5cee1ae138ba658c71f5b03e0d69d5907703e3e1df96db5e41", 170 | "sha256:bb06098d019766ca16fc915ecaa455c1f1cd594204e7f840cd6258237b5079a8", 171 | "sha256:bc791ec3fd0c4309a753f95bb6c749ef0d8ea3aea91f07ee1cf06b7b02118f2f", 172 | "sha256:bd28b31730f0e982ace8663d108e01199098432a30a4c410d06fe08fdb9e93f4", 173 | "sha256:be4d9c2770044a59715eb57c1144dedea7c5d5ae80c68fb9959515037cde2008", 174 | "sha256:c0c72d34e7de5604df0fde3644cc079feee5e55464967d10b24b1de268deceb9", 175 | "sha256:c0e842112fe3f1a4ffcf64b06dc4c61a88441c2f02f373367f7b4c1aa9be2ad5", 176 | "sha256:c15070ebf11b8b7fd1bfff7217e9324963c82dbdf6182ff7050519e350e7ad9f", 177 | "sha256:c2000c54c395d9e5e44c99dc7c20a64dc371f777faf8bae4919ad3e99ce5253e", 178 | "sha256:c30187840d36d0ba2893bc3271a36a517a717f9fd383a98e2697ee890a37c273", 179 | "sha256:cb7cd68814308aade9d0c93c5bd2ade9f9441666f8ba5aa9c2d4b389cb5e2a45", 180 | "sha256:cd805513198304026bd379d1d516afbf6c3c13f4382134a2c526b8b854da1c2e", 181 | "sha256:d0bf89afcbcf4d1bb2652f6580e5e55a840fdf87384f6063c4a4f0c95e378656", 182 | "sha256:d9137a876020661972ca6eec0766d81aef8a5627df628b664b234b73396e727e", 183 | "sha256:dbd95e300367aa0827496fe75a1766d198d34385a58f97683fe6e07f89ca3e3c", 184 | "sha256:dced27917823df984fe0c80a5c4ad75cf58df0fbfae890bc08004cd3888922a2", 185 | "sha256:de0b4caa1c8a21394e8ce971997614a17648f94e1cd0640fbd6b4d14cab13a72", 186 | "sha256:debb633f3f7856f95ad957d9b9c781f8e2c6303ef21724ec94bea2ce2fcbd056", 187 | "sha256:e372d7dfd154009142631de2d316adad3cc1c36c32a38b16a4751ba78da2a397", 188 | "sha256:ecd26be9f112c4f96718290c10f4caea6cc798459a3a76636b817a0ed7874e42", 189 | "sha256:edc0202099ea1d82844316604e17d2b175044f9bcb6b398aab781eba957224bd", 190 | "sha256:f194cce575e59ffe442c10a360182a986535fd90b57f7debfaa5c845c409ecc3", 191 | "sha256:f5fb672c396d826ca16a022ac04c9dce74e00a1c344f6ad1a0fdc1ba1f332213", 192 | "sha256:f6a02a3c7950cafaadcd46a226ad9e12fc9744652cc69f9e5534f98b47f3bbcf", 193 | "sha256:fe81b35c33772e56f4b6cf62cf4aedc1762ef7162a31e6ac7fe5e40d0149eb67" 194 | ], 195 | "markers": "python_full_version >= '3.7.0'", 196 | "version": "==3.3.1" 197 | }, 198 | "coreapi": { 199 | "hashes": [ 200 | "sha256:46145fcc1f7017c076a2ef684969b641d18a2991051fddec9458ad3f78ffc1cb", 201 | "sha256:bf39d118d6d3e171f10df9ede5666f63ad80bba9a29a8ec17726a66cf52ee6f3" 202 | ], 203 | "version": "==2.3.3" 204 | }, 205 | "coreschema": { 206 | "hashes": [ 207 | "sha256:5e6ef7bf38c1525d5e55a895934ab4273548629f16aed5c0a6caa74ebf45551f", 208 | "sha256:9503506007d482ab0867ba14724b93c18a33b22b6d19fb419ef2d239dd4a1607" 209 | ], 210 | "version": "==0.0.4" 211 | }, 212 | "cryptography": { 213 | "hashes": [ 214 | "sha256:004b6ccc95943f6a9ad3142cfabcc769d7ee38a3f60fb0dddbfb431f818c3a67", 215 | "sha256:047c4603aeb4bbd8db2756e38f5b8bd7e94318c047cfe4efeb5d715e08b49311", 216 | "sha256:0d9409894f495d465fe6fda92cb70e8323e9648af912d5b9141d616df40a87b8", 217 | "sha256:23a25c09dfd0d9f28da2352503b23e086f8e78096b9fd585d1d14eca01613e13", 218 | "sha256:2ed09183922d66c4ec5fdaa59b4d14e105c084dd0febd27452de8f6f74704143", 219 | "sha256:35c00f637cd0b9d5b6c6bd11b6c3359194a8eba9c46d4e875a3660e3b400005f", 220 | "sha256:37480760ae08065437e6573d14be973112c9e6dcaf5f11d00147ee74f37a3829", 221 | "sha256:3b224890962a2d7b57cf5eeb16ccaafba6083f7b811829f00476309bce2fe0fd", 222 | "sha256:5a0f09cefded00e648a127048119f77bc2b2ec61e736660b5789e638f43cc397", 223 | "sha256:5b72205a360f3b6176485a333256b9bcd48700fc755fef51c8e7e67c4b63e3ac", 224 | "sha256:7e53db173370dea832190870e975a1e09c86a879b613948f09eb49324218c14d", 225 | "sha256:7febc3094125fc126a7f6fb1f420d0da639f3f32cb15c8ff0dc3997c4549f51a", 226 | "sha256:80907d3faa55dc5434a16579952ac6da800935cd98d14dbd62f6f042c7f5e839", 227 | "sha256:86defa8d248c3fa029da68ce61fe735432b047e32179883bdb1e79ed9bb8195e", 228 | "sha256:8ac4f9ead4bbd0bc8ab2d318f97d85147167a488be0e08814a37eb2f439d5cf6", 229 | "sha256:93530900d14c37a46ce3d6c9e6fd35dbe5f5601bf6b3a5c325c7bffc030344d9", 230 | "sha256:9eeb77214afae972a00dee47382d2591abe77bdae166bda672fb1e24702a3860", 231 | "sha256:b5f4dfe950ff0479f1f00eda09c18798d4f49b98f4e2006d644b3301682ebdca", 232 | "sha256:c3391bd8e6de35f6f1140e50aaeb3e2b3d6a9012536ca23ab0d9c35ec18c8a91", 233 | "sha256:c880eba5175f4307129784eca96f4e70b88e57aa3f680aeba3bab0e980b0f37d", 234 | "sha256:cecfefa17042941f94ab54f769c8ce0fe14beff2694e9ac684176a2535bf9714", 235 | "sha256:e40211b4923ba5a6dc9769eab704bdb3fbb58d56c5b336d30996c24fcf12aadb", 236 | "sha256:efc8ad4e6fc4f1752ebfb58aefece8b4e3c4cae940b0994d43649bdfce8d0d4f" 237 | ], 238 | "version": "==41.0.4" 239 | }, 240 | "defusedxml": { 241 | "hashes": [ 242 | "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", 243 | "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61" 244 | ], 245 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 246 | "version": "==0.7.1" 247 | }, 248 | "django": { 249 | "hashes": [ 250 | "sha256:0200b657afbf1bc08003845ddda053c7641b9b24951e52acd51f6abda33a7413", 251 | "sha256:365429d07c1336eb42ba15aa79f45e1c13a0b04d5c21569e7d596696418a6a45" 252 | ], 253 | "index": "pypi", 254 | "markers": "python_version >= '3.5'", 255 | "version": "==2.2.28" 256 | }, 257 | "django-allauth": { 258 | "hashes": [ 259 | "sha256:ca1622733b6faa591580ccd3984042f12d8c79ade93438212de249b7ffb6f91f" 260 | ], 261 | "index": "pypi", 262 | "version": "==0.51.0" 263 | }, 264 | "django-cors-headers": { 265 | "hashes": [ 266 | "sha256:a22be2befd4069c4fc174f11cf067351df5c061a3a5f94a01650b4e928b0372b", 267 | "sha256:eb98389bf7a2afc5d374806af4a9149697e3a6955b5a2dc2bf049f7d33647456" 268 | ], 269 | "index": "pypi", 270 | "markers": "python_version >= '3.7'", 271 | "version": "==3.11.0" 272 | }, 273 | "django-ftpserver": { 274 | "hashes": [ 275 | "sha256:7ec824bd9bdc2528c704623e84fd3447b4cddbc9e96def30095386b29df63067", 276 | "sha256:d38d43f34704b9efa6b3c004a780e09428d4afcc98d15efa37509ff45af62514" 277 | ], 278 | "index": "pypi", 279 | "version": "==0.8.0" 280 | }, 281 | "django-rest-auth": { 282 | "hashes": [ 283 | "sha256:f11e12175dafeed772f50d740d22caeab27e99a3caca24ec65e66a8d6de16571" 284 | ], 285 | "index": "pypi", 286 | "version": "==0.9.5" 287 | }, 288 | "django-rest-swagger": { 289 | "hashes": [ 290 | "sha256:48f6aded9937e90ae7cbe9e6c932b9744b8af80cc4e010088b3278c700e0685b", 291 | "sha256:b039b0288bab4665cd45dc5d16f94b13911bc4ad0ed55f74ad3b90aa31c87c17" 292 | ], 293 | "index": "pypi", 294 | "version": "==2.2.0" 295 | }, 296 | "django-silk": { 297 | "hashes": [ 298 | "sha256:5d4d3f1d4e3454fb073be8928293bc8af33c61cb32987783c8f93243ebf9705e", 299 | "sha256:72f20020177e929ca5733dfebf226b4ce8559c5a7bdb1517daf9aaf7916b188a" 300 | ], 301 | "index": "pypi", 302 | "markers": "python_version >= '3.7'", 303 | "version": "==4.4.1" 304 | }, 305 | "django-storages": { 306 | "hashes": [ 307 | "sha256:204a99f218b747c46edbfeeb1310d357f83f90fa6a6024d8d0a3f422570cee84", 308 | "sha256:a475edb2f0f04c4f7e548919a751ecd50117270833956ed5bd585c0575d2a5e7" 309 | ], 310 | "index": "pypi", 311 | "markers": "python_version >= '3.5'", 312 | "version": "==1.12.3" 313 | }, 314 | "djangorestframework": { 315 | "hashes": [ 316 | "sha256:0c33407ce23acc68eca2a6e46424b008c9c02eceb8cf18581921d0092bc1f2ee", 317 | "sha256:24c4bf58ed7e85d1fe4ba250ab2da926d263cd57d64b03e8dcef0ac683f8b1aa" 318 | ], 319 | "index": "pypi", 320 | "markers": "python_version >= '3.6'", 321 | "version": "==3.13.1" 322 | }, 323 | "djangorestframework-jwt": { 324 | "hashes": [ 325 | "sha256:5efe33032f3a4518a300dc51a51c92145ad95fb6f4b272e5aa24701db67936a7", 326 | "sha256:ab15dfbbe535eede8e2e53adaf52ef0cf018ee27dbfad10cbc4cbec2ab63d38c" 327 | ], 328 | "index": "pypi", 329 | "version": "==1.11.0" 330 | }, 331 | "djangorestframework-simplejwt": { 332 | "hashes": [ 333 | "sha256:a60b09afb27d91ad1d7ac904cc632bd52cecead8f389f0fa1532ceb0fb757a74", 334 | "sha256:bcc4cb74dcb637ca1e17eed35276bd618ab19491f8c53e65dee6271177c355e8" 335 | ], 336 | "index": "pypi", 337 | "markers": "python_version >= '3.7'", 338 | "version": "==5.2.0" 339 | }, 340 | "gprof2dot": { 341 | "hashes": [ 342 | "sha256:45b4d298bd36608fccf9511c3fd88a773f7a1abc04d6cd39445b11ba43133ec5", 343 | "sha256:f165b3851d3c52ee4915eb1bd6cca571e5759823c2cd0f71a79bda93c2dc85d6" 344 | ], 345 | "markers": "python_version >= '2.7'", 346 | "version": "==2022.7.29" 347 | }, 348 | "idna": { 349 | "hashes": [ 350 | "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", 351 | "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" 352 | ], 353 | "markers": "python_version >= '3.5'", 354 | "version": "==3.4" 355 | }, 356 | "itypes": { 357 | "hashes": [ 358 | "sha256:03da6872ca89d29aef62773672b2d408f490f80db48b23079a4b194c86dd04c6", 359 | "sha256:af886f129dea4a2a1e3d36595a2d139589e4dd287f5cab0b40e799ee81570ff1" 360 | ], 361 | "version": "==1.2.0" 362 | }, 363 | "jinja2": { 364 | "hashes": [ 365 | "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", 366 | "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" 367 | ], 368 | "markers": "python_version >= '3.7'", 369 | "version": "==3.1.2" 370 | }, 371 | "jsonfield": { 372 | "hashes": [ 373 | "sha256:7e4e84597de21eeaeeaaa7cc5da08c61c48a9b64d0c446b2d71255d01812887a", 374 | "sha256:df857811587f252b97bafba42e02805e70a398a7a47870bc6358a0308dd689ed" 375 | ], 376 | "index": "pypi", 377 | "markers": "python_version >= '3.6'", 378 | "version": "==3.1.0" 379 | }, 380 | "kombu": { 381 | "hashes": [ 382 | "sha256:37cee3ee725f94ea8bb173eaab7c1760203ea53bbebae226328600f9d2799610", 383 | "sha256:8b213b24293d3417bcf0d2f5537b7f756079e3ea232a8386dcc89a59fd2361a4" 384 | ], 385 | "index": "pypi", 386 | "markers": "python_version >= '3.7'", 387 | "version": "==5.2.4" 388 | }, 389 | "markupsafe": { 390 | "hashes": [ 391 | "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e", 392 | "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e", 393 | "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431", 394 | "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686", 395 | "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c", 396 | "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559", 397 | "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc", 398 | "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb", 399 | "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939", 400 | "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c", 401 | "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0", 402 | "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4", 403 | "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9", 404 | "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575", 405 | "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba", 406 | "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d", 407 | "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd", 408 | "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3", 409 | "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00", 410 | "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155", 411 | "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac", 412 | "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52", 413 | "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f", 414 | "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8", 415 | "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b", 416 | "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007", 417 | "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24", 418 | "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea", 419 | "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198", 420 | "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0", 421 | "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee", 422 | "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be", 423 | "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2", 424 | "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1", 425 | "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707", 426 | "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6", 427 | "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c", 428 | "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58", 429 | "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823", 430 | "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779", 431 | "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636", 432 | "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c", 433 | "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad", 434 | "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee", 435 | "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc", 436 | "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2", 437 | "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48", 438 | "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7", 439 | "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e", 440 | "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b", 441 | "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa", 442 | "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5", 443 | "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e", 444 | "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb", 445 | "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9", 446 | "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57", 447 | "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc", 448 | "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc", 449 | "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2", 450 | "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11" 451 | ], 452 | "markers": "python_version >= '3.7'", 453 | "version": "==2.1.3" 454 | }, 455 | "oauthlib": { 456 | "hashes": [ 457 | "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca", 458 | "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918" 459 | ], 460 | "index": "pypi", 461 | "version": "==3.2.2" 462 | }, 463 | "openapi-codec": { 464 | "hashes": [ 465 | "sha256:1bce63289edf53c601ea3683120641407ff6b708803b8954c8a876fe778d2145" 466 | ], 467 | "version": "==1.3.2" 468 | }, 469 | "pycodestyle": { 470 | "hashes": [ 471 | "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f", 472 | "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67" 473 | ], 474 | "markers": "python_version >= '3.8'", 475 | "version": "==2.11.1" 476 | }, 477 | "pycparser": { 478 | "hashes": [ 479 | "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9", 480 | "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206" 481 | ], 482 | "version": "==2.21" 483 | }, 484 | "pyftpdlib": { 485 | "hashes": [ 486 | "sha256:bf6dabb67dff32b3ff040e2825fffbc6b8de70373bc9d9b553480cc4d7504d6c" 487 | ], 488 | "version": "==1.5.8" 489 | }, 490 | "pyjwt": { 491 | "hashes": [ 492 | "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e", 493 | "sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96" 494 | ], 495 | "version": "==1.7.1" 496 | }, 497 | "python-dateutil": { 498 | "hashes": [ 499 | "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", 500 | "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" 501 | ], 502 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 503 | "version": "==2.8.2" 504 | }, 505 | "python3-openid": { 506 | "hashes": [ 507 | "sha256:33fbf6928f401e0b790151ed2b5290b02545e8775f982485205a066f874aaeaf", 508 | "sha256:6626f771e0417486701e0b4daff762e7212e820ca5b29fcc0d05f6f8736dfa6b" 509 | ], 510 | "version": "==3.2.0" 511 | }, 512 | "pytz": { 513 | "hashes": [ 514 | "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b", 515 | "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7" 516 | ], 517 | "version": "==2023.3.post1" 518 | }, 519 | "requests": { 520 | "hashes": [ 521 | "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", 522 | "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" 523 | ], 524 | "index": "pypi", 525 | "markers": "python_version >= '3.7'", 526 | "version": "==2.31.0" 527 | }, 528 | "requests-oauthlib": { 529 | "hashes": [ 530 | "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5", 531 | "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a" 532 | ], 533 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 534 | "version": "==1.3.1" 535 | }, 536 | "simplejson": { 537 | "hashes": [ 538 | "sha256:0405984f3ec1d3f8777c4adc33eac7ab7a3e629f3b1c05fdded63acc7cf01137", 539 | "sha256:0436a70d8eb42bea4fe1a1c32d371d9bb3b62c637969cb33970ad624d5a3336a", 540 | "sha256:061e81ea2d62671fa9dea2c2bfbc1eec2617ae7651e366c7b4a2baf0a8c72cae", 541 | "sha256:064300a4ea17d1cd9ea1706aa0590dcb3be81112aac30233823ee494f02cb78a", 542 | "sha256:08889f2f597ae965284d7b52a5c3928653a9406d88c93e3161180f0abc2433ba", 543 | "sha256:0a48679310e1dd5c9f03481799311a65d343748fe86850b7fb41df4e2c00c087", 544 | "sha256:0b0a3eb6dd39cce23801a50c01a0976971498da49bc8a0590ce311492b82c44b", 545 | "sha256:0d2d5119b1d7a1ed286b8af37357116072fc96700bce3bec5bb81b2e7057ab41", 546 | "sha256:0d551dc931638e2102b8549836a1632e6e7cf620af3d093a7456aa642bff601d", 547 | "sha256:1018bd0d70ce85f165185d2227c71e3b1e446186f9fa9f971b69eee223e1e3cd", 548 | "sha256:11c39fbc4280d7420684494373b7c5904fa72a2b48ef543a56c2d412999c9e5d", 549 | "sha256:11cc3afd8160d44582543838b7e4f9aa5e97865322844b75d51bf4e0e413bb3e", 550 | "sha256:1537b3dd62d8aae644f3518c407aa8469e3fd0f179cdf86c5992792713ed717a", 551 | "sha256:16ca9c90da4b1f50f089e14485db8c20cbfff2d55424062791a7392b5a9b3ff9", 552 | "sha256:176a1b524a3bd3314ed47029a86d02d5a95cc0bee15bd3063a1e1ec62b947de6", 553 | "sha256:18955c1da6fc39d957adfa346f75226246b6569e096ac9e40f67d102278c3bcb", 554 | "sha256:1bb5b50dc6dd671eb46a605a3e2eb98deb4a9af787a08fcdddabe5d824bb9664", 555 | "sha256:1c768e7584c45094dca4b334af361e43b0aaa4844c04945ac7d43379eeda9bc2", 556 | "sha256:1dd4f692304854352c3e396e9b5f0a9c9e666868dd0bdc784e2ac4c93092d87b", 557 | "sha256:25785d038281cd106c0d91a68b9930049b6464288cea59ba95b35ee37c2d23a5", 558 | "sha256:287e39ba24e141b046812c880f4619d0ca9e617235d74abc27267194fc0c7835", 559 | "sha256:2c1467d939932901a97ba4f979e8f2642415fcf02ea12f53a4e3206c9c03bc17", 560 | "sha256:2c433a412e96afb9a3ce36fa96c8e61a757af53e9c9192c97392f72871e18e69", 561 | "sha256:2d022b14d7758bfb98405672953fe5c202ea8a9ccf9f6713c5bd0718eba286fd", 562 | "sha256:2f98d918f7f3aaf4b91f2b08c0c92b1774aea113334f7cde4fe40e777114dbe6", 563 | "sha256:2fc697be37585eded0c8581c4788fcfac0e3f84ca635b73a5bf360e28c8ea1a2", 564 | "sha256:3194cd0d2c959062b94094c0a9f8780ffd38417a5322450a0db0ca1a23e7fbd2", 565 | "sha256:332c848f02d71a649272b3f1feccacb7e4f7e6de4a2e6dc70a32645326f3d428", 566 | "sha256:346820ae96aa90c7d52653539a57766f10f33dd4be609206c001432b59ddf89f", 567 | "sha256:3471e95110dcaf901db16063b2e40fb394f8a9e99b3fe9ee3acc6f6ef72183a2", 568 | "sha256:3848427b65e31bea2c11f521b6fc7a3145d6e501a1038529da2391aff5970f2f", 569 | "sha256:39b6d79f5cbfa3eb63a869639cfacf7c41d753c64f7801efc72692c1b2637ac7", 570 | "sha256:3e74355cb47e0cd399ead3477e29e2f50e1540952c22fb3504dda0184fc9819f", 571 | "sha256:3f39bb1f6e620f3e158c8b2eaf1b3e3e54408baca96a02fe891794705e788637", 572 | "sha256:40847f617287a38623507d08cbcb75d51cf9d4f9551dd6321df40215128325a3", 573 | "sha256:4280e460e51f86ad76dc456acdbfa9513bdf329556ffc8c49e0200878ca57816", 574 | "sha256:445a96543948c011a3a47c8e0f9d61e9785df2544ea5be5ab3bc2be4bd8a2565", 575 | "sha256:4969d974d9db826a2c07671273e6b27bc48e940738d768fa8f33b577f0978378", 576 | "sha256:49aaf4546f6023c44d7e7136be84a03a4237f0b2b5fb2b17c3e3770a758fc1a0", 577 | "sha256:49e0e3faf3070abdf71a5c80a97c1afc059b4f45a5aa62de0c2ca0444b51669b", 578 | "sha256:49f9da0d6cd17b600a178439d7d2d57c5ef01f816b1e0e875e8e8b3b42db2693", 579 | "sha256:4a8c3cc4f9dfc33220246760358c8265dad6e1104f25f0077bbca692d616d358", 580 | "sha256:4d36081c0b1c12ea0ed62c202046dca11438bee48dd5240b7c8de8da62c620e9", 581 | "sha256:4edcd0bf70087b244ba77038db23cd98a1ace2f91b4a3ecef22036314d77ac23", 582 | "sha256:554313db34d63eac3b3f42986aa9efddd1a481169c12b7be1e7512edebff8eaf", 583 | "sha256:5675e9d8eeef0aa06093c1ff898413ade042d73dc920a03e8cea2fb68f62445a", 584 | "sha256:60848ab779195b72382841fc3fa4f71698a98d9589b0a081a9399904487b5832", 585 | "sha256:66e5dc13bfb17cd6ee764fc96ccafd6e405daa846a42baab81f4c60e15650414", 586 | "sha256:6779105d2fcb7fcf794a6a2a233787f6bbd4731227333a072d8513b252ed374f", 587 | "sha256:6ad331349b0b9ca6da86064a3599c425c7a21cd41616e175ddba0866da32df48", 588 | "sha256:6f0a0b41dd05eefab547576bed0cf066595f3b20b083956b1405a6f17d1be6ad", 589 | "sha256:73a8a4653f2e809049999d63530180d7b5a344b23a793502413ad1ecea9a0290", 590 | "sha256:778331444917108fa8441f59af45886270d33ce8a23bfc4f9b192c0b2ecef1b3", 591 | "sha256:7cb98be113911cb0ad09e5523d0e2a926c09a465c9abb0784c9269efe4f95917", 592 | "sha256:7d74beca677623481810c7052926365d5f07393c72cbf62d6cce29991b676402", 593 | "sha256:7f2398361508c560d0bf1773af19e9fe644e218f2a814a02210ac2c97ad70db0", 594 | "sha256:8434dcdd347459f9fd9c526117c01fe7ca7b016b6008dddc3c13471098f4f0dc", 595 | "sha256:8a390e56a7963e3946ff2049ee1eb218380e87c8a0e7608f7f8790ba19390867", 596 | "sha256:92c4a4a2b1f4846cd4364855cbac83efc48ff5a7d7c06ba014c792dd96483f6f", 597 | "sha256:9300aee2a8b5992d0f4293d88deb59c218989833e3396c824b69ba330d04a589", 598 | "sha256:9453419ea2ab9b21d925d0fd7e3a132a178a191881fab4169b6f96e118cc25bb", 599 | "sha256:9652e59c022e62a5b58a6f9948b104e5bb96d3b06940c6482588176f40f4914b", 600 | "sha256:972a7833d4a1fcf7a711c939e315721a88b988553fc770a5b6a5a64bd6ebeba3", 601 | "sha256:9c1a4393242e321e344213a90a1e3bf35d2f624aa8b8f6174d43e3c6b0e8f6eb", 602 | "sha256:9e038c615b3906df4c3be8db16b3e24821d26c55177638ea47b3f8f73615111c", 603 | "sha256:9e4c166f743bb42c5fcc60760fb1c3623e8fda94f6619534217b083e08644b46", 604 | "sha256:9eb117db8d7ed733a7317c4215c35993b815bf6aeab67523f1f11e108c040672", 605 | "sha256:9eb442a2442ce417801c912df68e1f6ccfcd41577ae7274953ab3ad24ef7d82c", 606 | "sha256:a3cd18e03b0ee54ea4319cdcce48357719ea487b53f92a469ba8ca8e39df285e", 607 | "sha256:a8617625369d2d03766413bff9e64310feafc9fc4f0ad2b902136f1a5cd8c6b0", 608 | "sha256:a970a2e6d5281d56cacf3dc82081c95c1f4da5a559e52469287457811db6a79b", 609 | "sha256:aad7405c033d32c751d98d3a65801e2797ae77fac284a539f6c3a3e13005edc4", 610 | "sha256:adcb3332979cbc941b8fff07181f06d2b608625edc0a4d8bc3ffc0be414ad0c4", 611 | "sha256:af9c7e6669c4d0ad7362f79cb2ab6784d71147503e62b57e3d95c4a0f222c01c", 612 | "sha256:b01fda3e95d07a6148702a641e5e293b6da7863f8bc9b967f62db9461330562c", 613 | "sha256:b8d940fd28eb34a7084877747a60873956893e377f15a32ad445fe66c972c3b8", 614 | "sha256:bccb3e88ec26ffa90f72229f983d3a5d1155e41a1171190fa723d4135523585b", 615 | "sha256:bcedf4cae0d47839fee7de344f96b5694ca53c786f28b5f773d4f0b265a159eb", 616 | "sha256:be893258d5b68dd3a8cba8deb35dc6411db844a9d35268a8d3793b9d9a256f80", 617 | "sha256:c0521e0f07cb56415fdb3aae0bbd8701eb31a9dfef47bb57206075a0584ab2a2", 618 | "sha256:c594642d6b13d225e10df5c16ee15b3398e21a35ecd6aee824f107a625690374", 619 | "sha256:c87c22bd6a987aca976e3d3e23806d17f65426191db36d40da4ae16a6a494cbc", 620 | "sha256:c9ac1c2678abf9270e7228133e5b77c6c3c930ad33a3c1dfbdd76ff2c33b7b50", 621 | "sha256:d0e5ffc763678d48ecc8da836f2ae2dd1b6eb2d27a48671066f91694e575173c", 622 | "sha256:d0f402e787e6e7ee7876c8b05e2fe6464820d9f35ba3f172e95b5f8b699f6c7f", 623 | "sha256:d222a9ed082cd9f38b58923775152003765016342a12f08f8c123bf893461f28", 624 | "sha256:d94245caa3c61f760c4ce4953cfa76e7739b6f2cbfc94cc46fff6c050c2390c5", 625 | "sha256:de9a2792612ec6def556d1dc621fd6b2073aff015d64fba9f3e53349ad292734", 626 | "sha256:e2f5a398b5e77bb01b23d92872255e1bcb3c0c719a3be40b8df146570fe7781a", 627 | "sha256:e8dd53a8706b15bc0e34f00e6150fbefb35d2fd9235d095b4f83b3c5ed4fa11d", 628 | "sha256:e9eb3cff1b7d71aa50c89a0536f469cb8d6dcdd585d8f14fb8500d822f3bdee4", 629 | "sha256:ed628c1431100b0b65387419551e822987396bee3c088a15d68446d92f554e0c", 630 | "sha256:ef7938a78447174e2616be223f496ddccdbf7854f7bf2ce716dbccd958cc7d13", 631 | "sha256:f1c70249b15e4ce1a7d5340c97670a95f305ca79f376887759b43bb33288c973", 632 | "sha256:f3c7363a8cb8c5238878ec96c5eb0fc5ca2cb11fc0c7d2379863d342c6ee367a", 633 | "sha256:fbbcc6b0639aa09b9649f36f1bcb347b19403fe44109948392fbb5ea69e48c3e", 634 | "sha256:febffa5b1eda6622d44b245b0685aff6fb555ce0ed734e2d7b1c3acd018a2cff", 635 | "sha256:ff836cd4041e16003549449cc0a5e372f6b6f871eb89007ab0ee18fb2800fded" 636 | ], 637 | "markers": "python_version >= '2.5' and python_version not in '3.0, 3.1, 3.2, 3.3'", 638 | "version": "==3.19.2" 639 | }, 640 | "six": { 641 | "hashes": [ 642 | "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", 643 | "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" 644 | ], 645 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 646 | "version": "==1.16.0" 647 | }, 648 | "sqlparse": { 649 | "hashes": [ 650 | "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3", 651 | "sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c" 652 | ], 653 | "markers": "python_version >= '3.5'", 654 | "version": "==0.4.4" 655 | }, 656 | "tomli": { 657 | "hashes": [ 658 | "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", 659 | "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" 660 | ], 661 | "markers": "python_version < '3.11'", 662 | "version": "==2.0.1" 663 | }, 664 | "uritemplate": { 665 | "hashes": [ 666 | "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0", 667 | "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e" 668 | ], 669 | "markers": "python_version >= '3.6'", 670 | "version": "==4.1.1" 671 | }, 672 | "urllib3": { 673 | "hashes": [ 674 | "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84", 675 | "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e" 676 | ], 677 | "markers": "python_version >= '3.7'", 678 | "version": "==2.0.7" 679 | }, 680 | "vine": { 681 | "hashes": [ 682 | "sha256:4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30", 683 | "sha256:7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e" 684 | ], 685 | "markers": "python_version >= '3.6'", 686 | "version": "==5.0.0" 687 | } 688 | }, 689 | "develop": { 690 | "flake8": { 691 | "hashes": [ 692 | "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d", 693 | "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d" 694 | ], 695 | "index": "pypi", 696 | "markers": "python_version >= '3.6'", 697 | "version": "==4.0.1" 698 | }, 699 | "mccabe": { 700 | "hashes": [ 701 | "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", 702 | "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" 703 | ], 704 | "version": "==0.6.1" 705 | }, 706 | "pycodestyle": { 707 | "hashes": [ 708 | "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f", 709 | "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67" 710 | ], 711 | "markers": "python_version >= '3.8'", 712 | "version": "==2.11.1" 713 | }, 714 | "pyflakes": { 715 | "hashes": [ 716 | "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c", 717 | "sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e" 718 | ], 719 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 720 | "version": "==2.4.0" 721 | } 722 | } 723 | } 724 | --------------------------------------------------------------------------------