diff --git a/.gitignore b/.gitignore index e6f4c58..801a505 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ __pycache__/ .env configs/config.cfg configs/prefixes.cfg +configs/clusters.cfg .DS_Store private.py diff --git a/bot.py b/bot.py index d7476c0..767a7bc 100755 --- a/bot.py +++ b/bot.py @@ -25,11 +25,11 @@ log = logging.getLogger(__name__) l_extensions: List[str] = [ 'cogs.admin', 'cogs.basics', + 'cogs.cluster_manager', 'cogs.logs', - 'cogs.monitoring', + 'cogs.poll', 'cogs.user', 'cogs.utility', - 'cogs.poll', 'jishaku', ] @@ -69,6 +69,8 @@ class TuxBot(commands.AutoShardedBot): self.config = Config('./configs/config.cfg') self.prefixes = Config('./configs/prefixes.cfg') self.blacklist = Config('./configs/blacklist.cfg') + self.clusters = Config('./configs/clusters.cfg') + self.cluster = self.clusters.find('True', key='This', first=True) self.version = Version(10, 1, 0, pre_release='a5', build=build) @@ -130,6 +132,7 @@ class TuxBot(commands.AutoShardedBot): if not hasattr(self, 'uptime'): self.uptime = datetime.datetime.utcnow() + print('-' * 60) print(Texts().get("Ready:") + f' {self.user} (ID: {self.user.id})') print(self.version) @@ -140,6 +143,9 @@ class TuxBot(commands.AutoShardedBot): name=self.config.get("bot", "Activity") ) ) + print(f"Discord.py: {discord.__version__}") + print(f"Cluster: {self.cluster.get('Name')}") + print('-' * 60) await self.change_presence(**presence) @@ -149,10 +155,10 @@ class TuxBot(commands.AutoShardedBot): @property def logs_webhook(self) -> discord.Webhook: - logs_webhook = self.config["webhook"] + webhook_config = self.config["webhook"] webhook = discord.Webhook.partial( - id=logs_webhook.get('ID'), - token=logs_webhook.get('Token'), + id=webhook_config.get('ID'), + token=webhook_config.get('Token'), adapter=discord.AsyncWebhookAdapter( self.session ) @@ -161,6 +167,9 @@ class TuxBot(commands.AutoShardedBot): return webhook async def close(self): + extensions = self.extensions.copy() + for extension in extensions: + self.unload_extension(extension) await super().close() await self.session.close() diff --git a/cogs/cluster_manager.py b/cogs/cluster_manager.py new file mode 100644 index 0000000..734a114 --- /dev/null +++ b/cogs/cluster_manager.py @@ -0,0 +1,108 @@ +from datetime import datetime +import logging +import urllib.request + +import discord +from aiohttp import web +from discord.ext import tasks, commands + +from bot import TuxBot + +log = logging.getLogger(__name__) + + +class Monitoring(commands.Cog): + + def __init__(self, bot: TuxBot): + self.bot = bot + self.site = web.TCPSite + + self.ping_clusters.start() + + app = web.Application() + app.add_routes([web.get('/', self.handle)]) + + self.runner = web.AppRunner(app) + self.bot.loop.create_task(self.start_HTTPMonitoring_server()) + + def cog_unload(self): + self.ping_clusters.stop() + + @tasks.loop(seconds=20.0) + async def ping_clusters(self): + for cluster in self.bot.clusters: + if cluster == 'DEFAULT': + pass + else: + cluster = self.bot.clusters[cluster] + if not cluster.get('This', False): + host = cluster.get('Host') + port = cluster.get('Port') + + try: + req = urllib.request.urlopen(f"http://{host}:{port}", + timeout=2) + except Exception: + global_channel = await self.bot.fetch_channel( + 661347412463321098 + ) + + e = discord.Embed( + title=f"Cluster `{cluster.get('Name')}`", + color=discord.colour.Color.red(), + description=f"Cluster **`{cluster.get('Name')}`** with address **`http://{host}:{port}`** is down ! ", + timestamp=datetime.now() + ) + e.set_thumbnail( + url='https://upload.wikimedia.org/wikipedia/commons/7/75/Erroricon404.PNG' + ) + + await global_channel.send(embed=e) + else: + print(req.read().decode()) + + @ping_clusters.before_loop + async def before_pinging(self): + await self.bot.wait_until_ready() + + cluster = self.bot.cluster + host = cluster.get('Host') + port = cluster.get('Port') + + global_channel = await self.bot.fetch_channel( + 661347412463321098 + ) + + e = discord.Embed( + title=f"Cluster `{cluster.get('Name')}`", + color=discord.colour.Color.green(), + description=f"Cluster **`{cluster.get('Name')}`** with address **`http://{host}:{port}`** is started ! ", + timestamp=datetime.now() + ) + e.set_thumbnail( + url='https://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/MW-Icon-CheckMark.svg/1024px-MW-Icon-CheckMark.svg.png' + ) + + await global_channel.send(embed=e) + + async def start_HTTPMonitoring_server(self): + host = self.bot.cluster.get('WebPage') + port = self.bot.cluster.get('Port') + + print(f"Starting HTTP Monitoring server on {host}:{port}") + + await self.runner.setup() + self.site = web.TCPSite(self.runner, host, port) + await self.site.start() + + async def handle(self, _): + return web.json_response( + { + 'message': "I'm alive !", + 'ws': self.bot.latency * 1000 + } + ) + + +def setup(bot: TuxBot): + bot.add_cog(Monitoring(bot)) diff --git a/cogs/monitoring.py b/cogs/monitoring.py deleted file mode 100644 index 0df49fe..0000000 --- a/cogs/monitoring.py +++ /dev/null @@ -1,45 +0,0 @@ -import asyncio -import logging -import threading - -from aiohttp import web -from aiohttp.web_request import Request - -from discord.ext import commands -from bot import TuxBot - -log = logging.getLogger(__name__) - - -class Monitoring(commands.Cog): - - def __init__(self): - self.app = web.Application() - - t = threading.Thread( - target=self.run_server, - args=(self.aiohttp_server(),) - ) - t.start() - - def aiohttp_server(self): - async def hi(request: Request): - return web.Response(text="I'm alive !") - - self.app.add_routes([web.get('/', hi)]) - runner = web.AppRunner(self.app) - - return runner - - @staticmethod - def run_server(runner): - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - loop.run_until_complete(runner.setup()) - site = web.TCPSite(runner, '0.0.0.0', 8080) - loop.run_until_complete(site.start()) - loop.run_forever() - - -def setup(bot: TuxBot): - bot.add_cog(Monitoring()) diff --git a/cogs/utils/config.py b/cogs/utils/config.py index 4c07ec8..64e3f69 100644 --- a/cogs/utils/config.py +++ b/cogs/utils/config.py @@ -1,15 +1,36 @@ +from typing import List, Union + import configparser -class Config(configparser.RawConfigParser): +class Config(configparser.ConfigParser): __slots__ = ('name', '_db') def __init__(self, name): super().__init__() - self.name = name self._db = super() - self._db.read(self.name) + self._db.read(name) - def all(self) -> list: - return self._db.sections() + def find(self, value: str, **kwargs) \ + -> Union[ + List[configparser.SectionProxy], configparser.SectionProxy + ]: + key = kwargs.get('key', None) + first = kwargs.get('first', False) + + results = [] + + for name, section in self._db.items(): + if key is None: + for k in section.keys(): + if section.get(k) == value: + results.append(section) + if first and len(results) == 1: + return results[0] + else: + if section.get(key) == value: + results.append(section) + if first and len(results) == 1: + return results[0] + return results diff --git a/configs/clusters.cfg.example b/configs/clusters.cfg.example new file mode 100644 index 0000000..ea9bc7b --- /dev/null +++ b/configs/clusters.cfg.example @@ -0,0 +1,18 @@ +[fr-srv01] +Host = +Name = fr-srv01 +WebPage = 0.0.0.0 +Port = + +[rm-dev01] +This = True +Host = 127.0.0.1 +Name = rm-dev01 +WebPage = 0.0.0.0 +Port = 3389 + +[rm-srv01] +Host = 127.0.0.1 +Name = rm-srv01 +WebPage = 0.0.0.0 +Port = 3390 diff --git a/configs/prefixes.cfg b/configs/prefixes.cfg index 16a999f..fa8ccdc 100644 --- a/configs/prefixes.cfg +++ b/configs/prefixes.cfg @@ -1,5 +1,5 @@ [280805240977227776] -prefixes = test. +prefixes = rm-srv01. [303633056944881686] prefixes = b1. diff --git a/requirements.txt b/requirements.txt index 6782f79..23208d8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +requests humanize discord.py[voice] jishaku diff --git a/venv/bin/activate b/venv/bin/activate index 8bf2063..3f4bf1c 100644 --- a/venv/bin/activate +++ b/venv/bin/activate @@ -37,7 +37,7 @@ deactivate () { # unset irrelevant variables deactivate nondestructive -VIRTUAL_ENV="/home/romain/gnousEU/tuxbot-bot/venv" +VIRTUAL_ENV="/home/romain/gnousEU/rm-dev01/tuxbot-bot/venv" export VIRTUAL_ENV _OLD_VIRTUAL_PATH="$PATH" diff --git a/venv/bin/activate.csh b/venv/bin/activate.csh index 248f5fa..98060ea 100644 --- a/venv/bin/activate.csh +++ b/venv/bin/activate.csh @@ -8,7 +8,7 @@ alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PA # Unset irrelevant variables. deactivate nondestructive -setenv VIRTUAL_ENV "/home/romain/gnousEU/tuxbot-bot/venv" +setenv VIRTUAL_ENV "/home/romain/gnousEU/rm-dev01/tuxbot-bot/venv" set _OLD_VIRTUAL_PATH="$PATH" setenv PATH "$VIRTUAL_ENV/bin:$PATH" diff --git a/venv/bin/activate.fish b/venv/bin/activate.fish index f64cc0a..4963b20 100644 --- a/venv/bin/activate.fish +++ b/venv/bin/activate.fish @@ -29,7 +29,7 @@ end # unset irrelevant variables deactivate nondestructive -set -gx VIRTUAL_ENV "/home/romain/gnousEU/tuxbot-bot/venv" +set -gx VIRTUAL_ENV "/home/romain/gnousEU/rm-dev01/tuxbot-bot/venv" set -gx _OLD_VIRTUAL_PATH $PATH set -gx PATH "$VIRTUAL_ENV/bin" $PATH diff --git a/venv/bin/chardetect b/venv/bin/chardetect index f486b86..110f57c 100755 --- a/venv/bin/chardetect +++ b/venv/bin/chardetect @@ -1,10 +1,8 @@ -#!/home/romain/gnousEU/tuxbot-bot/venv/bin/python3.7 +#!/home/romain/gnousEU/rm-dev01/tuxbot-bot/venv/bin/python3.7 # -*- coding: utf-8 -*- import re import sys - from chardet.cli.chardetect import main - if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) sys.exit(main()) diff --git a/venv/bin/easy_install b/venv/bin/easy_install index 1508e0e..f3618a8 100755 --- a/venv/bin/easy_install +++ b/venv/bin/easy_install @@ -1,4 +1,4 @@ -#!/home/romain/gnousEU/tuxbot-bot/venv/bin/python3.7 +#!/home/romain/gnousEU/rm-dev01/tuxbot-bot/venv/bin/python3.7 # -*- coding: utf-8 -*- import re import sys diff --git a/venv/bin/easy_install-3.7 b/venv/bin/easy_install-3.7 index 1508e0e..f3618a8 100755 --- a/venv/bin/easy_install-3.7 +++ b/venv/bin/easy_install-3.7 @@ -1,4 +1,4 @@ -#!/home/romain/gnousEU/tuxbot-bot/venv/bin/python3.7 +#!/home/romain/gnousEU/rm-dev01/tuxbot-bot/venv/bin/python3.7 # -*- coding: utf-8 -*- import re import sys diff --git a/venv/bin/import_expression b/venv/bin/import_expression index 0c9e976..5ed732b 100755 --- a/venv/bin/import_expression +++ b/venv/bin/import_expression @@ -1,10 +1,8 @@ -#!/home/romain/gnousEU/tuxbot-bot/venv/bin/python3.7 +#!/home/romain/gnousEU/rm-dev01/tuxbot-bot/venv/bin/python3.7 # -*- coding: utf-8 -*- import re import sys - from import_expression.__main__ import main - if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) sys.exit(main()) diff --git a/venv/bin/pip b/venv/bin/pip index abdf7ef..5e7e697 100755 --- a/venv/bin/pip +++ b/venv/bin/pip @@ -1,4 +1,4 @@ -#!/home/romain/gnousEU/tuxbot-bot/venv/bin/python3.7 +#!/home/romain/gnousEU/rm-dev01/tuxbot-bot/venv/bin/python3.7 # -*- coding: utf-8 -*- import re import sys diff --git a/venv/bin/pip3 b/venv/bin/pip3 index abdf7ef..5e7e697 100755 --- a/venv/bin/pip3 +++ b/venv/bin/pip3 @@ -1,4 +1,4 @@ -#!/home/romain/gnousEU/tuxbot-bot/venv/bin/python3.7 +#!/home/romain/gnousEU/rm-dev01/tuxbot-bot/venv/bin/python3.7 # -*- coding: utf-8 -*- import re import sys diff --git a/venv/bin/pip3.7 b/venv/bin/pip3.7 index abdf7ef..5e7e697 100755 --- a/venv/bin/pip3.7 +++ b/venv/bin/pip3.7 @@ -1,4 +1,4 @@ -#!/home/romain/gnousEU/tuxbot-bot/venv/bin/python3.7 +#!/home/romain/gnousEU/rm-dev01/tuxbot-bot/venv/bin/python3.7 # -*- coding: utf-8 -*- import re import sys diff --git a/venv/bin/pybabel b/venv/bin/pybabel deleted file mode 100755 index b610b42..0000000 --- a/venv/bin/pybabel +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/romain/gnousEU/tuxbot-bot/venv/bin/python3.7 -# -*- coding: utf-8 -*- -import re -import sys -from babel.messages.frontend import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/tcp-latency b/venv/bin/tcp-latency index d4e214f..787cc0f 100755 --- a/venv/bin/tcp-latency +++ b/venv/bin/tcp-latency @@ -1,4 +1,4 @@ -#!/home/romain/gnousEU/tuxbot-bot/venv/bin/python3.7 +#!/home/romain/gnousEU/rm-dev01/tuxbot-bot/venv/bin/python3.7 # -*- coding: utf-8 -*- import re import sys diff --git a/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/INSTALLER b/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/LICENSE b/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/LICENSE deleted file mode 100644 index 10722cc..0000000 --- a/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -Copyright (c) 2013-2019 by the Babel Team, see AUTHORS for more information. - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - 3. The name of the author may not be used to endorse or promote - products derived from this software without specific prior - written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/METADATA b/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/METADATA deleted file mode 100644 index 4dc8411..0000000 --- a/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/METADATA +++ /dev/null @@ -1,31 +0,0 @@ -Metadata-Version: 2.1 -Name: Babel -Version: 2.7.0 -Summary: Internationalization utilities -Home-page: http://babel.pocoo.org/ -Author: Armin Ronacher -Author-email: armin.ronacher@active-4.com -License: BSD -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Web Environment -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* -Requires-Dist: pytz (>=2015.7) - -A collection of tools for internationalizing Python applications. - - diff --git a/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/RECORD b/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/RECORD deleted file mode 100644 index 278f241..0000000 --- a/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/RECORD +++ /dev/null @@ -1,815 +0,0 @@ -../../../bin/pybabel,sha256=X97VAhJYxnLuo8P_afP6cjXSHxOVROguRI628oADXjA,256 -Babel-2.7.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -Babel-2.7.0.dist-info/LICENSE,sha256=Wg311G6MsUvV1MLNdzOLIvaB_oi9NCNmJrGjrjtQEBo,1451 -Babel-2.7.0.dist-info/METADATA,sha256=Sakpsddm3zC_mjuf8Xl2jlGr9l6fN3QH5TZOJCKBxbs,1223 -Babel-2.7.0.dist-info/RECORD,, -Babel-2.7.0.dist-info/WHEEL,sha256=HX-v9-noUkyUoxyZ1PMSuS7auUxDAR4VBdoYLqD0xws,110 -Babel-2.7.0.dist-info/entry_points.txt,sha256=dyIkorJhQj3IvTvmMylr1wEzW7vfxTw5RTOWa8zoqh0,764 -Babel-2.7.0.dist-info/top_level.txt,sha256=mQO3vNkqlcYs_xRaL5EpRIy1IRjMp4N9_vdwmiemPXo,6 -babel/__init__.py,sha256=Z867BI00sB-W9VXa74LciJmUXnLcDE8HYet2sPuwwwA,714 -babel/__pycache__/__init__.cpython-37.pyc,, -babel/__pycache__/_compat.cpython-37.pyc,, -babel/__pycache__/core.cpython-37.pyc,, -babel/__pycache__/dates.cpython-37.pyc,, -babel/__pycache__/languages.cpython-37.pyc,, -babel/__pycache__/lists.cpython-37.pyc,, -babel/__pycache__/localedata.cpython-37.pyc,, -babel/__pycache__/numbers.cpython-37.pyc,, -babel/__pycache__/plural.cpython-37.pyc,, -babel/__pycache__/support.cpython-37.pyc,, -babel/__pycache__/units.cpython-37.pyc,, -babel/__pycache__/util.cpython-37.pyc,, -babel/_compat.py,sha256=DHx6vQR-LazZlNdeBE7wGTOBv1_1HWbRboKOkX76TiY,1685 -babel/core.py,sha256=fkxYTtAryVBEwsfYg78Y-eRfq_dRkzSFlMSXoDoliSM,36907 -babel/dates.py,sha256=LLBcjpOs_8Ng9StJdk-HcUxUnrTTtLtKYKOdLzxGJYU,67479 -babel/global.dat,sha256=h29NSbHmHUP3FulyRoiU6aDSj7FgcGBZyc212lnUL_c,253062 -babel/languages.py,sha256=UmLTj4Nai3kQrwHX6jptehVLeAw-KAdxcmcp2iDlgvI,2743 -babel/lists.py,sha256=nON3qfMoLLap0YTTRGBYWbwekBFknIABbulnsX70lrk,2719 -babel/locale-data/af.dat,sha256=n7zhDTHDXh8voszXVJXnIaLC_ihEYStNBQdNZC_TKYE,167016 -babel/locale-data/af_NA.dat,sha256=SCCik7H53r08j9VR2MlOEPFagN5P153ef0fbsIFwsvY,1425 -babel/locale-data/af_ZA.dat,sha256=TvoOI0O5FP8QqIwI506xwhymtW-ZwtnGSh7OGg8W69s,626 -babel/locale-data/agq.dat,sha256=K7_PXOHrOyQBaZgHpJFpsI7DyOoOgxij1TmGPvHW3r8,17399 -babel/locale-data/agq_CM.dat,sha256=gn5wN9w6lKBCTkuKLwKCFrnkSAxA5Utr1N9py-ciqkc,627 -babel/locale-data/ak.dat,sha256=TI9PGam0sIfflHMh1jbrZ9hKpRVfcZVLC1rGyFFTZh8,15911 -babel/locale-data/ak_GH.dat,sha256=iTuDrca96IQYXDwnpNiqKtGn8d83kgs-LsWTfJntS4s,607 -babel/locale-data/am.dat,sha256=lT1XWTPuNzjyYF_VTyqhmCGAY7upVMPUlD70ebWnqcw,198396 -babel/locale-data/am_ET.dat,sha256=8zdStIXJmVpgppSVpZUwV04WJ4kUWQwFWRVb6AQZahY,626 -babel/locale-data/ar.dat,sha256=8ClpxZdrXplVALQ7UzQRwmmEbJMo5nSH1wNzQVfXBr8,335041 -babel/locale-data/ar_001.dat,sha256=gmM0xCrg2w8yy4Xh8viSHsnitl6HnuuDMv1yRdaE9Us,1698 -babel/locale-data/ar_AE.dat,sha256=0HjSYklVuIAiTVYB-qEzvdHa2jpX0d1bOxoNhPORbO0,1056 -babel/locale-data/ar_BH.dat,sha256=Yt0X2Col8Ha78QaBs5_H0FDllYTwUeGSZI7VCvMplqk,669 -babel/locale-data/ar_DJ.dat,sha256=0hcv-LMM77rO6XsghzDdqbIgEXy7b3be1ENh994EWrM,647 -babel/locale-data/ar_DZ.dat,sha256=LxHWSDb5T857YqpPqJebqi4rrm08IvgvuK-B8I8B7PI,1731 -babel/locale-data/ar_EG.dat,sha256=7NhEtUCRy1NrFLHz8VXla7JSZdILpnIc65DYOD7zLYY,706 -babel/locale-data/ar_EH.dat,sha256=CNFFp1Dwz32d0TcaMjTKIYVxJovVaFLlUvf9ACV-9tQ,607 -babel/locale-data/ar_ER.dat,sha256=gRdDWAO_ViChJEPChaJcNSIX4DmMbkAMPOpKnq1QuZU,628 -babel/locale-data/ar_IL.dat,sha256=v57QG4365fJbwLF6usm9-fEuq9qJYd74nRD_gWmoTk4,1213 -babel/locale-data/ar_IQ.dat,sha256=4Xi7cAbOE20jYoFxqifGshiC5tGrXrEUCsiZGwR21kg,2354 -babel/locale-data/ar_JO.dat,sha256=LouBd_IYs070hS-CYkyqg5_Y8sE-_y6cl_TNp-lGFcU,2353 -babel/locale-data/ar_KM.dat,sha256=vvAkx4__TxagJozvyudv38VzVgIljVPBPvyMGsz11G8,1179 -babel/locale-data/ar_KW.dat,sha256=oWH9zhdJxQivmCEgKERJ8ADEobK0BqdIf_6zfUfGgkY,669 -babel/locale-data/ar_LB.dat,sha256=cKY3x_auClEkSF-O9bdUuG5bOi-X4HZcZv-7HcM_uV0,2354 -babel/locale-data/ar_LY.dat,sha256=NsVSuzMZGJg7-AN4FurzzIMh8iqQECSEPJHF6bW0nJQ,1670 -babel/locale-data/ar_MA.dat,sha256=4XxmrdYhzerIdqqgHLH55Hg9W0cMFcqHjcAlPLRNn2g,2025 -babel/locale-data/ar_MR.dat,sha256=IRZkTxOZ39eZDjDDr_h9GjzgGbS9Kylg-8QQfJAzl0Y,2191 -babel/locale-data/ar_OM.dat,sha256=SwCPf_1V4qcSfB6F3LzQo861te_t91Kk4GUX8IV_A_M,669 -babel/locale-data/ar_PS.dat,sha256=hGNnwUj0XR-x19RySMnnOgC0Kd4odVkj85gYJHXxGLg,2291 -babel/locale-data/ar_QA.dat,sha256=Ymdu7PL0gvtu7JPJ-hUyoL1eN_mHss3ZF0XzMkqrsFQ,669 -babel/locale-data/ar_SA.dat,sha256=MxBfIMX4A3Na-0pYAK868hW35JMWu5msIVsF8PRWF0c,1906 -babel/locale-data/ar_SD.dat,sha256=nl5A-ub3QRuVC94h7X9Ak3gG9nrtylVXPh3O7Pb9PvY,669 -babel/locale-data/ar_SO.dat,sha256=5dbXvnXAyzeXNoRifm6dn9iHT3uR1-sERZJvw0xrdAw,626 -babel/locale-data/ar_SS.dat,sha256=xeUbi35nGVXcOa1H9b97Qx0GhQGmzbQmuyQwhpP7dFs,649 -babel/locale-data/ar_SY.dat,sha256=bHN5TGlFMD7H2qIWGO_5GCLjtPm2z5u6pLDLPTksCWo,2353 -babel/locale-data/ar_TD.dat,sha256=NbYxtvmfDFCgyukJrfEluSKqSvxGkXkFdVjbowqUUmM,607 -babel/locale-data/ar_TN.dat,sha256=utHPqirZxiuEj86xGgZwtv50o4sqavbD-pCLA02EkC0,1669 -babel/locale-data/ar_YE.dat,sha256=ugcwooc31b9YRfoeVUihy87zQGHbpe3Pcp_GzSmYk8Y,669 -babel/locale-data/as.dat,sha256=v0f4nBxj3fZPic9BPsPp4w61wfdUWeyrn0fZjyfNWTg,230479 -babel/locale-data/as_IN.dat,sha256=_1h7wmRt7evqXyqFIKyo7Ppjclhn5w9rMtLEZG7Fdgc,649 -babel/locale-data/asa.dat,sha256=uX2LqOD_JuPjax_NYcVVCrXUCKAzA0xAve7S6ZzfeY4,16240 -babel/locale-data/asa_TZ.dat,sha256=Rfjx5YBakJ7TNX3X4uETtuArOF40ftdEonNMAwVNRzs,608 -babel/locale-data/ast.dat,sha256=RiZhHO8GKLb6a6dSEdV5LLGpLzzfhNz0XMzHpgB5_Es,210339 -babel/locale-data/ast_ES.dat,sha256=-iocl3j5ah7FgqKU9XQR-adJKP8bGsBMLBFrbg8NjbY,645 -babel/locale-data/az.dat,sha256=QWl1YVyX7U_hMfum9QuBZBz4zB3NXNEYbuuJC6Ja-P4,191875 -babel/locale-data/az_Cyrl.dat,sha256=nPqsNWZo8xrNUv-N8zko_9Ve5pQ9WIDMdeI95CytiPs,38954 -babel/locale-data/az_Cyrl_AZ.dat,sha256=0C_Y00OpozgdcwgbDOGs2R67PQ0TBF1bMz4ovHLmZ8o,626 -babel/locale-data/az_Latn.dat,sha256=7wrR4YWwEpz672DsTtFe7BItp0oMldPoRHnDT4yP38g,2246 -babel/locale-data/az_Latn_AZ.dat,sha256=MxhS4BIHuziBc2dKVrCvBHWw-zt-ZRqb_mc7QyRegm4,626 -babel/locale-data/bas.dat,sha256=O9JPLvooFeB-9j1_1l_ceoknZUVVG7aTxXf0Pud4Xss,17184 -babel/locale-data/bas_CM.dat,sha256=6roi5oBt9ByVAnbFcedUcRg2HmkLI7m_gL8L8Xx18II,627 -babel/locale-data/be.dat,sha256=H_LUM0cEwMyAkBnw0UvBLHTR-mYnJxv9pXOjYsLZrUE,258410 -babel/locale-data/be_BY.dat,sha256=GTDO3Za8gEdwa1UabcPJ32n-rSJMvRfzBA_sh0Mv19c,626 -babel/locale-data/bem.dat,sha256=-_tBxlhspwM9kCqBwWO7BtjzMW-lA53eZ2omKfErUng,6555 -babel/locale-data/bem_ZM.dat,sha256=d2G4WKDe_WNPgAv1JxwRp4vsMfyIGdgBfj5xhy3E5MY,608 -babel/locale-data/bez.dat,sha256=bOuSiU51Cl-TV2XlIdyvBaRSvWrua_6FJSf0Yd3bT4w,17031 -babel/locale-data/bez_TZ.dat,sha256=pPQxCLShiJXgsePTeWi_2VtDRgjIorpbw2Ab-43Pvfw,608 -babel/locale-data/bg.dat,sha256=UJAqU4JVTF_CqUzNFPOpGadCFUe8YoG_-GZJ_wCwygs,228458 -babel/locale-data/bg_BG.dat,sha256=S98UqeOmRzTvOPoQeaXthy7N_0-ZCi3g3qScIOkGPxE,644 -babel/locale-data/bm.dat,sha256=UvSMvGOkaTuc1xClsfD0-6WaTGswrRKfYq89SzD8imQ,15938 -babel/locale-data/bm_ML.dat,sha256=SYWVELAdIQjQ3lBuH6pTth6iAqJNNaIx7BcxGiVwnos,607 -babel/locale-data/bn.dat,sha256=78q3cks0mrxGtG7Ap3UAHakz6y9ADBlJVF2is2BWX5c,257002 -babel/locale-data/bn_BD.dat,sha256=MwMquIkmom46hTd8CKQqNjq0h9oIT6kWmj-rTvLDXsM,626 -babel/locale-data/bn_IN.dat,sha256=r2TxDmuVgf4o9O7Cf4A1b5C-V9KwuY-0P_l8tAd-sKA,884 -babel/locale-data/bo.dat,sha256=3dtXet1Kn30N9c7_IKIVXY-Y2i7Hy9pWsIp262awTMg,22546 -babel/locale-data/bo_CN.dat,sha256=MvO2V4RU2DlFEFgbOw-hjWd6urYl307-WshKY3rlTfY,626 -babel/locale-data/bo_IN.dat,sha256=IORPH-j_pfMPkLapwgn1WpiXBz0Ww14YpwqWlbPzrps,722 -babel/locale-data/br.dat,sha256=Efh7GVXZ7TseoExgtaItATT6JYDbCaCURZTsDmXOEWM,252311 -babel/locale-data/br_FR.dat,sha256=YpLV2DDbxqxCSqEIeARiZFN93Zdm-sIvK1WbZSFaDfE,644 -babel/locale-data/brx.dat,sha256=7B-M7g9qrHT2PDvZq-6xTP898ngNpqH-qwiB3JvY8gA,124250 -babel/locale-data/brx_IN.dat,sha256=bwkbIeGZgMgv1gqFuvtEcg8IaUw8fU8386EX9NxwazA,650 -babel/locale-data/bs.dat,sha256=xA5-CHy_ckC36r_0fjX6F8tGkwtVvr5Q3fPs1Af1KOk,236345 -babel/locale-data/bs_Cyrl.dat,sha256=qpMX1PaPmMJl2MhacaXdE8cy1q3vPVvlIQRsKCNj6lk,191220 -babel/locale-data/bs_Cyrl_BA.dat,sha256=BgEXeYz5aTttgFbOjVxMt8iVwiiYfUW2K-sCsjqcqrs,626 -babel/locale-data/bs_Latn.dat,sha256=uwk-ewWX9CKMAfLwY_vXGjHF_g4Wr9DrpESqKQxUmtc,1978 -babel/locale-data/bs_Latn_BA.dat,sha256=edblc-NRnO8KuX3JVgKLz_gnAwYe2j01L3iORx-8IW4,626 -babel/locale-data/ca.dat,sha256=VkbK3W_WAdeKSNAPreqIHHehmkXa29lio6HUuFchyas,205061 -babel/locale-data/ca_AD.dat,sha256=bNYq_kpURgNvLK9gIo8oTycE1bPkGYTKMqa6JKHaLkM,644 -babel/locale-data/ca_ES.dat,sha256=B0ToeaEZp_47D_jlPmegrl2nux7jJdhTjERBHAllQ5s,644 -babel/locale-data/ca_ES_VALENCIA.dat,sha256=faT9vchH9xCQ3oY6aR2shGI-nra3S2BHllCzqcvI1Xg,3694 -babel/locale-data/ca_FR.dat,sha256=JxBZKaUKWLHNi01OliUAwDTlDAob7flGt2J_5gYaZRU,663 -babel/locale-data/ca_IT.dat,sha256=F-cytzBQLU3eQ7d-eqwL5FBwUsyES-w7IenrpJfRGKU,644 -babel/locale-data/ccp.dat,sha256=D-Z3zFzkvAtx4TFn94QvpQXfbzVSE3KNWIa7HRCCvJs,275311 -babel/locale-data/ccp_BD.dat,sha256=X4bHc5AxNakoqr-IIiW5pXlshq1rkhmd4j0vASONKCY,627 -babel/locale-data/ccp_IN.dat,sha256=CkS-g4E_3UpAWPJjcfSgLLlcyuD27IU-Qm4IWbAwj20,650 -babel/locale-data/ce.dat,sha256=gwy0HT8b1m8DmGvv5a8wee3bFCNEYbDa0pwxlmJaonY,138724 -babel/locale-data/ce_RU.dat,sha256=rKRXXvqaIlC_Tfa5SF9R6HucBA-8xKjx2A0rYkq6ico,644 -babel/locale-data/ceb.dat,sha256=YwpY0r-7M6KN1YmcaLW7SgFSdx1yFp52mVqibrVQ4cs,14214 -babel/locale-data/ceb_PH.dat,sha256=IIz-5_7M1McMnHJN34FagjNAKNFeyvgDIHo2RC0qaJo,627 -babel/locale-data/cgg.dat,sha256=5Yi9LIsGO_eigtjnod_HlXYMFk7f_GyahSbPgM2yHkI,16281 -babel/locale-data/cgg_UG.dat,sha256=29oSxuO0qn15ASh7buIKuXO7mY8l0CCjXPlLeTtqBGY,608 -babel/locale-data/chr.dat,sha256=xXmjvaz3o4oorx1Mz8mSYeR0mY1U7m6Kk9FaIdIdK34,196079 -babel/locale-data/chr_US.dat,sha256=j11CnbcC2COjt8xpooqGlEaMuY7HogdiNJLxKfeBvTU,645 -babel/locale-data/ckb.dat,sha256=RkC398fj4MV-J3h5gXZIVvx02o-QNVoLejjxegf6QUY,41589 -babel/locale-data/ckb_IQ.dat,sha256=aFZTJDR-waJrFCJrO2ugN4TRok8PWQ3gcEmdV6O_T7U,670 -babel/locale-data/ckb_IR.dat,sha256=yrnqsVJoq9LsKcSg_ohDFgHkWBjxYrR24hlZOUSgk94,1222 -babel/locale-data/cs.dat,sha256=jh-2Zl-BZDY4XdLcLQkUbirc0T3LoLD43EY63kfd-fo,287652 -babel/locale-data/cs_CZ.dat,sha256=Imyqwx45p8yWaflAiltP7ccTxXK0F3potP7N2RTbv7s,644 -babel/locale-data/cu.dat,sha256=rPG2xcL0oE-YmO73cZTNqfj0yY4mIKV2_58uWin5cXE,20286 -babel/locale-data/cu_RU.dat,sha256=LkEMZZAlLI59QsMHcLj_yE9c7vvXGnFE1FSvnkgZkwE,644 -babel/locale-data/cy.dat,sha256=eWrgesXXY9RM0NtaNKPdVocHizrtfpt1nKJFAawESl0,321884 -babel/locale-data/cy_GB.dat,sha256=rCCg3lvwpJORx7LgBBF2dWsd6VnYybbrA2Na7gu7Q_I,644 -babel/locale-data/da.dat,sha256=lE_A0Soj5f717xbJRW-885u210Qb80YafUnsIJ95y4U,197581 -babel/locale-data/da_DK.dat,sha256=vP5m0YY7VSUJcHy4fJHTaaYnJFWKEv0N80rUCEd7pPw,644 -babel/locale-data/da_GL.dat,sha256=OodsMwjqjnqXSimIZCOmUWDLLiIR9vvRj0imLbqx-mo,607 -babel/locale-data/dav.dat,sha256=A8cH1vXScTUFVf2lRV0hMXQ957TF3vFcfxdejDO0hIo,16323 -babel/locale-data/dav_KE.dat,sha256=tcXkL0o3AyPNTHJy5FlubLlhfHI6XzDwSK3lXSJMws4,627 -babel/locale-data/de.dat,sha256=qIRVbYLDdmpybehjkMIM3VGlNVFPpUk9x5J1mIE4PUQ,197068 -babel/locale-data/de_AT.dat,sha256=32JpQ4PJkEsB0dlBCz4BOqrFV6ANrXeYZivIGtw55OI,2581 -babel/locale-data/de_BE.dat,sha256=pubC4Po4M_ZKPiT6EBNPMqi5TT9p_v-cf4V624OX2GE,644 -babel/locale-data/de_CH.dat,sha256=DsfawA4hefcW9wyxOmvvkcmOdVQr4CivD37so9Bk_AY,4023 -babel/locale-data/de_DE.dat,sha256=2ON8LeGdw4j5qNt9W0QKYTxxTZMTnAMR7pTw6qnwoHg,644 -babel/locale-data/de_IT.dat,sha256=7adTDuD3BT7FDRebEbAq8VDJPVof1zhCfSTPFd0Ojm0,1637 -babel/locale-data/de_LI.dat,sha256=cgNDay03PtZnrNp06QeLFXcLdsA8ObWQy9pW_NFepj8,1339 -babel/locale-data/de_LU.dat,sha256=CQs6M5llCpctge33i5uLbxUzxTgNyuXa-izDdHwIVLg,1083 -babel/locale-data/dje.dat,sha256=agpAQ8Rcw1YbFLLtsKktAqSazx2zpq8QpCNrHX7v2MI,16245 -babel/locale-data/dje_NE.dat,sha256=RuHsfFP4RVlgcjI8SNx2Fu6TLMbxKkHMNcT-oiJIMOM,608 -babel/locale-data/dsb.dat,sha256=kozmD1hEZMJgcGpEkRHvaYP2Qr8CJFI85L8fVIAu8hM,179612 -babel/locale-data/dsb_DE.dat,sha256=7T-uUURejnX_8k9QPe_18AlJaUSEe9sA9TMmQ1wgZMQ,645 -babel/locale-data/dua.dat,sha256=bcxuGLFcYCtVFRPd5SgDkhTWbuqkxOD3mSgpdGOY4Eg,5376 -babel/locale-data/dua_CM.dat,sha256=lIrnKrSo0EoxlBu9GBhXq510jzSkiEsjqqUqC_995XE,627 -babel/locale-data/dyo.dat,sha256=PnfWJWkoPW-ejx4amchVKh7Fgj0QUhQZRKunyHtTNxc,10562 -babel/locale-data/dyo_SN.dat,sha256=-x1xQXODFTNEgMz82mei0ikGCKCtFqaxU_NfECwqST4,608 -babel/locale-data/dz.dat,sha256=tJZ6GIwTI1Bdbu58kL1EkSXljEaKeK4m4izG2a9ILV8,89987 -babel/locale-data/dz_BT.dat,sha256=VdAHDYTPNqFMnYGYbHo576XYFPG2UF384aLrehyaqts,626 -babel/locale-data/ebu.dat,sha256=HbHtkTdQzr5YZAkDkcFVHLrgjvX666F3RtNfS0Pp8jY,16295 -babel/locale-data/ebu_KE.dat,sha256=cTzjMTyTnaPHdpt23aNKauKqMbsLluKDRAtqLlEcHdM,627 -babel/locale-data/ee.dat,sha256=sbuNGrchVAjxZSubXsHsHsZhHnxDF6EQvlUsBituVeY,142502 -babel/locale-data/ee_GH.dat,sha256=wQJ8oXvauwAl57jr4kCI8Lbab1x5TkDHXekT4DFthso,607 -babel/locale-data/ee_TG.dat,sha256=TM0UYyUrl-Bmt1jlWRIF5bV2I2VE66u05sKuR8FGEFY,1159 -babel/locale-data/el.dat,sha256=p_pvI3tl89K1INhijzoF7kqTS-3O9G1E6ZJbrzFxxok,238804 -babel/locale-data/el_CY.dat,sha256=VD2Go4Sc1zQVjMJtLGvnmuF5OPEIeywn2Wwf4H6Fdjk,626 -babel/locale-data/el_GR.dat,sha256=zCFaaWmChFq2CF-AKZwRnBVUrM7g3sLNzZnJwrSIIZI,644 -babel/locale-data/en.dat,sha256=wX1t7tIVoUaqjyZItj-cKAaXrfqsCGL7ECdLhTSIj-A,188908 -babel/locale-data/en_001.dat,sha256=D2FJZ32li6xFhpO-R9idEpvtufrPSiN4ek0LRdzYTu0,22984 -babel/locale-data/en_150.dat,sha256=qTgjmREIoEc2Tb0aLkbDyjAzCKmCT8TVzcCpLX-Ryy8,1783 -babel/locale-data/en_AE.dat,sha256=CN_hxkBYRCd-a9Bz3FlCK-EFnZQK_toPEIc4XFZXiEw,4132 -babel/locale-data/en_AG.dat,sha256=1DmA0Xy8J-0SnJ1Q6v4esqx9Pefv-HSW78yVFJmrj9U,645 -babel/locale-data/en_AI.dat,sha256=bhCQZ-Z5tOZRQW3PTA1rUs1sQGjGEbKximNzwVSchG4,1197 -babel/locale-data/en_AS.dat,sha256=_SIxul_ScgcJ-XykW7DL3KHVNv64MupuobtohitMP4c,626 -babel/locale-data/en_AT.dat,sha256=0SVp9Ppii1u4xW0iw5g23pZgoOf5oGK25-irBqFVMns,1218 -babel/locale-data/en_AU.dat,sha256=sWiCpDVuk_oH7fZe2a8dyMYEy8anAaewADDb7DQAw00,19371 -babel/locale-data/en_BB.dat,sha256=baZlkeds3JOu-3UKCF8ujDV4rvfXYlaKgJ4Dc1fXqiI,626 -babel/locale-data/en_BE.dat,sha256=a7P2EyuIaAjbXY7j58nq31PwGuZf1lYRFnojFYj_OMI,1511 -babel/locale-data/en_BI.dat,sha256=bkq4k2bBo_E3A8wwX7QEnZkU5LtQdTrMk2-QQ4imhMw,1180 -babel/locale-data/en_BM.dat,sha256=X6PvUgbDx6OwHMalkjAXDd0lydkRBsSBrZqNl6UVNoc,645 -babel/locale-data/en_BS.dat,sha256=9TrCiUQfxHHx7g-yz-_GI2klqVu2g252j0LuXaktYRo,829 -babel/locale-data/en_BW.dat,sha256=X-9K41JjPlc41gmxcpaodMoIwXn5fa96bQYbJqv-R_U,2789 -babel/locale-data/en_BZ.dat,sha256=eWzZruSKi_tgKUOc2rXUdxwNefFNhkLWXEan5uKgYI8,2968 -babel/locale-data/en_CA.dat,sha256=fjrU_3issiPH6OyYP7McT5ksLmvajnuZ-E1MeTGuN5o,23633 -babel/locale-data/en_CC.dat,sha256=B5QeLVVvHi6KfCjRyhNIOqSCQOUZAqw2oXjAWJhgRnA,1178 -babel/locale-data/en_CH.dat,sha256=3sFUD9lRJQzMY-3aEbRem9G11PSz5qK405qUUSAIJgA,1118 -babel/locale-data/en_CK.dat,sha256=sK0edWgfCMJRg0cwNPMEybw4r3xMqvpWEqndFBiWNvw,1178 -babel/locale-data/en_CM.dat,sha256=6bqtyCDo46KZ9i4uwBJFM0ycKp5xMfKM1k2otywINNk,1428 -babel/locale-data/en_CX.dat,sha256=aBkfLVs1UrWVD6v5uwBtSWBPVV4laI_FJqzutMfgG9s,1178 -babel/locale-data/en_CY.dat,sha256=ccjHkNGpGSiwfPpVuQ6i-bP6V1DUzgl-uZkksWdgSY8,626 -babel/locale-data/en_DE.dat,sha256=VEBAVN7p29z-qYL4NfxSToa6NoODpWBrE2Ubt7lzrdQ,970 -babel/locale-data/en_DG.dat,sha256=MwocxJMOwXkvTQWxNUWVrJJ0aoodMD_ynLWZmJw1bQc,1159 -babel/locale-data/en_DK.dat,sha256=5FZcz_4YOiccWFgO78b17TMTraw3jHBQxZ9KGOFGPKo,2368 -babel/locale-data/en_DM.dat,sha256=6Rm5kjxUpw1DEtfbgMyvqxGc3adeO1k3-d1m2Hmmpwg,645 -babel/locale-data/en_ER.dat,sha256=txc2R0EnMpsjnCYuYvwmufbkFsZoAICHle1dqc9BffE,878 -babel/locale-data/en_FI.dat,sha256=ZzcResQZZ2FjJ_mibuL3uUNoko6y7eLBmnL-csiHl2A,2300 -babel/locale-data/en_FJ.dat,sha256=AkxJVXEQLA1Ua0DngWALCkrXqrUubqYV19gSTpzSz4g,663 -babel/locale-data/en_FK.dat,sha256=DyyvgOqM5DTTLJd_q4p3LxhnoGDiJTIQGKGNxhmIou8,1201 -babel/locale-data/en_FM.dat,sha256=H--72gqzWZz5eW4lUNxBsNBxCln8004Xx65RlJ2S2lA,607 -babel/locale-data/en_GB.dat,sha256=97zYSLKA0m4v7P-V_TFSN_UKyIUKDZAjTftemDkO-oc,4341 -babel/locale-data/en_GD.dat,sha256=bgvDAPFq8l7HTa1kE5IzpVU29YsGZkEmmqyIsSRCJQU,626 -babel/locale-data/en_GG.dat,sha256=ifKq9gm5rf9YNecYWdijPzNYoI_Qf1dFozvQIhDR8Y0,1264 -babel/locale-data/en_GH.dat,sha256=hy1ltceBe1aTrg3z-DHmfB-bnAfWYpEA1OEZ5gsyql4,880 -babel/locale-data/en_GI.dat,sha256=1Iy-rJ22TireT4CzQfqaqi3a202-tCvmb7zdJ4314is,1219 -babel/locale-data/en_GM.dat,sha256=z2DFG5DR5B8RtTTIsVwZATy0S8rv6zAWLyRscQd3k8w,876 -babel/locale-data/en_GU.dat,sha256=bMtawZxXvjc5yRXtQXrjZPTX4ZCMpnNF4CVS_1F9K5w,706 -babel/locale-data/en_GY.dat,sha256=BqU6DCTro_M6hKRhOa9m0hyBDkpP0sB8RfHbDP2qrVo,685 -babel/locale-data/en_HK.dat,sha256=ECm3X9TpRz3BRiZzS5PE9PPWavfqzmIOtxKHWJViFl4,2041 -babel/locale-data/en_IE.dat,sha256=2lBAkPxrSoaj7bZJk8cji60rG8vvmccyjGpqDhpnBTw,2061 -babel/locale-data/en_IL.dat,sha256=AX8nfaJRv06sLvsAwjd_6T-4Bq3bsUX2t09IbslQuh0,1415 -babel/locale-data/en_IM.dat,sha256=H0aqDWIDNMcvtiWVlyCxLrUuKck6W4Z7PSaFTBgZN4w,1264 -babel/locale-data/en_IN.dat,sha256=V9VhRVn8_5Gxz-flT_wSPUXB-ZeQvrxkHQ054fe70I4,2935 -babel/locale-data/en_IO.dat,sha256=XHbYlZcZAPiASCNOgblEjjfEteKK1t_yMs5KuH7mbXw,1159 -babel/locale-data/en_JE.dat,sha256=mTXSvtZBCgkwSDw_98BlFoHt4t8HmT8LpG4EwyLxFXg,1264 -babel/locale-data/en_JM.dat,sha256=bkStMWRlXL3avU9nP8SqLr3RgexXFf2759B-ddWpYSU,1617 -babel/locale-data/en_KE.dat,sha256=zIumuglOQkXXw6UBWKjYVsM4Xh9ofXtjzSSELyG0dek,1449 -babel/locale-data/en_KI.dat,sha256=yzrJdQnlYEqBLzn0_lhvdvwLgO8PNu7amY049pRWNvY,626 -babel/locale-data/en_KN.dat,sha256=Okq8Q5sfYpMAFO1mWI0zrnt5T1HOIS0RsizwmOvDnvg,626 -babel/locale-data/en_KY.dat,sha256=6OZST-EB0kOfsSXlH3Lf50yIDUXEqb3Tv4pt41bHCcI,810 -babel/locale-data/en_LC.dat,sha256=uT6fq9Y7SonQiwTniGmVdoEiRD8V9xnG2v0JPq7_JHA,626 -babel/locale-data/en_LR.dat,sha256=3X0kSLR9P2riE7L3coz02uSB0RBvBjmGDI4xNw9IDbE,876 -babel/locale-data/en_LS.dat,sha256=C-zMOTGHLkrT9Rcy7Fb6iyqdsLVxTFEkfDBMxq1bnhA,876 -babel/locale-data/en_MG.dat,sha256=2tWGxQYUoBOnqap1IPgCbk-uEOJVohjPMwJwm3eZ-Q0,1429 -babel/locale-data/en_MH.dat,sha256=bbe847fcBp-4kzZv-XJvFWSbVz0p9RyUz11Q5BBkyrk,1359 -babel/locale-data/en_MO.dat,sha256=pL92dz8HCGnjF-wdGm8wsnouPCLFTCOE7vhstf8XpfM,821 -babel/locale-data/en_MP.dat,sha256=15WnCMndLQPYhH94O54yb39H-WI_Cbv1wOs226UjhEA,1340 -babel/locale-data/en_MS.dat,sha256=HKKSWqRV5wLDYJ8bsfptoeUmTKM4WF6uQXCCWSn4tAI,1178 -babel/locale-data/en_MT.dat,sha256=jG_r8nn4zfVenRg4NnDCE49KUwgwSZMULF1fn6-Aaxc,1945 -babel/locale-data/en_MU.dat,sha256=dTXBxkoStB11NJEfCI7Lk-aikFtQfNbzqu_AO00Dv8o,1429 -babel/locale-data/en_MW.dat,sha256=S3sP1oPcKqzi1LuD0RPS_zhHjh-QwML8N690WMu4lwE,877 -babel/locale-data/en_MY.dat,sha256=r7yQs7ToO6rVdU03_THwkvj5of3irIgsaBP7NVVa-hg,707 -babel/locale-data/en_NA.dat,sha256=TUtOUjM6gdOCCxRo1hyY2uD0FAxuAsJ5zX2ttnqi3PU,876 -babel/locale-data/en_NF.dat,sha256=3Ax90cl26hC11xws1R1BR7f3a3Aq0bir0iLJpoZyQS8,1178 -babel/locale-data/en_NG.dat,sha256=sFZNrlCMZepXl5e9keqii9Z5zFuyS16R8oseYHN7T6o,1430 -babel/locale-data/en_NL.dat,sha256=5nDlKVas8Unr6igs2LEZP-vABuwzCm_-FouqtOoi76Q,1115 -babel/locale-data/en_NR.dat,sha256=CYRxajoGhR7Q4_cLTM7e0CxZ5WvRkuIAPB78bMt-sFU,1178 -babel/locale-data/en_NU.dat,sha256=CCM0oHPRMBwNCGlNJm94krl1zyJvVCTIr4yD9XOTers,1178 -babel/locale-data/en_NZ.dat,sha256=-BiOtyCtqLAyIOwsI-IlWLi0vjoxUAOkqR9I58QLOWw,2252 -babel/locale-data/en_PG.dat,sha256=g6U0Ch-VKEDfF67z7xPDto7M21uck2BLN1fxMVdYUN4,626 -babel/locale-data/en_PH.dat,sha256=iyRv_Jzm5_mzlOEv57K5SY0F1p7Q62IEEhSwl7-zl3Y,647 -babel/locale-data/en_PK.dat,sha256=VgvTUaova5Mn2m1PH1vmTL5SY47fiF52g-0rNlFxNGE,1977 -babel/locale-data/en_PN.dat,sha256=uw5Q9dusFuS0N_WpHusewTgruprVn6rH5AmAcTqNkhA,1178 -babel/locale-data/en_PR.dat,sha256=wiMMS_iLTFOKBnPfXBKi8axJ18gZs_AhsSX-C5xbXuc,626 -babel/locale-data/en_PW.dat,sha256=YsAyfY2ZCIxcH7vjdDhhJw0i1aZBUjnhswCmvFPTcEI,791 -babel/locale-data/en_RW.dat,sha256=SXtqSRArmZ8Ae6tRLBVKN9U2jbcj4SBMVlmJOPfFY88,1429 -babel/locale-data/en_SB.dat,sha256=TeRvJTZaVeth3jfMShL4J0uOP-c1ALqPuGz4Eay40y0,626 -babel/locale-data/en_SC.dat,sha256=lUN96sufcnMy_OfIOEl6UCRSSvo_QItmM9rrwBHWLBQ,1179 -babel/locale-data/en_SD.dat,sha256=0HivywfMrAPu5oRYBvds840J3Z6VyuucNEwLVQtYLA0,919 -babel/locale-data/en_SE.dat,sha256=Nu0YE8yE53k2b9-z2_v0psDPiBEXS3CSUj1qRyvMUoo,1445 -babel/locale-data/en_SG.dat,sha256=LT5fEP_actBmosDXIwGlfrS1aCuLJpN3ZOZA4XzVjfU,2075 -babel/locale-data/en_SH.dat,sha256=5XMQM5SJRvoOIRqaR41oTHFJExn5V7GDUX5xiWlwF4E,1201 -babel/locale-data/en_SI.dat,sha256=UjOS7UvVNnplRgs7YHYq_y3VO1mOaa989GxkXgaBMgE,986 -babel/locale-data/en_SL.dat,sha256=1rmpoVhWrAXrcs-bHLXkrg-kpDL_YZalzDuH2fqR4k4,877 -babel/locale-data/en_SS.dat,sha256=oGCDgGIjDXUK9hT1suYMfML6oHRHm313ecMk7k3nNmY,899 -babel/locale-data/en_SX.dat,sha256=9s9Gw3t7w-GJsdo6kj-1x0g2TqQQmwfjPN3HbK8UGFQ,1181 -babel/locale-data/en_SZ.dat,sha256=9Z4vBh4OBz9qkogw6-_gC5TQMhZBr88afkxbW6W9sek,876 -babel/locale-data/en_TC.dat,sha256=jSfmNR9nqY3QY3N1OV5hlpZqi1zbULjy6FoBgkp1yWw,607 -babel/locale-data/en_TK.dat,sha256=7Gy79svNx87Zoojlbh47BuKDzXGnX8MAtDZfp8lwgVs,1178 -babel/locale-data/en_TO.dat,sha256=_jEqtNA13O7OvHiS2nYxJRJkSVTEwHp0Gz8a9Ap2Qi0,627 -babel/locale-data/en_TT.dat,sha256=vckW6xKEehZYDQSnUNFc4atkBHUoYuQIHwSh2955a0w,645 -babel/locale-data/en_TV.dat,sha256=zxOKaQFXMQ-Xuop3ypoHtrkNnjJxEsBMLzY8qo06_4Q,1178 -babel/locale-data/en_TZ.dat,sha256=y1E2NWDNV24pOB07058E130ucyopZL-ES-J3BLZxf2g,1430 -babel/locale-data/en_UG.dat,sha256=YQAlu-EAk9G9yvfvTQ15JGjfHYdBcaaspXwLDlbQ44g,1430 -babel/locale-data/en_UM.dat,sha256=-dAHtvQRXZvhqFx4Ywp5ZfEmyLmmas7IoEyZqiUMBNk,644 -babel/locale-data/en_US.dat,sha256=MXmrAUts6riPcAPxycocGvrM5Pe1Yy4c1bgrMf1X1CM,644 -babel/locale-data/en_US_POSIX.dat,sha256=ItCAoaRpz7l_hVn33T09k8oO6G2zaTPLVhetlzyRu1Q,1222 -babel/locale-data/en_VC.dat,sha256=Iw2ujy8fVyq5JqWFMZpI4mV8Se5tshArasCTGBiiAYw,626 -babel/locale-data/en_VG.dat,sha256=4bSbfJa4Ce2prdCxLLgLLavOIgLzDd8SPAXOudWIGbE,607 -babel/locale-data/en_VI.dat,sha256=z93RamsD556JVbwZ4QgFpZl51wlljnQL2PaLjZz-AIU,644 -babel/locale-data/en_VU.dat,sha256=G35aw89Q2xsVnTFS4KD01XW2zejaqcEovjriXjcTh0U,627 -babel/locale-data/en_WS.dat,sha256=Mugt5NlU0-LzAyWlSsLv7yUli8JgZdwcuwnxsRiU0pU,647 -babel/locale-data/en_ZA.dat,sha256=MBf_0lOrGeM0Arv0-lAbLO3W8UR8WYdDwyhBGyWSMbY,3290 -babel/locale-data/en_ZM.dat,sha256=QF860N1xHPumZFZUTGddFIUF6SGBBzga4-QoFozR13E,876 -babel/locale-data/en_ZW.dat,sha256=yY7aWXU5ZJbBowJmIGIa5RvoanIkTHvOiiQqIp63jis,3220 -babel/locale-data/eo.dat,sha256=TMUDwM_wjcv8djKo31VYxyFR3Mt_LIiEisfBu_pqN6k,40766 -babel/locale-data/eo_001.dat,sha256=tSaGBVAG3TxoCtDe47FyjEQ5TfafFOfiLMuGo_UHtRA,841 -babel/locale-data/es.dat,sha256=VaR2n-jrrDSsyTdDayniQ3astW1gipiOHaQPQHBWEdE,194176 -babel/locale-data/es_419.dat,sha256=nUWG6Iwzuf3F3b0JTiSMPWWLrvY0rpjdoTybS2dxfYM,26732 -babel/locale-data/es_AR.dat,sha256=Ghc1MeHAXi16RC3ZKebD5d2woK4nAJQ65f4BkCBO4VQ,9240 -babel/locale-data/es_BO.dat,sha256=aQDwHqAMdFenAwv6-_r03hhEoyiDyxLZXzocEbBJfsQ,1995 -babel/locale-data/es_BR.dat,sha256=QZywQ5KZyLte_fNcqbDIygsPzmDF6Ja9As1TFzHMyL0,646 -babel/locale-data/es_BZ.dat,sha256=a7sxdDb9LL0tGBxsi1BDaAp6f5Uja3sCJUxhD3RHHHg,645 -babel/locale-data/es_CL.dat,sha256=1EN5nTveM5IM2j8yUW8Y1-9ETVwCb8zzp4OGfLQxbko,5519 -babel/locale-data/es_CO.dat,sha256=5t2IwUjWhe4ac35CmHySMf3T1h53HVwVTkU-ArphtUE,8827 -babel/locale-data/es_CR.dat,sha256=2BdF9W_FF2r69u1RwZVZYo5mpZtSZ09VQXYLLZDMzzY,1840 -babel/locale-data/es_CU.dat,sha256=sgvidA7XSwMT_7G8aC-Wa0ORz6uo183Wi-Kqfi6MB9Q,647 -babel/locale-data/es_DO.dat,sha256=Ky4Hi1jNM_D54yZqdOHHcJo3p955IR4UqoWOcf8EoC4,4375 -babel/locale-data/es_EA.dat,sha256=KsGmYEQF3RGUBwIl6cy9rrK_w6EfBFQEumG_eUjfLs4,607 -babel/locale-data/es_EC.dat,sha256=QuO779SP9qI4P3ibEvXN85Vz5TNZwVawZ2xzSsX_ls4,3428 -babel/locale-data/es_ES.dat,sha256=h4CfqSZjQiBcat4Ail-hSnB-m-Y_NugqeBfxIgMt4bc,644 -babel/locale-data/es_GQ.dat,sha256=RQKztBLLAiTfMLf3BGg7dKptJiuAtnJnqCzDDwsNsPk,890 -babel/locale-data/es_GT.dat,sha256=9AynkT_3-f1NgQwjHLhDBuTdk1g-fEk6L-lgByM9UzM,5401 -babel/locale-data/es_HN.dat,sha256=HG_KSm5wCWirqFgpkqsblYDIP-DvG8uXCJl5SerlPB4,3630 -babel/locale-data/es_IC.dat,sha256=CVkbqGdI9IV5YLwQm98JmeV_j9aNVBVXfybiAfUllTM,607 -babel/locale-data/es_MX.dat,sha256=RtDHQqHZ0k4x6swSZzqEBAMz1H0dDvg1dbp6x3c84bc,30227 -babel/locale-data/es_NI.dat,sha256=PoUvRbw15FFGGMSXH1UcGAMFDE56pUhCwqMy-OQJONI,1774 -babel/locale-data/es_PA.dat,sha256=_FLAiUSNiqSMOo_4Rie9jUQbuRyPvWayhasf0h2offg,4038 -babel/locale-data/es_PE.dat,sha256=J7BX7ZMyKLKaoZqdnaJ6ZhEE8IobYAgdbr3cdKdmZJo,4997 -babel/locale-data/es_PH.dat,sha256=GjEpZddkkAk4djW5BGTdAbNB3uNLxyF9gRI0Bq9TJ3I,1223 -babel/locale-data/es_PR.dat,sha256=r1ZKqoFKiRSgmnMsQqmrUg6YJE6mIQ7X9XgpE0G40Ys,3899 -babel/locale-data/es_PY.dat,sha256=JbyP6zYSw27ITxC1cnjOG9GdF9uyvYkvTHN7Tu0a7-4,5696 -babel/locale-data/es_SV.dat,sha256=tjtwln9QSey5X6pYLlGnjTAhqHr-qWB0QpG4w2njsAE,1482 -babel/locale-data/es_US.dat,sha256=VrgZvQX1GgetFpYpHvckiQYogVWRwjc2M8D-7TxZv2Y,24121 -babel/locale-data/es_UY.dat,sha256=tim90leiltAPHB6PL4tKlPxtRdOQeyGdZkmhcX3Mt_k,2620 -babel/locale-data/es_VE.dat,sha256=zoBdAd14aue2QuyRO3mezQrhE9cxwcBf9NKlk7ztd2A,3869 -babel/locale-data/et.dat,sha256=24aCVLFHNppuQ0X_vnBr4OVFcmWZe5dupyyxcfTEe-I,196651 -babel/locale-data/et_EE.dat,sha256=UwAPPde8mci_crGM2PS2J8THqUklf4iLC0LNkJfhIm0,644 -babel/locale-data/eu.dat,sha256=WVuvurT0swPV-ulsfGd2jOpdLnXcbeDs2Ffwf8Q-ulU,173710 -babel/locale-data/eu_ES.dat,sha256=e2mycbz_gicbFO2NxOroBar1paVtVks6rbKU0DQk6hQ,644 -babel/locale-data/ewo.dat,sha256=CVDmRkKDgI98Ivojg5oKXKmA7nVSweqZwBOXA8GhMe8,17648 -babel/locale-data/ewo_CM.dat,sha256=yI-aZ1OfnkLk61VJZjwNOTD7D2vMJtMSLKsd00E59uw,627 -babel/locale-data/fa.dat,sha256=FKYp2fb-CSGnNTlCC3A7rMbyzhsLtRVuNKD5P26dhFo,209713 -babel/locale-data/fa_AF.dat,sha256=NaSQ96MgGR5EB_RrJuP7gFiVrb6loUYEMYcypy7zyoI,10921 -babel/locale-data/fa_IR.dat,sha256=_6JotyeGMhpci4hEoWxCqlzsc95z74XWfNvGlGLtWLU,669 -babel/locale-data/ff.dat,sha256=xPo7THascqSO1Rwq2MGxSCutINq4u6E0KdHNA1auG-o,16137 -babel/locale-data/ff_Latn.dat,sha256=qOic-JuCdeeklvJgvz_ic-aw9d3EsppDxyFQm7wj0mM,857 -babel/locale-data/ff_Latn_BF.dat,sha256=TBLGrbWzDpgdEEYFKQkpZQkv2I0K51gAkxkurqqohVg,607 -babel/locale-data/ff_Latn_CM.dat,sha256=ZQcoR9AgeNUiLmlOJpSHw3Yd5sbahiRIaB2lsQkOsWw,626 -babel/locale-data/ff_Latn_GH.dat,sha256=7DSLmQiwlps_cxa7MaALYb7DX_AVYlGnu15UqDtApyw,1206 -babel/locale-data/ff_Latn_GM.dat,sha256=xbEOy_TAIY-LSlRkH64Vsg9xfbKVrCkmwamam8Z3xds,1202 -babel/locale-data/ff_Latn_GN.dat,sha256=ULYUzwcPqC_gimeYGNJH_j-bIOlzZ20uoedKbXB6jxc,627 -babel/locale-data/ff_Latn_GW.dat,sha256=lTepLAkz6EAUlbB21jVvqGFUKf5JtLzxaOViEFlwj9o,607 -babel/locale-data/ff_Latn_LR.dat,sha256=Lw-PTOI2dHUkdIDKR0M2QaJCGyI0MUHJK79r_khRokA,1202 -babel/locale-data/ff_Latn_MR.dat,sha256=taaeZq7jyy_js3p3c0Yu5UNx4qqUTZ6zMRNowaqodLY,1203 -babel/locale-data/ff_Latn_NE.dat,sha256=iRB6Y3Yvt1tzteou4XSPNImRDVwE9N89BZ21Y8n9A1U,607 -babel/locale-data/ff_Latn_NG.dat,sha256=iYPaPREiLDN1GaFfnhAPlFgOIMeGiUBcESuCiffDGnI,628 -babel/locale-data/ff_Latn_SL.dat,sha256=_u93myYrYvpfjoKunJyec1UR0N_sLUQwHftaG9RPOns,1203 -babel/locale-data/ff_Latn_SN.dat,sha256=-2Hxjt9xNLa_654UcxzMMv1KwUzUhE1wKPyg6jJ-cJU,607 -babel/locale-data/fi.dat,sha256=czptLtqLLwRaT87E8j4viQYquDALQk_dO4Z38WvE0Yk,220945 -babel/locale-data/fi_FI.dat,sha256=MGv__27w2XhG65cGxiclFzXkB_D_mtD80vGGsy6nGHQ,644 -babel/locale-data/fil.dat,sha256=BOUOPdsMPhiofGhRVZanQzT3o3b8bK3V-bPqJ3tMKAo,172841 -babel/locale-data/fil_PH.dat,sha256=MTbJNbhtGJjMyeNVaDc06RxfS4iJax53eUzWVERHSzk,627 -babel/locale-data/fo.dat,sha256=kCxt3Qo3lYS5H-DL_DHwQOsIYEqOkgs_GtQQ44Cozv0,157255 -babel/locale-data/fo_DK.dat,sha256=lmV9_xmi7w1HrXr5Yw7buNhw8hkF5DuWjQByYKIFm64,665 -babel/locale-data/fo_FO.dat,sha256=1YHlmzgNj00QkxBql37zGh2Xk59lIuEbf4AKb7eTPSk,644 -babel/locale-data/fr.dat,sha256=OGxp5sUu9_y5IP-Ku2J-5FDGvkpVbTqOGgQ36ZXt7PY,219084 -babel/locale-data/fr_BE.dat,sha256=XvJOf1Tlc0LpQ3-hhQMfSC_XiiGOSR4P-bHQPtcboBM,1272 -babel/locale-data/fr_BF.dat,sha256=Yg6rGyEXEZDbXdN1s2EmVqgVKAzdkaSRsWYbbF9QIW4,607 -babel/locale-data/fr_BI.dat,sha256=QTAzACKRrDjWBIvPnuh-S7pKSgQ0-EaPibEA9bnw-2Y,628 -babel/locale-data/fr_BJ.dat,sha256=84mKliQXBjf3pNe-WKeZERB1Bcdtxy-SZL8uMHZal_c,607 -babel/locale-data/fr_BL.dat,sha256=Ka59fV0FRq0JzEeNzq-St-Mf848YNmOCCKEpLp4EX5g,607 -babel/locale-data/fr_CA.dat,sha256=J6ijg4KmEIHf2UergLrNzEP8TdL7s-7iYK188NvccSg,66182 -babel/locale-data/fr_CD.dat,sha256=iqZnRL-wo8a8aVUWQElzQt2-Gue91GXrjaxZZ5JgmJ8,1124 -babel/locale-data/fr_CF.dat,sha256=RwuuRJZlNtIhH0rxZ0Q_mfYx_Z5Q3HA_D52-qMSNaUY,607 -babel/locale-data/fr_CG.dat,sha256=GLdmlB2XcqX8tkO6l77gX8QUiA1-5eoQG9392mOXupI,607 -babel/locale-data/fr_CH.dat,sha256=i1hobiCDrCYMXMOmTILEGR33AgD_S4Idqo_xXn7g0SY,3101 -babel/locale-data/fr_CI.dat,sha256=AMmxI3EDyAk6_eB5vGbm14Z2bUL2RkkkgjOLqqYwrZA,607 -babel/locale-data/fr_CM.dat,sha256=_EXjlq9zVSLhwAr9dlGsxBYYaLBuSYIJ_-i3yQy62ns,2101 -babel/locale-data/fr_DJ.dat,sha256=eahykN-Lv0UwRDXuwv7-28RSO9l8kC9mOOHHXG99Ad0,1223 -babel/locale-data/fr_DZ.dat,sha256=JKNF1ht8PGAL4-e60lungLzK4K20v4DGZbNQt15o3fs,1265 -babel/locale-data/fr_FR.dat,sha256=a3YB7XtoKNc7Xdt-U_6EuFyVBEgFgHeZ9CvBc3Yzjx4,644 -babel/locale-data/fr_GA.dat,sha256=Ps4qHm0s51rRNwpSw2YbSexqC7sDYMfyu0zL0iJc6b8,607 -babel/locale-data/fr_GF.dat,sha256=F8q_LQGRmooV6LxNIHDfnG3oDXXGnYYopP-ujwDSizw,710 -babel/locale-data/fr_GN.dat,sha256=pq1ao_Medwq07tp6P5AtqZPlrBzqtIA2R6ywLllJyQY,627 -babel/locale-data/fr_GP.dat,sha256=weJ00L82hKf6xOGLC61Tij1VJ5H3bvN0dnSUEUV27Pg,644 -babel/locale-data/fr_GQ.dat,sha256=KwtyyIOmimlf-5-PEfzlJsztaM0CXx13IDZ68jdBYmo,607 -babel/locale-data/fr_HT.dat,sha256=JcnL7Nkbmlcm2GsiQIxnEcrB5VoeHuw0i9Io3ujI640,1891 -babel/locale-data/fr_KM.dat,sha256=wAFOqIYkxtC8fubh9W9hKEOw89O2qmIWGH-z8m4zC3Y,627 -babel/locale-data/fr_LU.dat,sha256=X48QX-y6C5HuwtOvBCYjYbG153us51yvLE66MTYk0g8,705 -babel/locale-data/fr_MA.dat,sha256=HAKjUmYRtiYg5bPuxpmWOiETyHSM2e3F0MJKyF7clRo,1295 -babel/locale-data/fr_MC.dat,sha256=xg-cqOKfvudfHpU0YEWJwKBYdPUUCyf04623NkzlPIA,644 -babel/locale-data/fr_MF.dat,sha256=y7K9sxuz2cfiM5mxj5HP3vUrFwUvxdNqhNXBmf7IrhQ,607 -babel/locale-data/fr_MG.dat,sha256=Ie_c98hiYNsbSsj3XgSZBv8vBsDJvGhPXD7cBBtzSSY,627 -babel/locale-data/fr_ML.dat,sha256=xtckB_DZJRbd9j-aekggaDo2wtG4K4Q2MeG3GBupvPM,1144 -babel/locale-data/fr_MQ.dat,sha256=taQ9FDzbIrvD6LgkraEmPVD_Un0unsJXkgkU1rH_718,644 -babel/locale-data/fr_MR.dat,sha256=PbXQYUYZlFU8URmI8OeZ6O7SAZZOx_TCL2bxs_ilAxI,1203 -babel/locale-data/fr_MU.dat,sha256=8fELzIJhgczk9JucdI1IMikCSnL5k8LCk1dS68q6opg,627 -babel/locale-data/fr_NC.dat,sha256=uMR2yxfoIpxTTmeGka9y7p0hnL3ch6F24SBvbDLrl8s,607 -babel/locale-data/fr_NE.dat,sha256=Qx4bREydf4aupR9SU7ZZt72aoVBHzDSdQs2bWnDTa_Y,607 -babel/locale-data/fr_PF.dat,sha256=nvJ7u7lByAKHmmz4HghF9_RaL5f3r2HF4YRyOMl8AKM,607 -babel/locale-data/fr_PM.dat,sha256=uorRfZ9XXMmL3UebWphyYLgmkIQaKgHBQfR2YDbKwWU,607 -babel/locale-data/fr_RE.dat,sha256=biR9VqHmRXkXuNVbp62tu5m0e47UOupW8xLHCseLfzs,1160 -babel/locale-data/fr_RW.dat,sha256=ya3hnx8I_04vbYN8UolfgHuDGYsxIMyIcC99i6hxgYI,627 -babel/locale-data/fr_SC.dat,sha256=_l7VQ0RTuCTNdRpKIb4_59iTeU5ACXYRTQ6MTrg2CHM,627 -babel/locale-data/fr_SN.dat,sha256=vUOjpMoha0OtOvwn70YnaafSUc_KwL2iwgQzeYWjH6o,1295 -babel/locale-data/fr_SY.dat,sha256=ue9tpydvd35pkJSa3spqtBLRhVNesB8cUHGsaV6_xhk,1265 -babel/locale-data/fr_TD.dat,sha256=txJhV9BQyT0mzhyO--I5U4Tg7aFJybP1mIFWGCnY9i8,1183 -babel/locale-data/fr_TG.dat,sha256=6wDKXhxKopznkvtYoOrdWSnoyG6uFIZBMfsVBaicOPI,607 -babel/locale-data/fr_TN.dat,sha256=Ezx2vA1loQOWkUJ7J4AJp9kkNOG1LZtht3aFo5RpelQ,1203 -babel/locale-data/fr_VU.dat,sha256=ZgQ6sA467JMwLeFluaFNu0K371_nB6U60xoVu8f5-Ag,1203 -babel/locale-data/fr_WF.dat,sha256=3cX5YsVQSnIWvtZUfWDvmS6j1ROn5n2y7NQhaMVd2BA,607 -babel/locale-data/fr_YT.dat,sha256=PlyHp0evijlgZNqwlqzGA3Vd5Sg-8YqAshn0qa2DOjk,607 -babel/locale-data/fur.dat,sha256=l7MnjsGyf6paBvhc2ptmAzs76ozv3dFl9ZOgKxsF5uE,35099 -babel/locale-data/fur_IT.dat,sha256=ejwvN9cxtQZwBkyXQAZpNYUzYFysgFxVgvXVKclQJRc,645 -babel/locale-data/fy.dat,sha256=G_LaZPkRr04wFmJ9kGuI_AeG52QymjLrPEVwbooJfWQ,110136 -babel/locale-data/fy_NL.dat,sha256=nhxKtw7-G25m_7b7tSRqOJnimegsXUPL4HUh-5A1ZaE,644 -babel/locale-data/ga.dat,sha256=pOfrnacrPyVVIj2mIVQ3Zx3xuLpsfiyQ5MkpQrcySQE,315363 -babel/locale-data/ga_IE.dat,sha256=EnRVPIh4VUjDfkiB9s02m2TP3vDnBaHlmKPgfW95AbI,644 -babel/locale-data/gd.dat,sha256=F7tTnoJpF_v73ELahGQKGS8JxkYOErOa_rRsoeFp7wY,286062 -babel/locale-data/gd_GB.dat,sha256=U0i4ctdbsfL5CoppA4cD5B98vSfsfz0liAAGQ0A81bY,644 -babel/locale-data/gl.dat,sha256=wD6yvNvveYtPHMlxgnPDol4n2w2sJxeE3nBJTLZZrT8,171486 -babel/locale-data/gl_ES.dat,sha256=QnkGnjNmjUPyyrlCJH_ERU8d2R7hoxwaOjgAnDsrr4k,644 -babel/locale-data/gsw.dat,sha256=qggIqARI0NVgVe3t1I6BqiufNHifSpVwZZKuEvr4Jh0,108107 -babel/locale-data/gsw_CH.dat,sha256=MYXozdZ0H_TO_tLGex3-9jMtxwA_ggC67YOtIL7HVP4,645 -babel/locale-data/gsw_FR.dat,sha256=Tqt7-0qu6jwWgmUJqpE-IlXVdxJWwSzl0CL5fFjvsrU,645 -babel/locale-data/gsw_LI.dat,sha256=z97gmIurjhls6p3KuVQaEjtVhKMN3Gb1N6DZFp4Z2X8,645 -babel/locale-data/gu.dat,sha256=EPgHFPlwI-8galuxjZfM_SKN30m5FxFNuHs94u0DN-8,240477 -babel/locale-data/gu_IN.dat,sha256=IKkO1dxbal-2z4ryCnkkfqnIq9ODz7mkcIA1qTMHqz0,649 -babel/locale-data/guz.dat,sha256=p_lLOLBUf11NUyX3s_ko99ZWvzznAfoLt8eZzfHzNVA,16068 -babel/locale-data/guz_KE.dat,sha256=mZPi0_BX7npx8EdqhpWJind4kbNhw7OYAAqu7lAo-H0,627 -babel/locale-data/gv.dat,sha256=0Dl1uBLCFLB7Az64CxnnqE4q8LIfSS0aPeAce-Vkxg8,4167 -babel/locale-data/gv_IM.dat,sha256=PABxweL3RYxPq4l55rn6LROd-5DVwKZ0pysu1Fuc6nI,625 -babel/locale-data/ha.dat,sha256=Qoz8fQprv6EosR4QwGBn7fWFrhclPtxFWuht4SWYpes,48450 -babel/locale-data/ha_GH.dat,sha256=w8NWdFj6TIKsC8eo2kWorNwgLj4sZYYi56ufkWfzySw,1206 -babel/locale-data/ha_NE.dat,sha256=J2YetP7_CacIyuOkdRf6iiqsJ5u7RdLH5n_4UHFUyUc,48142 -babel/locale-data/ha_NG.dat,sha256=jlzeaMkYJFe_hIpCbfJIZn98hJWUh7EAroefrGANiqg,607 -babel/locale-data/haw.dat,sha256=tXRuf2DBns0_OvMJt1wNoQkknnKXG97hHLqo1ixldzw,16127 -babel/locale-data/haw_US.dat,sha256=oOE5jDDNwZpoRIAsW9IH9z8O4dJvDkJGBcrhxqclTag,645 -babel/locale-data/he.dat,sha256=oz7v2LgGDOqaDQM7PX6N_YVZwKS-o1wu1GcrhKJ7wJU,261916 -babel/locale-data/he_IL.dat,sha256=t5wXL5OtYL02_veNJ6q8Jjl6tO_rvngx-k-ET_8Rke4,669 -babel/locale-data/hi.dat,sha256=qN2bvRPesEdxGLGXCXGGs8kXyqZFaFOs-OtOcwqtfK0,236155 -babel/locale-data/hi_IN.dat,sha256=_E26Mtk63x0S_sHBIDa0OH2l-671oKocLyKNbyOxhts,649 -babel/locale-data/hr.dat,sha256=XidD6n4-tSsjxwUu0Du6XuQmxSuY4EoH6FwOkIHzuoA,219476 -babel/locale-data/hr_BA.dat,sha256=vXmTmPdhw_3UK7Uq-DtS69o4hV1p9qh_ATXztcz-edI,1179 -babel/locale-data/hr_HR.dat,sha256=mOAx3MaOIHtwTdxBS2LqjvttQODxHsqDlUHHFolsE2Q,626 -babel/locale-data/hsb.dat,sha256=0WoqoPYp46ku2fxzcewLkyXAA3sjnCwkwwd59DKAAMU,179147 -babel/locale-data/hsb_DE.dat,sha256=AD3yaZypLO6rR-ljF8F3NnVJxCYYCxL9WTMUpagn6Qg,645 -babel/locale-data/hu.dat,sha256=bokUuxUQyJkPGvtaEesVa3BVOS0WZ6ZLREN8lb0YtNs,190503 -babel/locale-data/hu_HU.dat,sha256=HzJJfSglsxs-2KNMktuKpZ9yOMa6bfQ7eudxGh0orHk,644 -babel/locale-data/hy.dat,sha256=USOsG-90IoRXB-uvsQcCvwFskJS9MIuRcQ6ZYcO2tB4,207877 -babel/locale-data/hy_AM.dat,sha256=E4cN87TIR1DzbY8ih_H4bv-s6sC0EuAO2F1l3I7xKt4,626 -babel/locale-data/ia.dat,sha256=AbRm3U78keo7BHpisZrZhxe9zH3Ss846DrslrRo52z0,112799 -babel/locale-data/ia_001.dat,sha256=hlAa0qtQHkLi2GpqHmsEyROZth9cXgmAH1-4X3dGlR8,932 -babel/locale-data/id.dat,sha256=7FGnheeRztRFIuqveQHXi--GtIBJX5eGHZ3DiFEc9VQ,159525 -babel/locale-data/id_ID.dat,sha256=89br-9nXjDl_YMYlmEZsXntLYg3zVvhnWhPW7I8TsK4,626 -babel/locale-data/ig.dat,sha256=FJX1bguZTb9nzeGLvV0-rCCPMSJD4zNBB4vRovFhnDk,19576 -babel/locale-data/ig_NG.dat,sha256=zLSkkEBmGK6ao-gQHmpoLw0QGnpk9AIfpHuwReF436U,607 -babel/locale-data/ii.dat,sha256=jqN5Jw5vYev2U5prUjk7W8b2ZDcEqfRWFY3F6TRX03A,12609 -babel/locale-data/ii_CN.dat,sha256=kSOyQhGFX7GGD9QbOTiQ03AIwHKTlPiAA79bhpnd3RA,626 -babel/locale-data/is.dat,sha256=2wQuZCiLU8LVDm_etN6Q0Sb2uUgj1906stigLji9lvk,184858 -babel/locale-data/is_IS.dat,sha256=ggPurORP9YiNltg50UxSvBn-IxSLQkh1Z7vfuAIat2Q,644 -babel/locale-data/it.dat,sha256=kZer8Sb4ged3pz5ZqH0NxxTblZGQih9UTQMKdzjHjt4,186750 -babel/locale-data/it_CH.dat,sha256=x6SYxtwSWqZ7uK-WH7KnW9JQXFt7vjDVWLeRdxNMOX0,2794 -babel/locale-data/it_IT.dat,sha256=69HQXaQ0Hwq5FyY_HFQer2_TaNRK1cBkfwcQoOgD3Q4,644 -babel/locale-data/it_SM.dat,sha256=-_kXYm4nypjxW8slleVL6npDk4swP0VuVVyDSZzusQA,644 -babel/locale-data/it_VA.dat,sha256=bRLH_PNEqsBmiEeJ4M2QrT7m-lxfJ5a0mtzpOm4wUnY,644 -babel/locale-data/ja.dat,sha256=44T77KPAAaPXTo2vWGPev9w8uSgBjuxH0NdE3Rw6zV0,195480 -babel/locale-data/ja_JP.dat,sha256=_CcStROLo6tiJ1AUoPpL9-zhxd3dWAcgH4UxcKW5p5k,626 -babel/locale-data/jgo.dat,sha256=JHgE9Kgm8gcKZXkRFnBOZL8SWmVefD76VPN1EM660yQ,12649 -babel/locale-data/jgo_CM.dat,sha256=EA-EL_vITEcScepi8XtIZp9SfEo8yNtP8mjMDRmurrk,627 -babel/locale-data/jmc.dat,sha256=ACdBwmyvLhD-wfTDx5C9BkKiLgAwYi7MXIZjWdnqDs4,16120 -babel/locale-data/jmc_TZ.dat,sha256=YEigUlJSIsg-2I3KAGmE_7yjVxXeavgHrzATPawzjZ0,608 -babel/locale-data/jv.dat,sha256=bugx3sMto8K-q6UzIdI9_ojxBU4freLUOFll-ZETNrk,127658 -babel/locale-data/jv_ID.dat,sha256=jqAFeLVxdIWZRCImM11zmQxFVN-dTNSHqkJjMd0fL9Q,626 -babel/locale-data/ka.dat,sha256=PMXkpUZaQ_RakmWrSOapK6BVvijldgDvMO5S5sBzZBM,256694 -babel/locale-data/ka_GE.dat,sha256=Nexqnu44i7cXrHB0jlI_229QKiNr_k1TSvCRgb_Zs14,626 -babel/locale-data/kab.dat,sha256=Y9PhkPEATNfpisfItTMvOrgnz4QOSJKONa2Xiz4u59k,134995 -babel/locale-data/kab_DZ.dat,sha256=7hA6qIdD8G5tnw61QlzIlnS5U__261v3XMZT2Wr93X4,670 -babel/locale-data/kam.dat,sha256=bcQ2hEj3o40MkIoAuecyMBXwN2xCRvPoalAKBmbVDYM,16227 -babel/locale-data/kam_KE.dat,sha256=1FV6VA2MmH4ZgMbVnb24DpSO3XAYfQzmKxz3z6CBAjg,627 -babel/locale-data/kde.dat,sha256=f-939iTq5qzLyicPxbSOfbEd5zUzqNxVOJsIP-2sGoE,16527 -babel/locale-data/kde_TZ.dat,sha256=BNkDCTvTEt2R4XEQbKwuNKe_n132hEdXd_YaYunBcL8,608 -babel/locale-data/kea.dat,sha256=XBJTSBu8-1l_psgKfETjGEq29Q-l2mAd-XqgpKt01FE,71368 -babel/locale-data/kea_CV.dat,sha256=vucrSfeOhAM0D2XqJADgq1aQj73Y83CxF-5dBMPjT0g,608 -babel/locale-data/khq.dat,sha256=xIIW5VdIykrnI2yYkhlJzskHmJtESjaDC3GMB9PlI8g,15992 -babel/locale-data/khq_ML.dat,sha256=KdvooU50jIQ2C4KfGTuRStG_55DFqJxRh5UtULTAQW4,608 -babel/locale-data/ki.dat,sha256=zVuht0vDiuwqzW0ifSGnmQ0UvWm3RyyWCA9zzEFrY5M,16175 -babel/locale-data/ki_KE.dat,sha256=JWVi4WSFtN_grtZ1IzyNQlSb1tzHGg0UxFV9MdcONUg,626 -babel/locale-data/kk.dat,sha256=PAr_CVdN5k0hKuGNK9hz6vVVdPqcfLe03yGEL6djPr0,204884 -babel/locale-data/kk_KZ.dat,sha256=XSbqJqUhzr0pVwmcdJJPydCzCawHbVeP0u4DNA_jhXE,626 -babel/locale-data/kkj.dat,sha256=fNklRbLpQSyan1SPutZRhWBypx8TWYjc1j3UIvwYTwk,4907 -babel/locale-data/kkj_CM.dat,sha256=zBage_7dyPY1TQoWCrfV2TPdlDLYTSAFmoj25CyvALs,627 -babel/locale-data/kl.dat,sha256=ARiEanVrxmHJWpZoDHL3-5bDLLpnc9nS76f7Kp0EqBY,58262 -babel/locale-data/kl_GL.dat,sha256=U8dA1dcOZa88aDh_Za4Q_cuO-QkjQON-623nTSwvzJo,607 -babel/locale-data/kln.dat,sha256=0KelxA56bvhWs7VzcNIzxcJg9wg6P2bfOkZf1ksltd8,18062 -babel/locale-data/kln_KE.dat,sha256=pA_rLiD4YhTe_VqEzm1jUNqr-p3oC_RW2Q2JCptdo5A,627 -babel/locale-data/km.dat,sha256=I0D0wPvYR6vlyAqaPiNmS3du1xnjKYALBalmsisoGZU,199952 -babel/locale-data/km_KH.dat,sha256=pJZh2Z4Gna9qJRlOE-yQUcTXYMJLxXW2GiA41f911PQ,626 -babel/locale-data/kn.dat,sha256=rI2BegUtzlVb2hNxE99hBpeFtNzVHoOdhVYQsh_hllU,254243 -babel/locale-data/kn_IN.dat,sha256=O1SMSp5lyz45vrJD6qZOGdUJvk8sA_pEMpfZ7GT1Hcg,649 -babel/locale-data/ko.dat,sha256=3ewk1I7Tm2zL68NIomcXz-j08yxgg_sILYHgKkn46n8,168189 -babel/locale-data/ko_KP.dat,sha256=Irg8tFOdTqkLtdsJK-whgWIl6CYpzQP5RQSBXFt5lzA,807 -babel/locale-data/ko_KR.dat,sha256=iWEE9J7ywo-4HLyDz5nRWPCIBwxMXN-g8ZVluEgP254,626 -babel/locale-data/kok.dat,sha256=rzStfhkGwa7NIRzhCOntT-evQiacjkBTH3I7F24Pc8A,82765 -babel/locale-data/kok_IN.dat,sha256=RxPYjH26AlDPH57oj9jYulR-b4PZST3ejoheHedo2Bw,650 -babel/locale-data/ks.dat,sha256=P0rhXLRGAZk9ltGxyomMfGhleHVGmt0Ah_mWMYTpkbA,102488 -babel/locale-data/ks_IN.dat,sha256=FbxiVs_-h7d9TExduoM5qzHoWM6j60ymcgK1_2sjGKg,649 -babel/locale-data/ksb.dat,sha256=R8_UFjgnrqwE8sBhSdvxmmE3pjBkNJKSbjW0xvc4eQM,16095 -babel/locale-data/ksb_TZ.dat,sha256=P6Ek580ObjaXqb-Niin4LoZm-eBCTCZ_NDULLzMeC8Q,608 -babel/locale-data/ksf.dat,sha256=XAtIX8SXZvHlRlMgRfFKFDaQlnVN1AuK2LjxTWQY260,16569 -babel/locale-data/ksf_CM.dat,sha256=_uUJd2qMvazQrVHTPOtyXTDlMvbuoISj1F1s4EH0DOc,627 -babel/locale-data/ksh.dat,sha256=7CaMQbLiUj_7eMvTq8m0mFmYr7kHfthLgCZerVssnNo,88940 -babel/locale-data/ksh_DE.dat,sha256=VH8heoZOq8IaxYfsA9eB4CBxb_M1bSvV4pdJ8Z2E-EQ,645 -babel/locale-data/ku.dat,sha256=Dw_Ht0WncxRqQySXLb0an4q7FaRG4oomDNNzGp3XxWY,25250 -babel/locale-data/ku_TR.dat,sha256=M_qtiMFC7haUg8UTe3AZ1i-uMY8hzxjtpUgLM2kEYA0,626 -babel/locale-data/kw.dat,sha256=xYQtQdmpCyUVtWGhBb714h-X_IK6ImM_0yPXyYerZJ0,7263 -babel/locale-data/kw_GB.dat,sha256=-Xb3hs90VWg54TdwSerXDq3lxuOc-Y_wMyfdt9i-agA,644 -babel/locale-data/ky.dat,sha256=xnyKiVz_OQ00SVC0ab6tF2lsjZOoLDXI9vKYaGKtcKc,198490 -babel/locale-data/ky_KG.dat,sha256=KjjmZqSgzsCGALW0y1fiURGMVa7qmafuit7QKHfJEPk,626 -babel/locale-data/lag.dat,sha256=OZ2DjZQ-J3Gn8NWaF8byI4KmSO0gxo6ynBR63oK89rI,17194 -babel/locale-data/lag_TZ.dat,sha256=SCwIMT10n8D1ekVMqg6nAcRXYq6MJXNeWOsvVX8IkOw,608 -babel/locale-data/lb.dat,sha256=FhQHzrbTMvwFSRCjlRF6Y6FRqDKKiXqhtJiP2x-sJMA,164416 -babel/locale-data/lb_LU.dat,sha256=olHjVPCdBZkqm868qqx4i65Wwx6AOPe3lINW6aJAbeA,644 -babel/locale-data/lg.dat,sha256=Tk3WfKfVjXIw1gCFo5hlyNuxhuqYdGe5a2jkjPDVYyU,16487 -babel/locale-data/lg_UG.dat,sha256=qCr6389TVehgSTUVXvzatoLF1e022IThG7RjKuJpACE,607 -babel/locale-data/lkt.dat,sha256=Av8k434perqFI_6BRP6EPkvchiPN_nO2CklTNVE80FQ,12787 -babel/locale-data/lkt_US.dat,sha256=Ri8yk6RWC_94pO6kLYqlpBv03WiLu1rRWfmaNDI6IOY,645 -babel/locale-data/ln.dat,sha256=yQJCBmMpVevkIOBOUGvrMkp_QhqUwdk7inbzdAEAdBY,25944 -babel/locale-data/ln_AO.dat,sha256=gEc6KBMCLUvrJkXrbO9QBF21m4dzmbA30ThJTD0IhLo,627 -babel/locale-data/ln_CD.dat,sha256=wd8KeWpyBgRxFdZOzPRq6rPq8E2BhpWr9-6sZpT4VuM,607 -babel/locale-data/ln_CF.dat,sha256=Uz79NMUs8cX3JzPyKMf4u9_byQhjbl1wSGZsb0atVI4,607 -babel/locale-data/ln_CG.dat,sha256=9Fq944Hcd7zuj_TDXg8RiHhLVlhxrchJSSD1TwsImbE,607 -babel/locale-data/lo.dat,sha256=gDnF_vrRlupEleLl6cLJAjSHOQrYZ_LXQgllbgc6hmI,217931 -babel/locale-data/lo_LA.dat,sha256=gWqRr8oGNYTNVtYlY9w5uqi9JSgzDujHxvaJZW1V3T4,626 -babel/locale-data/lrc.dat,sha256=YdYWaAoqdqGpAmmjgdnIWYdVSVT-swZUtdX_3TOSBwU,19108 -babel/locale-data/lrc_IQ.dat,sha256=mjDNrH0bJqU2uNIPr4W13ychqJLfa89zSoHyAflcM50,1246 -babel/locale-data/lrc_IR.dat,sha256=htOM82RqZN8DsREw0zziwiwEf1Q2wRwzN4O1EPSUucs,670 -babel/locale-data/lt.dat,sha256=iVizf8vz2hHKOs3M_WJsRUecMBMtgfJMAvXYWnBYdjc,281388 -babel/locale-data/lt_LT.dat,sha256=xcQ9WNnIdoq-pTrJDlo6J2SKztAPEXxOK8xN09nbqsQ,644 -babel/locale-data/lu.dat,sha256=iaOgjHXhBbxqkaMZfnIjZ9yE_ivOogLi_pIltMav4DU,15940 -babel/locale-data/lu_CD.dat,sha256=kt1Ck2JozYYmkDCjbBbDR4U1PqKsmVHCQQqQViFWoDE,607 -babel/locale-data/luo.dat,sha256=OMmTjOcNBykKCDRQkrlMnvTXd4TTWph1KNFEYeOp5BQ,15937 -babel/locale-data/luo_KE.dat,sha256=mkNhvC4s9Ay-_oOw0UAbozSEtyhwktZb4IEXqHb7R6E,627 -babel/locale-data/luy.dat,sha256=AivHUzk0jfpYWCd9XP-Vgn5SplZZ3Ruk7rVJTXhEqoY,15911 -babel/locale-data/luy_KE.dat,sha256=GQ1Tripph0Kv8EWkDmbUkBoGNRu_Z6_nLraREYDOJIg,627 -babel/locale-data/lv.dat,sha256=aYbZgH9misbuEu8xd2OPukaAcwmqJZkQjMB9I2TRq60,211983 -babel/locale-data/lv_LV.dat,sha256=RTXhOKiDi25vJqvlFjMfx4ipS6IAz9NOsPfvqDA1xHw,626 -babel/locale-data/mas.dat,sha256=GrT-spd-MlSJf_rY-oBo322W_GHL4BGR5-b9WAWhIJw,17349 -babel/locale-data/mas_KE.dat,sha256=dvwGyYsRBTACJmRkHe9OqHdBcE7-_3JETAE5DcZxyOw,627 -babel/locale-data/mas_TZ.dat,sha256=_awVxs_AqCJK_nFGOWUV8CfM0wkBTOyTxp1wf2wx38I,629 -babel/locale-data/mer.dat,sha256=dfZLAHiehC0aQF-BXQRnSXnJlOkC0R5HU8uMpPqBMDk,16140 -babel/locale-data/mer_KE.dat,sha256=VAEMZzP_zylJ_jGnwsvys8iwOWMxpnFD2FM73GEhVFg,627 -babel/locale-data/mfe.dat,sha256=f7Hwcx7ufQhlyaXWkshVNcgbh6RbSWBa_YtQhy2nXDo,15169 -babel/locale-data/mfe_MU.dat,sha256=fXUaGJO-Fk72_qgRVSQXN_4lCMNiOfLbtcrEMoc3Z-E,608 -babel/locale-data/mg.dat,sha256=7bWB6HH3HhS2boHUg3Fk6mCT0hTOz3Ev3X9KfXZbEMA,23602 -babel/locale-data/mg_MG.dat,sha256=Nvn9k4UDSq5ryL5pXMItBWimjPbby559_heRzkodQOQ,607 -babel/locale-data/mgh.dat,sha256=sBxM1pG-ctAdiJ9hl4Hag3hN31bkQBRC2t6R7YIqnF8,10532 -babel/locale-data/mgh_MZ.dat,sha256=bj3fkT73aicgmEW0wNj8Tl1fMg2raeXoMaC3u-CobtM,627 -babel/locale-data/mgo.dat,sha256=1YpgmLHiJWcmqQvNcxpOIfKfOQ1etEAMDxkQi-psLm0,8266 -babel/locale-data/mgo_CM.dat,sha256=PF1Fm-f95o7Lu9qG5FhDJCaHBmXmV1yCuacaLuiJcUY,627 -babel/locale-data/mi.dat,sha256=P7-TssxweXKOKPlQy2VcGNMmiFVVVe7LP3hv6aWtiOk,19166 -babel/locale-data/mi_NZ.dat,sha256=d_K1LO5OIXVG8bHH1WSIVFWt7mqjxrk9T1FUY7Kr3ko,626 -babel/locale-data/mk.dat,sha256=n5yeB-nRq2EjOqcfESsgXiuuspwby7SS1l79DazdC3g,230242 -babel/locale-data/mk_MK.dat,sha256=GT9GwufrdgHTNvJlilW5X73eWe7x8nPNu0orikX-q6s,626 -babel/locale-data/ml.dat,sha256=TEf5l5IQe9_eEMqM81zevTtjxYnTU4ri4xdIrUIUfas,282791 -babel/locale-data/ml_IN.dat,sha256=v0Q-8P2QVsISoVj0c7_SPRfv20HgUV7UpMkkyDXbr_4,649 -babel/locale-data/mn.dat,sha256=bRv5302YnTCpr3_mHntO_5niulNYjgAIpzQbE1gyA4U,196664 -babel/locale-data/mn_MN.dat,sha256=BU1qpiwX_J5qR1sdIZzJWIWhA2vVo4R85xQCMO53zeA,626 -babel/locale-data/mr.dat,sha256=pTtl6V-f6FrjTSAdZRDI6uxb83NjwdyrOswfplw6GKU,242765 -babel/locale-data/mr_IN.dat,sha256=aef7VFbvFenw6pJg7ZDW9vV52b9PENWqbIZ3ttetPiU,649 -babel/locale-data/ms.dat,sha256=qTclc9o5XP5CTlDz3RDep-QXIKYCjSKcseELT9H53XQ,141460 -babel/locale-data/ms_BN.dat,sha256=nmT_ZUqySFofHKPBOeB79OXLF0_rN9_1l7Ene73Tovs,1275 -babel/locale-data/ms_MY.dat,sha256=V8RAiIYkRQeK0zZmGrMX_kYD81Y2jdyK8UkwWficNrw,626 -babel/locale-data/ms_SG.dat,sha256=fN3UCsrV9k3HFZuIlgDV1Zx84C9EVpyOcGmy8HTM9VY,645 -babel/locale-data/mt.dat,sha256=NvIc3Em2gHEQOmJNNyG4BlPFKayvF1oWOiXTyJKMfUI,99982 -babel/locale-data/mt_MT.dat,sha256=XbWtjBItwBOzQ9dfXffkG7ip2cQtJUr_uOLXc3nP-Y8,626 -babel/locale-data/mua.dat,sha256=5u-bhk5Yqn4Ol-rPRUa440aVFzOb-ehzlYykaVALBQ4,16624 -babel/locale-data/mua_CM.dat,sha256=jU0ODX7XWhTxSHF4Zr1r6qX4F6GMTIhfojNXPlQeVzU,627 -babel/locale-data/my.dat,sha256=0UdwyYsfpnde3_TNEl0ayDs42Zgg-QrRyuLehT1EJ9I,207004 -babel/locale-data/my_MM.dat,sha256=Bzi2JR91HdxPj-Z0eaOLHk8UK7tTh3YVb65GdioGkgY,626 -babel/locale-data/mzn.dat,sha256=vwdqMcpOLkqkInioKWteaAVTJj-zYLNNI27VcZA6S30,65508 -babel/locale-data/mzn_IR.dat,sha256=Sx-axN08t4qUK6gkdZJI9gE_od94O9yBOl7R-xydR74,670 -babel/locale-data/naq.dat,sha256=vBYqqBMEGqzIQx5SW1A_P3rbt7IAQAHBaBFc6GpSYWM,16670 -babel/locale-data/naq_NA.dat,sha256=SVEYeRqX3deeAluOQ37gwHfm5cGLcPwiNtIKsGLaRlo,608 -babel/locale-data/nb.dat,sha256=7TBrzSoRB76QUbA2V1dSgapFQhNxRQ02oxXxdnQeZxk,206686 -babel/locale-data/nb_NO.dat,sha256=La0HFi0QPvkipslkGYJWyrvR6qyZSrVf3rxyFy5MAeM,644 -babel/locale-data/nb_SJ.dat,sha256=kfp9zsPvpbuegd2KdJl4WO2eppXw-ybSBDrj_5-Sepw,625 -babel/locale-data/nd.dat,sha256=-x3R97oZR6KBTEa7fIudTqIzEGLVO4ErMabTlbH5cqE,16364 -babel/locale-data/nd_ZW.dat,sha256=VVVYbvzg8pvKDAUDUfCOBwVjgSqR8kRNZa3OvIMolxE,626 -babel/locale-data/nds.dat,sha256=3Atq1yjM2MyTIsdO0hTSNHuRa-3XrXHsctO9BXE7QA4,50653 -babel/locale-data/nds_DE.dat,sha256=g4IgcJMM4s8ZDbkks7VetJ60Fv_SDd2Z7KYNtt9EwKA,645 -babel/locale-data/nds_NL.dat,sha256=LwfMpT7rOaqwl7fz_0H_rnApfhJpG_WG29HY5fAW4vA,645 -babel/locale-data/ne.dat,sha256=CDG36HQ3kKDZcPo1_aTwmnLqLKHg7J-tx-twaveRRCo,243069 -babel/locale-data/ne_IN.dat,sha256=Ty0qfdsX3laEfDmVosUYb1nO4lbPuSwUiUklpZ4CivU,1283 -babel/locale-data/ne_NP.dat,sha256=_aOsODQJSx-2Qp518aT1E7U512mda8-coqIfgRf-pjs,626 -babel/locale-data/nl.dat,sha256=xb8ziI2bEfydTIXYg5xpiF4EzxyKe2_9-BHzDKpBbfw,195437 -babel/locale-data/nl_AW.dat,sha256=lWaFk0qMUWo_XmeHAOHypINaoLCgBOytw5qh02PjR2g,629 -babel/locale-data/nl_BE.dat,sha256=F20Z12nxs501ipOGOVYEWgoMwOM37I2l__E-nytDl9Y,1853 -babel/locale-data/nl_BQ.dat,sha256=NjO4GFRK0oeyv6-hC5I5TWijntLMaQkvTTeMTxeo2go,626 -babel/locale-data/nl_CW.dat,sha256=a6rSPV1TGf0Iqj4WPtNdCMturkN_acf-wTdGwTjjcmo,629 -babel/locale-data/nl_NL.dat,sha256=Z5xxMZmUPdO3at7G0RRR1jvz0nNRAErbp-u7EhLRJ9Q,644 -babel/locale-data/nl_SR.dat,sha256=6KsySLDzDt8H_rmCVslpGWYLln01xoKdnjkga1MgbY8,687 -babel/locale-data/nl_SX.dat,sha256=ax_nqnWCIEWLBF_OAZApdqoZxHGmrrpc9OXt_2GVKTM,629 -babel/locale-data/nmg.dat,sha256=JHmpf4ywpHJH5X8pM-aIQeKqXICoMuvUgH6LfvYA95U,16241 -babel/locale-data/nmg_CM.dat,sha256=kfA43rC6-mmtCEQ4KahPBUyi1SLoxOm2_k557QI7Z-I,627 -babel/locale-data/nn.dat,sha256=3xzcFn_sSkfJdOutUmKmMXnuNvpUbqEfsmYUCR44V3o,179805 -babel/locale-data/nn_NO.dat,sha256=D9aXKaMt_90RbYBc98NvfkVZ_fYV2qjg0JgsEHKXpE4,644 -babel/locale-data/nnh.dat,sha256=iJ8maFwvQWWF2z83wPNeDWCjtXJkb-6BdqWTNe8S4vU,6787 -babel/locale-data/nnh_CM.dat,sha256=iCo3O7kW-Lcsr5g1Bv5bfLm8FeKXt68i6aq0Qqa1cM8,627 -babel/locale-data/nus.dat,sha256=cdQBVX2H5tuWRZUTUORxThKZb8ZA79CFis8Kuetgjxo,9183 -babel/locale-data/nus_SS.dat,sha256=EVZv-VLRZIXfmHowg2c8xkeZcrFC6DWKbb9aYzuykl0,608 -babel/locale-data/nyn.dat,sha256=glQUHKEgHma36QtPbPimKIoFNkaJflVPo6r9zpx15eI,16328 -babel/locale-data/nyn_UG.dat,sha256=m8ciJ8wJ7Ss0sZEwo7hLys0p8X9Tc3iaPAIjKEvvzak,608 -babel/locale-data/om.dat,sha256=C_dYC8Os3xZXrR2l_U3HBivYw6aidjIq7ROnCYtY9Ds,16609 -babel/locale-data/om_ET.dat,sha256=Og-EdTbZ_HAokrmbPFbOUuekkmh7ch2DKDZctUISASU,626 -babel/locale-data/om_KE.dat,sha256=2ANK67n7vvRAps6fTVn15wa2yYnz_2yy303bozguDSo,1584 -babel/locale-data/or.dat,sha256=hN4VKCkslHZrQ7ti_sU0z_NiZoiEPkYbmmg6wcKMGkw,237035 -babel/locale-data/or_IN.dat,sha256=Dw9dokygCMjypNY4sndqyvOnTFsaqW7pq_UPLLHqtTY,649 -babel/locale-data/os.dat,sha256=8dpK1HvfjQPT978fBRPiuk1wRtlSp4N4lcyPGbxy3lQ,17648 -babel/locale-data/os_GE.dat,sha256=hSmyrOpT0abvV17Q5Myoar7UMieDCmckpszmuRQJxfQ,626 -babel/locale-data/os_RU.dat,sha256=HRXdDl4XLKTYX63EpDJYq556qySfi_W9q_qzuQL3J0A,686 -babel/locale-data/pa.dat,sha256=kZGBG23ACj27nI-LNf02A3Vqw_KFvk5D2lQHH0G6UXk,237090 -babel/locale-data/pa_Arab.dat,sha256=Xe20lZpLm3stLXFQTLIq5PKUD7TvC4ORuMzRZiONqJA,3967 -babel/locale-data/pa_Arab_PK.dat,sha256=_VUdc706YAQSu8NoUCuvHosko2l8GtwMdvTXQkuh8oY,626 -babel/locale-data/pa_Guru.dat,sha256=RemwK9VZViIqmbpdFqso7S9xD55LITJbW3sewM9oRUQ,1267 -babel/locale-data/pa_Guru_IN.dat,sha256=S0ctHEKJ7RxJFlvLs31Yflmn3-RwlWb_zc_gCyVYzrA,649 -babel/locale-data/pl.dat,sha256=kbqTerSZmugR4oZtKNUgvAbQFeRSK3uk5QfgvD32Xk4,228149 -babel/locale-data/pl_PL.dat,sha256=3aqxuKmM1y3xnRC3iG6DRzNquFCjOhSe-USlt0jKY0I,644 -babel/locale-data/prg.dat,sha256=cvJ-ohjlFKFxS89iBJxru6s2seI9xnB6GLQor53PfjU,20221 -babel/locale-data/prg_001.dat,sha256=1SYLtROetU-QpYhHxtQWxcY5wNmVnqFxk-J1-3BLYoI,1585 -babel/locale-data/ps.dat,sha256=QNalPguMKEGOci07W4rvZ5iHYDPK_eziWOIvKT_Aq7k,142340 -babel/locale-data/ps_AF.dat,sha256=SvjOBEFhyxjFIfXoaTObaS7vNyKTC5-Q1qkOetchsWw,669 -babel/locale-data/ps_PK.dat,sha256=bpR4HtSC8OlQ7_J0bMbZLFV7VwPzthm93offnsFF7Vs,7979 -babel/locale-data/pt.dat,sha256=lrMOGnflLfsboEb198U1WjHI--FEF92bvn5hcr2bKqI,185356 -babel/locale-data/pt_AO.dat,sha256=QxTSJ_njOOr9W8_wFKMefA5_X_vLLmbTyTShIPr2TYk,1013 -babel/locale-data/pt_BR.dat,sha256=QIoCEwQ4MVDEptP3uYSfuxaUg8LM6Udx_j0u5Pmsscs,626 -babel/locale-data/pt_CH.dat,sha256=1vlk7Moo0YazBGXzCnhzraOQ3na7vMkhiacGprATTPo,644 -babel/locale-data/pt_CV.dat,sha256=TuFHk3Ps62TlH8OXoA0I5n20WXMtJwRkTX9F-ifPPSI,1038 -babel/locale-data/pt_GQ.dat,sha256=n0jtozbmyMELo3v12qZh0bLpOXkl5Yo3-SaoNQzB76o,607 -babel/locale-data/pt_GW.dat,sha256=kzmvupn16Ryy-Ad021sANJicQ405NWoLR3W0hYNgEHY,993 -babel/locale-data/pt_LU.dat,sha256=2PCOkLE4Fpb5rr0S2yGHzWr02NXkEU1DFq9cb3jYPEk,663 -babel/locale-data/pt_MO.dat,sha256=ASQA8OF0aPTEMnnUxPgOuTbVb-Viwruz72TsvnJXhCQ,1610 -babel/locale-data/pt_MZ.dat,sha256=OyyIvwlWPVXczu-1QDtFD9x3TCgbuWVmSfabMU50XIU,1033 -babel/locale-data/pt_PT.dat,sha256=JY6J734UdlBda2-mpgdbopkJ29vH6yRCa3Drs8TXlLY,95387 -babel/locale-data/pt_ST.dat,sha256=XFGnYoCcv12C1dIPHpxn_yWF9TO42Ze6HqHaVX6lJXs,1013 -babel/locale-data/pt_TL.dat,sha256=Kjoj1JE5C_EsdKbWricnpKTUirMnSI2bVcljIDUEtXg,993 -babel/locale-data/qu.dat,sha256=UUdFgTeC0zefb0AXhnHREXZ_bRxMx4L3gZERS2byRFA,63678 -babel/locale-data/qu_BO.dat,sha256=VSRgVtWlTouId0GarX_ZO5CZYAY7HulYTZQzsrcKpC4,854 -babel/locale-data/qu_EC.dat,sha256=_Ftb9lPp9eFysmiuzd0LXl_da6UfcDdAH9iK4_OfceM,828 -babel/locale-data/qu_PE.dat,sha256=u7IelNiSOLZ2gSHzXBLQloraDKQK6rn-Gj3PDrpg7v4,626 -babel/locale-data/rm.dat,sha256=6VF_YfKkH4zszgClWGpCutJLsTtPzjz8YqqIIbN0cIs,67703 -babel/locale-data/rm_CH.dat,sha256=nM16gH9DyFuCWJvzmeUYDeI935TZvG9PeHlnJtwsDJ0,644 -babel/locale-data/rn.dat,sha256=fM0YjSf63MqPnOGaoSAiJ8pGuNLeS89EbA1uvZffPD8,16834 -babel/locale-data/rn_BI.dat,sha256=ysozkQZjd7MbdqQR0Appe1Z0pWEI4Uvt2sOjh1Bm33g,607 -babel/locale-data/ro.dat,sha256=0F4YaitEpsSgSlFL-spgysyo8PD5nWzldC3JRPR5iKY,214600 -babel/locale-data/ro_MD.dat,sha256=BPMaAQ0BsOZkbpcwrDCR1dAYiIpEoq-d2QttEiTxLsU,3468 -babel/locale-data/ro_RO.dat,sha256=YGMdthocAJEwwzNv1M1FpXmx1npnT1o6QEj6AIUJA1g,626 -babel/locale-data/rof.dat,sha256=_9WDdCvXcsispR_Jc_bd29GLdco-0vv8BGBAuM_x45c,16222 -babel/locale-data/rof_TZ.dat,sha256=SSYWLiv1Okua7sYRhIAvr9NDMLo-s0R9fVOnh380Hu8,608 -babel/locale-data/root.dat,sha256=3EUwOJF9fGXgbeqm_oB0m72qKAi4P2KtMhTX0tgfCno,39989 -babel/locale-data/ru.dat,sha256=4CN7wom0dRoNu6rl9v1J0obCQ_hqEhFFGogsD11Wotg,297015 -babel/locale-data/ru_BY.dat,sha256=lucENheWCnm6l2kFWx5iiOQ90RnN-a3SrbbpSMEH23c,667 -babel/locale-data/ru_KG.dat,sha256=q9H-sCDazhmCcmFn-QlJ1eBwVnXaGmqTFZT4W-9ssHs,650 -babel/locale-data/ru_KZ.dat,sha256=zOoq7g7gEqS5ScuiwnNbhFcCYXEBVQ45hoH7x-SKlAs,647 -babel/locale-data/ru_MD.dat,sha256=XQc4LwXm3XLmevt8NRZEVQ5tj03YVkeeHdVb_mzH0wI,645 -babel/locale-data/ru_RU.dat,sha256=UZR5Khv2hLp9BZbGcy8Fxg_luQDS8dgxQqXnmrYOGKs,644 -babel/locale-data/ru_UA.dat,sha256=OVdhP1Te2SUv0a46Hp1FTLUVwBTbNyinQDy1RLLE1ko,1765 -babel/locale-data/rw.dat,sha256=gah0pwvkYNXB7CP42-1B5CMFxjVNjNKBXPBjdPumHuw,16234 -babel/locale-data/rw_RW.dat,sha256=lw9-N-Bp6o2kOraBdnpqbHXS9S06vRGoRnTi13_-IDE,607 -babel/locale-data/rwk.dat,sha256=UK-qdX5VjbSXmZ1sWLpUggwyEbekDq1nSWMqwgYdPYw,16109 -babel/locale-data/rwk_TZ.dat,sha256=qOwICQ4gh7wiNjyNsrZXTCxpEgydLb3KLC-aGSaTdiw,608 -babel/locale-data/sah.dat,sha256=qTZCEQCAO_up0P4P-GCMC_Kzofutc-1oSBqmetTCvqg,47992 -babel/locale-data/sah_RU.dat,sha256=fOJxjNB4yurKvi_Nf5qd_vZ6Ph0P5TreDKysCfkMkAM,645 -babel/locale-data/saq.dat,sha256=_DqapaXzmUP8SkniGLNOgMtUOCixaqY-2P6V6BUbHXg,16507 -babel/locale-data/saq_KE.dat,sha256=lO5cOVp83wj9tFYBb-OT_EoKnvI81obyEODz__dalok,627 -babel/locale-data/sbp.dat,sha256=B8DxXa27HxQ03WmXTxDWsUPpr2Xy66X5utdQ0lTjmQo,16532 -babel/locale-data/sbp_TZ.dat,sha256=Ck2aub_MmSbx5Ixgs3RxF7dJU90nUufYP7cj1eq1eeQ,608 -babel/locale-data/sd.dat,sha256=TyFszAcJ_BrtUiPW3HO8I3ZCQDGJJt5lukJMGWeb1uo,188120 -babel/locale-data/sd_PK.dat,sha256=tYuzmCxNr02-FV1pgkN94YAvn67EdkluBYaUTr9S3A4,626 -babel/locale-data/se.dat,sha256=cWzX95vS957wbyZvvNNrhu1QzUcSBMCH1RVy7buxSsI,72355 -babel/locale-data/se_FI.dat,sha256=ASUyHt_ysdjsBx4jb2V3d7TFnnCrvKrAYOwvYHSdvfE,46541 -babel/locale-data/se_NO.dat,sha256=9fc96ChjeOE9FGup8pr5S_zGqirgrITKl28Qz0lHu6M,644 -babel/locale-data/se_SE.dat,sha256=pVfO3I0swSWy7w8Jb0V-om95t4fWuDWB1YdE_Lr-Gf4,685 -babel/locale-data/seh.dat,sha256=LsaTKr3qRHEBZWqNElUVVxIS46jCkcyaoYn0d8lSq0A,15963 -babel/locale-data/seh_MZ.dat,sha256=0diTZF6N0YXrV0kLWl9RY-0JXNWQ3uEToZEbCt6fOq4,627 -babel/locale-data/ses.dat,sha256=dnGrI4ChN-RlvGcNMK8pcMGNgNuDzfsx8XF7RmAhz2Y,16051 -babel/locale-data/ses_ML.dat,sha256=9Ske0UaoHZbpE8jhXhk-VL3HhIhmXnsIbcNQZeO08Qk,608 -babel/locale-data/sg.dat,sha256=NLfT67esLoB5WoBHWk7E0TmROwJQ6VXil5yiqzOkUag,16688 -babel/locale-data/sg_CF.dat,sha256=7BfhzANJ38-LvzQu3NSxTdhJtQ4kTwcKQAkt_NOWHtM,607 -babel/locale-data/shi.dat,sha256=3VVluM_KYVrNoROBAAs3xUORYRV3p9-Whq9pBS-slDw,22106 -babel/locale-data/shi_Latn.dat,sha256=uJs5g6f9GlIzLrzmtgx1rjgY9xWypEsYciU0lTEbtiY,15670 -babel/locale-data/shi_Latn_MA.dat,sha256=Erhb65aX0qGNECddJ7M8fKy2zjJlOxXSKx42GdQdf0A,608 -babel/locale-data/shi_Tfng.dat,sha256=N4AQ70s0OZV-xQ4VWLo5bGuPPWk2AxmAjNuNwvG6bIQ,965 -babel/locale-data/shi_Tfng_MA.dat,sha256=Erhb65aX0qGNECddJ7M8fKy2zjJlOxXSKx42GdQdf0A,608 -babel/locale-data/si.dat,sha256=SUEexMOM-IB__OVxxxhsDx4RAb5P3mw88ZoS-gemPTI,237479 -babel/locale-data/si_LK.dat,sha256=r7FqkzM6vXhR4XJ5rou9GYtU_PEyYXE3tZZqsLyR-mc,626 -babel/locale-data/sk.dat,sha256=HOqji-Ab_yHtmlHJtbnrTy8wAbZW0pemfjhxeZeU72o,246088 -babel/locale-data/sk_SK.dat,sha256=EOO68wv6kuaSIKyg_BNUAfCCffzGwQlG0ABrSFcDJF4,644 -babel/locale-data/sl.dat,sha256=AZ3B8_mrbyi03b28ovtymTa7G08kAijUL-XKIqdDLqM,237036 -babel/locale-data/sl_SI.dat,sha256=0JTmTrnyrjJHBBK5TeJw_c-WW0ZmLYWZxiXPS2serts,626 -babel/locale-data/smn.dat,sha256=V4oN72KuQA5RQjG6DCR2RFo4USYyOiFFLZu8hA0QZVk,42730 -babel/locale-data/smn_FI.dat,sha256=87dist-cLsNDQvOxUdqRgAuktFuar6Tts6CRw41B1k4,645 -babel/locale-data/sn.dat,sha256=DdCgeUS6dW5p-d4oye7sMvAKDG1v99WB8alp27YF_dk,23304 -babel/locale-data/sn_ZW.dat,sha256=351RLV0bhiAOnieNqRyHN3oqG-v2GvJsYUSqXm1wHaU,626 -babel/locale-data/so.dat,sha256=M7lVxEpfLSVGo07ZxLvnLWPGwZTmzT3N2mKWLvhS2iY,160943 -babel/locale-data/so_DJ.dat,sha256=4nw-1K0M7naoWcZ63Gars4xqbghDMiSHbZpXIbPP6OQ,647 -babel/locale-data/so_ET.dat,sha256=fsS5yO4V8ciQMRZwZ6NDWcQBQFCxe1SnVgH6BUurHSE,646 -babel/locale-data/so_KE.dat,sha256=E6NS6cdOmMJTOUpVuwgBE24tiDpcC5IOw_JZhkMjbd8,1199 -babel/locale-data/so_SO.dat,sha256=AFtTqshg30FEAb50Q2lAC39KETj0xcSxc2DdMegt2zQ,607 -babel/locale-data/sq.dat,sha256=dU1WRBIEsS2Lg6f4mGs_Rc0-PjyrQO1syYMLcaVM3gk,173926 -babel/locale-data/sq_AL.dat,sha256=5SVT0s2J5NyvKwdqzWW1S2PIj33PVVz3pWw248jn17c,626 -babel/locale-data/sq_MK.dat,sha256=PsaPJulWBIFlvRKlnhK0he5lZm_AXVYmeyCq53YQcAI,1199 -babel/locale-data/sq_XK.dat,sha256=d_afvPzsozxIT1_MAI-fK_-V8nHTN07NmyhuBwQAdVo,1178 -babel/locale-data/sr.dat,sha256=Ki0eLxOs1OAdQX-0Vr0rSnWC67af2gDpGeXr7OuSEWM,277049 -babel/locale-data/sr_Cyrl.dat,sha256=0n_px-LQ4ZndDQXL0o_mRHgVxLFeYLNjn5MGOovuOoY,1978 -babel/locale-data/sr_Cyrl_BA.dat,sha256=kKuyKTEZCb1Gja2U90yXFFfUDBAKW_ErHKjdHuJ1ZN0,3930 -babel/locale-data/sr_Cyrl_ME.dat,sha256=gKr7GFHjcxb7Sq9uINfs8VEP2y7MNh1pJ2h2VGqblM8,3724 -babel/locale-data/sr_Cyrl_RS.dat,sha256=2TmzkiJSNDpNIij3yJ8nDhrKRNPUV1XX1_RXOKaGvAw,626 -babel/locale-data/sr_Cyrl_XK.dat,sha256=43d0NPoc03YrzZBie2_7DLy5oScODx-cFOK5e9hOMxQ,2607 -babel/locale-data/sr_Latn.dat,sha256=-jvRgfFrHOe4yU5pAbwigibdz7b_Wef6VzoQn3t86S4,230271 -babel/locale-data/sr_Latn_BA.dat,sha256=egRvjBkcg2d2Zm_ehAqKrixzVpD9EtOws6JVnbVusc0,4195 -babel/locale-data/sr_Latn_ME.dat,sha256=tnFSZ7uoBD6mSZL32MvharPQR1QL_oV_XaJ38bc4gbE,3579 -babel/locale-data/sr_Latn_RS.dat,sha256=6mUxn3NaqRzjHSNgJA_xzJCefSUxqXSUEsoMJ-juYUI,626 -babel/locale-data/sr_Latn_XK.dat,sha256=6BLGB40r1xCprUQ_rR6TVqubuxmhQAUKyEJa5XWAGs0,2693 -babel/locale-data/sv.dat,sha256=TZH0cY_a8DJK5BAZLOPgACkWLLwFkf5swjFulbKwJTQ,213436 -babel/locale-data/sv_AX.dat,sha256=qxZlBDrxLtr7jugZ2tsY6liGF9U84UyZIT7Ap8eL7iA,644 -babel/locale-data/sv_FI.dat,sha256=aV9hIsn7qoQ6nGzCbnJpiiPRSYFOq0yogn8ujMenwqU,1391 -babel/locale-data/sv_SE.dat,sha256=HUamjd52mLuY8GbVgBeijJpc--Z3dnARh2lcE4QvUYw,644 -babel/locale-data/sw.dat,sha256=OBKVQn-9PlGNBo89Ms1lDlr2yRQ8gX_1lUMDn1bhzMw,175523 -babel/locale-data/sw_CD.dat,sha256=dsCHY8aKyhmiRIIiStPfM3RK7oyvdUUYXY94Or28t28,2698 -babel/locale-data/sw_KE.dat,sha256=o7UlPWH8XMknIL_QFrQHFYzS7KRh9f0SFyekUCJZ_kE,4051 -babel/locale-data/sw_TZ.dat,sha256=igleCvk2ZHZM9NoYRtnSd1s-oxuQjL1wLRvD_ZLBovo,607 -babel/locale-data/sw_UG.dat,sha256=SmNCoGRulbvTy-uR4zcKFkELWxnfZRHTFQQCkMzL99g,628 -babel/locale-data/ta.dat,sha256=hIoFhN-PxAoTw0W7Qiy0UXsD-qxIoiNeV-9jNuHr5Mk,256586 -babel/locale-data/ta_IN.dat,sha256=U63SpEBo7jY11wGhZNMFeC3pyS0ExnmbUlmDjgOeuuo,649 -babel/locale-data/ta_LK.dat,sha256=jTOsLhe3x-1CXvk6IDUuiEwrc0OvqkmsJmZjpQgDbpw,1199 -babel/locale-data/ta_MY.dat,sha256=eO3c5Qh0zUMlQeFZgQSzQedaSz7mLTFlVDKR1Z-2VH0,1256 -babel/locale-data/ta_SG.dat,sha256=1MxGlD45nwX3TAvpVESvP4CXrmxgqySQjeZjzH4Cofo,1275 -babel/locale-data/te.dat,sha256=lPRz8YpMlzuXt_B5br8V3dYjMFTZ6metR2KM0xCF42Y,255657 -babel/locale-data/te_IN.dat,sha256=nRtR37nSryged20zk3SQMpmOf-UuNFjL_2YFTMpyN7k,649 -babel/locale-data/teo.dat,sha256=XiaLo3ISyEZi89ypqEUw0Yom5tknINNoJzne6gtXQio,16723 -babel/locale-data/teo_KE.dat,sha256=adkRA-mbnesgQLGfXEqwmXSVQDi63TQyosUzSLt3Xu4,648 -babel/locale-data/teo_UG.dat,sha256=jfrgUMX_AeETJJFHJAx4dXi9nXjywSwr6tZUQksea7c,608 -babel/locale-data/tg.dat,sha256=mjaUWm9mGHcYYsk5vmlrFj9zTXf5WcJMRDGex2axIB4,29662 -babel/locale-data/tg_TJ.dat,sha256=DvdJs-nLilO1-m1YgIOjEeY_f0Viv5FYjZ9VR8O6BAc,626 -babel/locale-data/th.dat,sha256=hj2O37fbmx_Nb49pOFF2oniumaxVDlkOA5ULcI9hD8o,230260 -babel/locale-data/th_TH.dat,sha256=msHIvTxB6gWoJP5-ClkGH_IedRgXpRQzZPj0oIyVkyU,626 -babel/locale-data/ti.dat,sha256=l6soKgfd9j_zCwP2oOKDdY-P-8FUul0u8WvGiAW1VZ8,73057 -babel/locale-data/ti_ER.dat,sha256=9n_DeoDAeCwpjxww70RaNjQFwSY0dAOwwdAxYhVhw_Q,976 -babel/locale-data/ti_ET.dat,sha256=uo6aLFMfTxKNSCagtB8OrTa99SUAmiNUA1txEd0tHtE,626 -babel/locale-data/tk.dat,sha256=TcKx03xQoOnnIbGUZGszP3MDMoy3Ncaq6ALq2j93j5w,165033 -babel/locale-data/tk_TM.dat,sha256=te9O_n9WobfEaJnREwyPHVH4EMHcvdClBXZVPDWXKqA,626 -babel/locale-data/to.dat,sha256=3Pl69HQ7EZkoRYPF_uD8XCinhZeYGlQLeYGRp8sLXco,155039 -babel/locale-data/to_TO.dat,sha256=4uG_hh9oRlbSUKvlRBuU4uKaGSSs8WXIdQ6oPE9nsXw,607 -babel/locale-data/tr.dat,sha256=bwVttS8wUkqEjHqWYckkC3mIBMvlR204MbbKx2RTxUk,199237 -babel/locale-data/tr_CY.dat,sha256=O7i548Pkn7b38K67zCSjikwvr3fqUzgQFtw85HwftvE,1202 -babel/locale-data/tr_TR.dat,sha256=60u8smbVf6BBW48PI-x3EpHvJ8tsbUSbJHhCqFwqEWY,626 -babel/locale-data/tt.dat,sha256=_FR8BBZRdW9-Oio2iafGcu48Z9FtldL05h1qzhmM1OA,33295 -babel/locale-data/tt_RU.dat,sha256=KMOS9m6E-8xqJQZQghSnhQdNjkNVu0dXsQkFwnfl7lM,644 -babel/locale-data/twq.dat,sha256=OEwG2SXr9fEeQCMaHxjvKWlWLVtUhGamoG4qG6wjUmo,16224 -babel/locale-data/twq_NE.dat,sha256=qI3KClszp7x1J6kAz3_warLhjR4nJfJo_KfvlGfrnLo,608 -babel/locale-data/tzm.dat,sha256=ZYs6PgmbBXaPk6WRnQxKT5wzR0RzqXFPa12OWoO7dUc,16200 -babel/locale-data/tzm_MA.dat,sha256=Iju1azWHoAUAq4eKXDIeqAfAEz4HrOo7iUtyrOvSpl4,608 -babel/locale-data/ug.dat,sha256=TfYKG15NTf4fouUcNaqdusAKRxa1RISFoA8RYi4LN5s,128365 -babel/locale-data/ug_CN.dat,sha256=U8dQkbFRAbqdAKISnFUw0FNUPmzrkJdLpK4n_14alKk,626 -babel/locale-data/uk.dat,sha256=vdV4W3lJEEENgT6Z37OtNlhQPDq8sVw7nWzL3hCidSo,307335 -babel/locale-data/uk_UA.dat,sha256=aG-RNa11ss0qW7vF50ajYL0qAxtKC-2ghG-P4W6vI8g,626 -babel/locale-data/ur.dat,sha256=rw0vgCWeX-JSUbVwTUGvRddcKePa_yrnoFDb-_2SoW4,192380 -babel/locale-data/ur_IN.dat,sha256=R-Q6ZyVoQOPtQr-7izba7emv8X589nguoMF477kk7-k,12616 -babel/locale-data/ur_PK.dat,sha256=pjqQbfrTsrzcFl30FILINl2ELO3fBxiaRBhCr-KxWlE,626 -babel/locale-data/uz.dat,sha256=9hnTiZ-2Ug_qye8uaQ_y6yORtJx6ufmXVo7yXEeRXv4,167959 -babel/locale-data/uz_Arab.dat,sha256=5iCqhCA86006i6CS3bLMZ9IsxWlQoPmQKFbD5pRUJO4,4135 -babel/locale-data/uz_Arab_AF.dat,sha256=Sx_uYNKZPq-kRomMbkZ9n8QRHjADxn9Jnga6fTVCn2s,669 -babel/locale-data/uz_Cyrl.dat,sha256=GYkeuqND_cGOn_PWn6yDG-GJl-739xKvN51DjAFRRKs,98765 -babel/locale-data/uz_Cyrl_UZ.dat,sha256=3wc5_aiBB_CAeYu5YRxPxZHUd0sZ4nIXafgKFDygfZs,626 -babel/locale-data/uz_Latn.dat,sha256=U7k5KfSvCsFk2Atujg4-iVDmGikwr-vkjPTpb0D_vP8,1283 -babel/locale-data/uz_Latn_UZ.dat,sha256=3aYJK9kmVFmLlDvDgL1ndruFKWOqVlHHJjag1NqV1a4,626 -babel/locale-data/vai.dat,sha256=RqFFCMxtJ670vHHKuitqD_dDlWU2PBHYjgw-9yA8fTE,19046 -babel/locale-data/vai_Latn.dat,sha256=X4-xL0o7OgV8SCyY9w5JPbtwU24MfloL1z1fS9FGL_A,15311 -babel/locale-data/vai_Latn_LR.dat,sha256=wILwRiJahBELmxou0KnRkVMZReFA3tiFJzmb_OqZhNc,608 -babel/locale-data/vai_Vaii.dat,sha256=HR8PB6naRA8D96Yn5Iy8ODPw8CLzpfrVoXyXd0apmLM,684 -babel/locale-data/vai_Vaii_LR.dat,sha256=wILwRiJahBELmxou0KnRkVMZReFA3tiFJzmb_OqZhNc,608 -babel/locale-data/vi.dat,sha256=q1bLXzF2MlouEux5Mf1jmX1aHrQ_ymF1F6o4hOSmCJY,163315 -babel/locale-data/vi_VN.dat,sha256=ysK3bxwU2cv3FiZx5XYBq5kGCnsRAIYXefasVKTIKXE,626 -babel/locale-data/vo.dat,sha256=oGgNNbnkX_qhkH1hjxpt0molwl0N68bFK4mP0Yh2k7o,5246 -babel/locale-data/vo_001.dat,sha256=QsXTJYVDrzM24v2rKaWPgtSSN54Ege4iHGzzdxCElg0,841 -babel/locale-data/vun.dat,sha256=n04FmbzLYMYEmZaOUMxpxLNF-v6OeB_RtLVQH6_vOc8,16119 -babel/locale-data/vun_TZ.dat,sha256=0sIAdc6gRGhTbpGXbPkAwTzO7g-QBG0WdKsmjvFSxY0,608 -babel/locale-data/wae.dat,sha256=qRzR0haJ9sG5gyquuNV8SZXHdSL-Ku8F0j9OGnYsIDE,28712 -babel/locale-data/wae_CH.dat,sha256=7C-tFbrZbBSHRUeTh5pVAS-8twkecVsqzHHXfE5BJ-w,645 -babel/locale-data/wo.dat,sha256=Wbq-Hjgk2y_GIAVbiGK7oT7Cdewbl20WN8w71cN75L4,25738 -babel/locale-data/wo_SN.dat,sha256=SFe418ytRv4n5qYdd7PB5Z7wW2lMXKLaOZ6iTb1dTw4,607 -babel/locale-data/xh.dat,sha256=aizGIMM4WRNrhmWoZSfTGjT2zPbTxyrZYokFCwFDYFI,15076 -babel/locale-data/xh_ZA.dat,sha256=Si4fXBHGmX5L_vioWN-a_PowYRePLdkfsBgvfSIN_7c,626 -babel/locale-data/xog.dat,sha256=MgoUNE6v6h13pdogvhGzpyc45PJlCUuLzk_xlQVSHFE,16608 -babel/locale-data/xog_UG.dat,sha256=7Ft3wGj-9xqf-9AUUQlteuqRqcQKdmYx69SapgOjZCE,608 -babel/locale-data/yav.dat,sha256=TgY99ASgQyjnMOCW4N2x3xonlWPNekJvOudZ53b325Q,15354 -babel/locale-data/yav_CM.dat,sha256=7Zh5rEYu5q9jspiu_9pbQ3xewmLg_my-9Rt7rqOELnE,627 -babel/locale-data/yi.dat,sha256=8oRirXWekzHxj00Uer9bzo08HWKIKAAS5MBFjfuipw4,30403 -babel/locale-data/yi_001.dat,sha256=7Xf8CLNU0_JtRoWjwRdeOMQUxuCOIfMn6JgtuU3y2yk,903 -babel/locale-data/yo.dat,sha256=ZufCWXkkr0h2lFvqXBzIrSTAfUOYV1aWOo_0-dgEr8Y,36073 -babel/locale-data/yo_BJ.dat,sha256=v7sGbQbpNvx_925zeSHoAtlRlGj7aZuZ1Q-REvqaL9s,35277 -babel/locale-data/yo_NG.dat,sha256=9XY2uokNDXCH8mbxl2lIRWAr0h39yAteR52zoOq7P7g,607 -babel/locale-data/yue.dat,sha256=kDR-_CW4CAqqV-76GqPuvezZ55XloDm1cq9ckhoqPrc,176622 -babel/locale-data/yue_Hans.dat,sha256=_GkNxpR7Ako3sJcHGfBiWl6aOswYZCGImDsM2Aj-BZ0,176532 -babel/locale-data/yue_Hans_CN.dat,sha256=FzQmGCVsYnueDspYNGYj_DXHmMt_HLYG5gGmRFUHyT4,627 -babel/locale-data/yue_Hant.dat,sha256=Na0Odc_YNhhVKjF2-IECRD83MTyW5JxDa214bVwKeSE,1297 -babel/locale-data/yue_Hant_HK.dat,sha256=Ec0YPHv508DXmz4WTZyRXL3o1Vzt4g9aNtLy2QEC0ko,627 -babel/locale-data/zgh.dat,sha256=D4nbMm0USubx9XKDP5MCvIe0QjMKsTWvZC_5EWOAYkQ,30568 -babel/locale-data/zgh_MA.dat,sha256=jC43Fo4jRYvZlJw8YHkxMp397MnNJcV98LTJNXom-kQ,608 -babel/locale-data/zh.dat,sha256=m43JIyhOjoSliRYPlfNr1BtwGB0weDIyhj8fgbX5iCs,178476 -babel/locale-data/zh_Hans.dat,sha256=GjCjyfNKG8X93jBUM1Kz2xyOzaRo9c7d-wNjUxMQtC4,1296 -babel/locale-data/zh_Hans_CN.dat,sha256=p5jtbCp3q1z8RyhHQbdEYtxxHeJZjE6hPHCZeaKuY18,626 -babel/locale-data/zh_Hans_HK.dat,sha256=HFh5Iu49qjRP-aGP4Drj2Nd-afmy_nXurl2mz5CrsgE,4321 -babel/locale-data/zh_Hans_MO.dat,sha256=4u8prMqf76bZEGZWmnttt8rFnOG9GQ9TJ-qvhDJMBV4,3266 -babel/locale-data/zh_Hans_SG.dat,sha256=_d4ULzZoQycECN9bjIaWM7QT6NeqppuqZ_2J77SxEa8,3462 -babel/locale-data/zh_Hant.dat,sha256=J-_FNz7Imicihh7kKd6t-AiB7JFNO_Et9D4L5BZL5GM,182449 -babel/locale-data/zh_Hant_HK.dat,sha256=gna8uBk3yehPbTncX4g-xu_PKtqIx0m6wab3OFkocCo,54211 -babel/locale-data/zh_Hant_MO.dat,sha256=ZAm_SZd9QU5d9yIpBY7zkXjftOuUsxO5n76GBC7PEr0,648 -babel/locale-data/zh_Hant_TW.dat,sha256=HbzN_NAwhpX9xJ2wB2lCg-DcBsiCuP7lp3RK6xNtM58,626 -babel/locale-data/zu.dat,sha256=Tk8uVFm5e3BT0K4TcTCBmh-KVbrfpP4EiUxAb97G5-M,170194 -babel/locale-data/zu_ZA.dat,sha256=_bcquTfNmZuNRLAfnjIPVwShwnBdealyaQtkfbJB5bI,626 -babel/localedata.py,sha256=YRA37osx1uFriIA6xsV4PH73pzZIRKAGC3DMAoiAhbY,7317 -babel/localtime/__init__.py,sha256=97IqJD5FNnhre8jiYaEisp7PeWaBMhsb8EH0Gd2q5bM,1721 -babel/localtime/__pycache__/__init__.cpython-37.pyc,, -babel/localtime/__pycache__/_unix.cpython-37.pyc,, -babel/localtime/__pycache__/_win32.cpython-37.pyc,, -babel/localtime/_unix.py,sha256=P66o3ErKXzhFvj3e3Qk6MBS7AR0qsDqSQclIAMHKp18,4801 -babel/localtime/_win32.py,sha256=dGzhQ8AlY5iItSd-i3Fi2O3YWuVJ83PFSWe7EG2BaBg,3086 -babel/messages/__init__.py,sha256=FslIS7Co5VK7Ec4g44kFO7m7zWw2-fQuu4gvTzqeIrk,254 -babel/messages/__pycache__/__init__.cpython-37.pyc,, -babel/messages/__pycache__/catalog.cpython-37.pyc,, -babel/messages/__pycache__/checkers.cpython-37.pyc,, -babel/messages/__pycache__/extract.cpython-37.pyc,, -babel/messages/__pycache__/frontend.cpython-37.pyc,, -babel/messages/__pycache__/jslexer.cpython-37.pyc,, -babel/messages/__pycache__/mofile.cpython-37.pyc,, -babel/messages/__pycache__/plurals.cpython-37.pyc,, -babel/messages/__pycache__/pofile.cpython-37.pyc,, -babel/messages/catalog.py,sha256=kSj7z8QcQblXLvwyEC5AsuXZ1PnHEyWpBM49X0jUNqQ,32296 -babel/messages/checkers.py,sha256=KwSkPIg3JJyjvhxkMOAAZFUs5ZQNae_wnMKRAYP6sis,6085 -babel/messages/extract.py,sha256=E3mIosZGF6wNcVyylNIDbm1osgJsgRcOMGJnYNVLmus,26428 -babel/messages/frontend.py,sha256=xN1sO2Y3Qp4FGj94vQToev3HeAzmFK5knWKtRzVpnzo,38729 -babel/messages/jslexer.py,sha256=81Cun16nkMdbML2NAxixUls1fr2FHaW_-Uqju0wrL7s,6334 -babel/messages/mofile.py,sha256=Ry-YGbadmabyB2I0WC8lGSBwLgYPXWOChzRILtcjs4A,7204 -babel/messages/plurals.py,sha256=fXgXJ9kTllO0OjqQ-mqrpXW2lXNY1FTa9UrGrlaGBuc,7206 -babel/messages/pofile.py,sha256=tGdqHM3tDSyDc6CFw9RwHDxCMQTEgacooKREqUnJBuk,21795 -babel/numbers.py,sha256=wa9bdJvj5PZvM1wX7rzd4hdp3i6mx8nlk6et6aQKTF8,38551 -babel/plural.py,sha256=rI02SVvzNQNniSh6TjfWIdwONJ3cE8JRS-V43P-KlC4,21314 -babel/support.py,sha256=MSiTpW8BHfYAZMF6zfkfcv_pReGlmxDbAdNu96DzFjM,22303 -babel/units.py,sha256=0Sl-FFQTRK36UMlFDZyDuTgRm1C8gT8SK02P3ViAr5M,11105 -babel/util.py,sha256=JRSyuEezoLBMDDpIGrsgoV9bRTyOOS9CZEVppRbUjWo,7582 diff --git a/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/WHEEL b/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/WHEEL deleted file mode 100644 index c8240f0..0000000 --- a/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.33.1) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/entry_points.txt b/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/entry_points.txt deleted file mode 100644 index 18c3a58..0000000 --- a/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/entry_points.txt +++ /dev/null @@ -1,22 +0,0 @@ - - [console_scripts] - pybabel = babel.messages.frontend:main - - [distutils.commands] - compile_catalog = babel.messages.frontend:compile_catalog - extract_messages = babel.messages.frontend:extract_messages - init_catalog = babel.messages.frontend:init_catalog - update_catalog = babel.messages.frontend:update_catalog - - [distutils.setup_keywords] - message_extractors = babel.messages.frontend:check_message_extractors - - [babel.checkers] - num_plurals = babel.messages.checkers:num_plurals - python_format = babel.messages.checkers:python_format - - [babel.extractors] - ignore = babel.messages.extract:extract_nothing - python = babel.messages.extract:extract_python - javascript = babel.messages.extract:extract_javascript - \ No newline at end of file diff --git a/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/top_level.txt b/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/top_level.txt deleted file mode 100644 index 98f6593..0000000 --- a/venv/lib/python3.7/site-packages/Babel-2.7.0.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -babel diff --git a/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/PKG-INFO b/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/PKG-INFO deleted file mode 100644 index f0423cd..0000000 --- a/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/PKG-INFO +++ /dev/null @@ -1,181 +0,0 @@ -Metadata-Version: 2.1 -Name: SQLAlchemy -Version: 1.3.11 -Summary: Database Abstraction Library -Home-page: http://www.sqlalchemy.org -Author: Mike Bayer -Author-email: mike_mp@zzzcomputing.com -License: MIT -Project-URL: Documentation, https://docs.sqlalchemy.org -Project-URL: Issue Tracker, https://github.com/sqlalchemy/sqlalchemy/ -Description: SQLAlchemy - ========== - - The Python SQL Toolkit and Object Relational Mapper - - Introduction - ------------- - - SQLAlchemy is the Python SQL toolkit and Object Relational Mapper - that gives application developers the full power and - flexibility of SQL. SQLAlchemy provides a full suite - of well known enterprise-level persistence patterns, - designed for efficient and high-performing database - access, adapted into a simple and Pythonic domain - language. - - Major SQLAlchemy features include: - - * An industrial strength ORM, built - from the core on the identity map, unit of work, - and data mapper patterns. These patterns - allow transparent persistence of objects - using a declarative configuration system. - Domain models - can be constructed and manipulated naturally, - and changes are synchronized with the - current transaction automatically. - * A relationally-oriented query system, exposing - the full range of SQL's capabilities - explicitly, including joins, subqueries, - correlation, and most everything else, - in terms of the object model. - Writing queries with the ORM uses the same - techniques of relational composition you use - when writing SQL. While you can drop into - literal SQL at any time, it's virtually never - needed. - * A comprehensive and flexible system - of eager loading for related collections and objects. - Collections are cached within a session, - and can be loaded on individual access, all - at once using joins, or by query per collection - across the full result set. - * A Core SQL construction system and DBAPI - interaction layer. The SQLAlchemy Core is - separate from the ORM and is a full database - abstraction layer in its own right, and includes - an extensible Python-based SQL expression - language, schema metadata, connection pooling, - type coercion, and custom types. - * All primary and foreign key constraints are - assumed to be composite and natural. Surrogate - integer primary keys are of course still the - norm, but SQLAlchemy never assumes or hardcodes - to this model. - * Database introspection and generation. Database - schemas can be "reflected" in one step into - Python structures representing database metadata; - those same structures can then generate - CREATE statements right back out - all within - the Core, independent of the ORM. - - SQLAlchemy's philosophy: - - * SQL databases behave less and less like object - collections the more size and performance start to - matter; object collections behave less and less like - tables and rows the more abstraction starts to matter. - SQLAlchemy aims to accommodate both of these - principles. - * An ORM doesn't need to hide the "R". A relational - database provides rich, set-based functionality - that should be fully exposed. SQLAlchemy's - ORM provides an open-ended set of patterns - that allow a developer to construct a custom - mediation layer between a domain model and - a relational schema, turning the so-called - "object relational impedance" issue into - a distant memory. - * The developer, in all cases, makes all decisions - regarding the design, structure, and naming conventions - of both the object model as well as the relational - schema. SQLAlchemy only provides the means - to automate the execution of these decisions. - * With SQLAlchemy, there's no such thing as - "the ORM generated a bad query" - you - retain full control over the structure of - queries, including how joins are organized, - how subqueries and correlation is used, what - columns are requested. Everything SQLAlchemy - does is ultimately the result of a developer- - initiated decision. - * Don't use an ORM if the problem doesn't need one. - SQLAlchemy consists of a Core and separate ORM - component. The Core offers a full SQL expression - language that allows Pythonic construction - of SQL constructs that render directly to SQL - strings for a target database, returning - result sets that are essentially enhanced DBAPI - cursors. - * Transactions should be the norm. With SQLAlchemy's - ORM, nothing goes to permanent storage until - commit() is called. SQLAlchemy encourages applications - to create a consistent means of delineating - the start and end of a series of operations. - * Never render a literal value in a SQL statement. - Bound parameters are used to the greatest degree - possible, allowing query optimizers to cache - query plans effectively and making SQL injection - attacks a non-issue. - - Documentation - ------------- - - Latest documentation is at: - - http://www.sqlalchemy.org/docs/ - - Installation / Requirements - --------------------------- - - Full documentation for installation is at - `Installation `_. - - Getting Help / Development / Bug reporting - ------------------------------------------ - - Please refer to the `SQLAlchemy Community Guide `_. - - Code of Conduct - --------------- - - Above all, SQLAlchemy places great emphasis on polite, thoughtful, and - constructive communication between users and developers. - Please see our current Code of Conduct at - `Code of Conduct `_. - - License - ------- - - SQLAlchemy is distributed under the `MIT license - `_. - - -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Topic :: Database :: Front-Ends -Classifier: Operating System :: OS Independent -Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* -Provides-Extra: mssql -Provides-Extra: postgresql -Provides-Extra: postgresql_psycopg2binary -Provides-Extra: postgresql_psycopg2cffi -Provides-Extra: mssql_pyodbc -Provides-Extra: pymysql -Provides-Extra: oracle -Provides-Extra: mssql_pymssql -Provides-Extra: mysql -Provides-Extra: postgresql_pg8000 diff --git a/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/SOURCES.txt b/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/SOURCES.txt deleted file mode 100644 index 7e5c116..0000000 --- a/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/SOURCES.txt +++ /dev/null @@ -1,847 +0,0 @@ -AUTHORS -CHANGES -LICENSE -MANIFEST.in -README.dialects.rst -README.rst -README.unittests.rst -setup.cfg -setup.py -tox.ini -doc/contents.html -doc/copyright.html -doc/errors.html -doc/genindex.html -doc/glossary.html -doc/index.html -doc/intro.html -doc/notfound.html -doc/search.html -doc/searchindex.js -doc/_images/sqla_arch_small.png -doc/_images/sqla_engine_arch.png -doc/_modules/index.html -doc/_modules/examples/adjacency_list/adjacency_list.html -doc/_modules/examples/association/basic_association.html -doc/_modules/examples/association/dict_of_sets_with_default.html -doc/_modules/examples/association/proxied_association.html -doc/_modules/examples/custom_attributes/active_column_defaults.html -doc/_modules/examples/custom_attributes/custom_management.html -doc/_modules/examples/custom_attributes/listen_for_events.html -doc/_modules/examples/dogpile_caching/advanced.html -doc/_modules/examples/dogpile_caching/caching_query.html -doc/_modules/examples/dogpile_caching/environment.html -doc/_modules/examples/dogpile_caching/fixture_data.html -doc/_modules/examples/dogpile_caching/helloworld.html -doc/_modules/examples/dogpile_caching/local_session_caching.html -doc/_modules/examples/dogpile_caching/model.html -doc/_modules/examples/dogpile_caching/relationship_caching.html -doc/_modules/examples/dynamic_dict/dynamic_dict.html -doc/_modules/examples/elementtree/adjacency_list.html -doc/_modules/examples/elementtree/optimized_al.html -doc/_modules/examples/elementtree/pickle_type.html -doc/_modules/examples/generic_associations/discriminator_on_association.html -doc/_modules/examples/generic_associations/generic_fk.html -doc/_modules/examples/generic_associations/table_per_association.html -doc/_modules/examples/generic_associations/table_per_related.html -doc/_modules/examples/graphs/directed_graph.html -doc/_modules/examples/inheritance/concrete.html -doc/_modules/examples/inheritance/joined.html -doc/_modules/examples/inheritance/single.html -doc/_modules/examples/join_conditions/cast.html -doc/_modules/examples/join_conditions/threeway.html -doc/_modules/examples/large_collection/large_collection.html -doc/_modules/examples/materialized_paths/materialized_paths.html -doc/_modules/examples/nested_sets/nested_sets.html -doc/_modules/examples/performance/__main__.html -doc/_modules/examples/performance/bulk_inserts.html -doc/_modules/examples/performance/bulk_updates.html -doc/_modules/examples/performance/large_resultsets.html -doc/_modules/examples/performance/short_selects.html -doc/_modules/examples/performance/single_inserts.html -doc/_modules/examples/postgis/postgis.html -doc/_modules/examples/sharding/attribute_shard.html -doc/_modules/examples/space_invaders/space_invaders.html -doc/_modules/examples/versioned_history/history_meta.html -doc/_modules/examples/versioned_history/test_versioning.html -doc/_modules/examples/versioned_rows/versioned_map.html -doc/_modules/examples/versioned_rows/versioned_rows.html -doc/_modules/examples/versioned_rows/versioned_rows_w_versionid.html -doc/_modules/examples/versioned_rows/versioned_update_old_row.html -doc/_modules/examples/vertical/dictlike-polymorphic.html -doc/_modules/examples/vertical/dictlike.html -doc/_static/basic.css -doc/_static/changelog.css -doc/_static/detectmobile.js -doc/_static/docs.css -doc/_static/doctools.js -doc/_static/documentation_options.js -doc/_static/dragons.png -doc/_static/file.png -doc/_static/init.js -doc/_static/jquery-3.4.1.js -doc/_static/jquery.js -doc/_static/language_data.js -doc/_static/minus.png -doc/_static/plus.png -doc/_static/pygments.css -doc/_static/searchtools.js -doc/_static/sphinx_paramlinks.css -doc/_static/underscore-1.3.1.js -doc/_static/underscore.js -doc/build/Makefile -doc/build/conf.py -doc/build/contents.rst -doc/build/copyright.rst -doc/build/corrections.py -doc/build/errors.rst -doc/build/glossary.rst -doc/build/index.rst -doc/build/intro.rst -doc/build/requirements.txt -doc/build/sqla_arch_small.png -doc/build/changelog/changelog_01.rst -doc/build/changelog/changelog_02.rst -doc/build/changelog/changelog_03.rst -doc/build/changelog/changelog_04.rst -doc/build/changelog/changelog_05.rst -doc/build/changelog/changelog_06.rst -doc/build/changelog/changelog_07.rst -doc/build/changelog/changelog_08.rst -doc/build/changelog/changelog_09.rst -doc/build/changelog/changelog_10.rst -doc/build/changelog/changelog_11.rst -doc/build/changelog/changelog_12.rst -doc/build/changelog/changelog_13.rst -doc/build/changelog/index.rst -doc/build/changelog/migration_04.rst -doc/build/changelog/migration_05.rst -doc/build/changelog/migration_06.rst -doc/build/changelog/migration_07.rst -doc/build/changelog/migration_08.rst -doc/build/changelog/migration_09.rst -doc/build/changelog/migration_10.rst -doc/build/changelog/migration_11.rst -doc/build/changelog/migration_12.rst -doc/build/changelog/migration_13.rst -doc/build/changelog/unreleased_10/4065.rst -doc/build/changelog/unreleased_10/README.txt -doc/build/changelog/unreleased_11/README.txt -doc/build/changelog/unreleased_12/README.txt -doc/build/changelog/unreleased_13/README.txt -doc/build/core/api_basics.rst -doc/build/core/compiler.rst -doc/build/core/connections.rst -doc/build/core/constraints.rst -doc/build/core/custom_types.rst -doc/build/core/ddl.rst -doc/build/core/defaults.rst -doc/build/core/dml.rst -doc/build/core/engines.rst -doc/build/core/engines_connections.rst -doc/build/core/event.rst -doc/build/core/events.rst -doc/build/core/exceptions.rst -doc/build/core/expression_api.rst -doc/build/core/functions.rst -doc/build/core/index.rst -doc/build/core/inspection.rst -doc/build/core/interfaces.rst -doc/build/core/internals.rst -doc/build/core/metadata.rst -doc/build/core/pooling.rst -doc/build/core/reflection.rst -doc/build/core/schema.rst -doc/build/core/selectable.rst -doc/build/core/serializer.rst -doc/build/core/sqla_engine_arch.png -doc/build/core/sqlelement.rst -doc/build/core/tutorial.rst -doc/build/core/type_api.rst -doc/build/core/type_basics.rst -doc/build/core/types.rst -doc/build/core/visitors.rst -doc/build/dialects/firebird.rst -doc/build/dialects/index.rst -doc/build/dialects/mssql.rst -doc/build/dialects/mysql.rst -doc/build/dialects/oracle.rst -doc/build/dialects/postgresql.rst -doc/build/dialects/sqlite.rst -doc/build/dialects/sybase.rst -doc/build/faq/connections.rst -doc/build/faq/index.rst -doc/build/faq/metadata_schema.rst -doc/build/faq/ormconfiguration.rst -doc/build/faq/performance.rst -doc/build/faq/sessions.rst -doc/build/faq/sqlexpressions.rst -doc/build/orm/backref.rst -doc/build/orm/basic_relationships.rst -doc/build/orm/cascades.rst -doc/build/orm/classical.rst -doc/build/orm/collections.rst -doc/build/orm/composites.rst -doc/build/orm/constructors.rst -doc/build/orm/contextual.rst -doc/build/orm/deprecated.rst -doc/build/orm/events.rst -doc/build/orm/examples.rst -doc/build/orm/exceptions.rst -doc/build/orm/extending.rst -doc/build/orm/index.rst -doc/build/orm/inheritance.rst -doc/build/orm/inheritance_loading.rst -doc/build/orm/internals.rst -doc/build/orm/join_conditions.rst -doc/build/orm/loading.rst -doc/build/orm/loading_columns.rst -doc/build/orm/loading_objects.rst -doc/build/orm/loading_relationships.rst -doc/build/orm/mapped_attributes.rst -doc/build/orm/mapped_sql_expr.rst -doc/build/orm/mapper_config.rst -doc/build/orm/mapping_api.rst -doc/build/orm/mapping_columns.rst -doc/build/orm/mapping_styles.rst -doc/build/orm/nonstandard_mappings.rst -doc/build/orm/persistence_techniques.rst -doc/build/orm/query.rst -doc/build/orm/relationship_api.rst -doc/build/orm/relationship_persistence.rst -doc/build/orm/relationships.rst -doc/build/orm/scalar_mapping.rst -doc/build/orm/self_referential.rst -doc/build/orm/session.rst -doc/build/orm/session_api.rst -doc/build/orm/session_basics.rst -doc/build/orm/session_events.rst -doc/build/orm/session_state_management.rst -doc/build/orm/session_transaction.rst -doc/build/orm/tutorial.rst -doc/build/orm/versioning.rst -doc/build/orm/extensions/associationproxy.rst -doc/build/orm/extensions/automap.rst -doc/build/orm/extensions/baked.rst -doc/build/orm/extensions/horizontal_shard.rst -doc/build/orm/extensions/hybrid.rst -doc/build/orm/extensions/index.rst -doc/build/orm/extensions/indexable.rst -doc/build/orm/extensions/instrumentation.rst -doc/build/orm/extensions/mutable.rst -doc/build/orm/extensions/orderinglist.rst -doc/build/orm/extensions/declarative/api.rst -doc/build/orm/extensions/declarative/basic_use.rst -doc/build/orm/extensions/declarative/index.rst -doc/build/orm/extensions/declarative/inheritance.rst -doc/build/orm/extensions/declarative/mixins.rst -doc/build/orm/extensions/declarative/relationships.rst -doc/build/orm/extensions/declarative/table_config.rst -doc/build/texinputs/Makefile -doc/build/texinputs/sphinx.sty -doc/changelog/changelog_01.html -doc/changelog/changelog_02.html -doc/changelog/changelog_03.html -doc/changelog/changelog_04.html -doc/changelog/changelog_05.html -doc/changelog/changelog_06.html -doc/changelog/changelog_07.html -doc/changelog/changelog_08.html -doc/changelog/changelog_09.html -doc/changelog/changelog_10.html -doc/changelog/changelog_11.html -doc/changelog/changelog_12.html -doc/changelog/changelog_13.html -doc/changelog/index.html -doc/changelog/migration_04.html -doc/changelog/migration_05.html -doc/changelog/migration_06.html -doc/changelog/migration_07.html -doc/changelog/migration_08.html -doc/changelog/migration_09.html -doc/changelog/migration_10.html -doc/changelog/migration_11.html -doc/changelog/migration_12.html -doc/changelog/migration_13.html -doc/core/api_basics.html -doc/core/compiler.html -doc/core/connections.html -doc/core/constraints.html -doc/core/custom_types.html -doc/core/ddl.html -doc/core/defaults.html -doc/core/dml.html -doc/core/engines.html -doc/core/engines_connections.html -doc/core/event.html -doc/core/events.html -doc/core/exceptions.html -doc/core/expression_api.html -doc/core/functions.html -doc/core/index.html -doc/core/inspection.html -doc/core/interfaces.html -doc/core/internals.html -doc/core/metadata.html -doc/core/pooling.html -doc/core/reflection.html -doc/core/schema.html -doc/core/selectable.html -doc/core/serializer.html -doc/core/sqlelement.html -doc/core/tutorial.html -doc/core/type_api.html -doc/core/type_basics.html -doc/core/types.html -doc/core/visitors.html -doc/dialects/firebird.html -doc/dialects/index.html -doc/dialects/mssql.html -doc/dialects/mysql.html -doc/dialects/oracle.html -doc/dialects/postgresql.html -doc/dialects/sqlite.html -doc/dialects/sybase.html -doc/faq/connections.html -doc/faq/index.html -doc/faq/metadata_schema.html -doc/faq/ormconfiguration.html -doc/faq/performance.html -doc/faq/sessions.html -doc/faq/sqlexpressions.html -doc/orm/backref.html -doc/orm/basic_relationships.html -doc/orm/cascades.html -doc/orm/classical.html -doc/orm/collections.html -doc/orm/composites.html -doc/orm/constructors.html -doc/orm/contextual.html -doc/orm/deprecated.html -doc/orm/events.html -doc/orm/examples.html -doc/orm/exceptions.html -doc/orm/extending.html -doc/orm/index.html -doc/orm/inheritance.html -doc/orm/inheritance_loading.html -doc/orm/internals.html -doc/orm/join_conditions.html -doc/orm/loading.html -doc/orm/loading_columns.html -doc/orm/loading_objects.html -doc/orm/loading_relationships.html -doc/orm/mapped_attributes.html -doc/orm/mapped_sql_expr.html -doc/orm/mapper_config.html -doc/orm/mapping_api.html -doc/orm/mapping_columns.html -doc/orm/mapping_styles.html -doc/orm/nonstandard_mappings.html -doc/orm/persistence_techniques.html -doc/orm/query.html -doc/orm/relationship_api.html -doc/orm/relationship_persistence.html -doc/orm/relationships.html -doc/orm/scalar_mapping.html -doc/orm/self_referential.html -doc/orm/session.html -doc/orm/session_api.html -doc/orm/session_basics.html -doc/orm/session_events.html -doc/orm/session_state_management.html -doc/orm/session_transaction.html -doc/orm/tutorial.html -doc/orm/versioning.html -doc/orm/extensions/associationproxy.html -doc/orm/extensions/automap.html -doc/orm/extensions/baked.html -doc/orm/extensions/horizontal_shard.html -doc/orm/extensions/hybrid.html -doc/orm/extensions/index.html -doc/orm/extensions/indexable.html -doc/orm/extensions/instrumentation.html -doc/orm/extensions/mutable.html -doc/orm/extensions/orderinglist.html -doc/orm/extensions/declarative/api.html -doc/orm/extensions/declarative/basic_use.html -doc/orm/extensions/declarative/index.html -doc/orm/extensions/declarative/inheritance.html -doc/orm/extensions/declarative/mixins.html -doc/orm/extensions/declarative/relationships.html -doc/orm/extensions/declarative/table_config.html -examples/__init__.py -examples/adjacency_list/__init__.py -examples/adjacency_list/adjacency_list.py -examples/association/__init__.py -examples/association/basic_association.py -examples/association/dict_of_sets_with_default.py -examples/association/proxied_association.py -examples/custom_attributes/__init__.py -examples/custom_attributes/active_column_defaults.py -examples/custom_attributes/custom_management.py -examples/custom_attributes/listen_for_events.py -examples/dogpile_caching/__init__.py -examples/dogpile_caching/advanced.py -examples/dogpile_caching/caching_query.py -examples/dogpile_caching/environment.py -examples/dogpile_caching/fixture_data.py -examples/dogpile_caching/helloworld.py -examples/dogpile_caching/local_session_caching.py -examples/dogpile_caching/model.py -examples/dogpile_caching/relationship_caching.py -examples/dynamic_dict/__init__.py -examples/dynamic_dict/dynamic_dict.py -examples/elementtree/__init__.py -examples/elementtree/adjacency_list.py -examples/elementtree/optimized_al.py -examples/elementtree/pickle_type.py -examples/elementtree/test.xml -examples/elementtree/test2.xml -examples/elementtree/test3.xml -examples/generic_associations/__init__.py -examples/generic_associations/discriminator_on_association.py -examples/generic_associations/generic_fk.py -examples/generic_associations/table_per_association.py -examples/generic_associations/table_per_related.py -examples/graphs/__init__.py -examples/graphs/directed_graph.py -examples/inheritance/__init__.py -examples/inheritance/concrete.py -examples/inheritance/joined.py -examples/inheritance/single.py -examples/join_conditions/__init__.py -examples/join_conditions/cast.py -examples/join_conditions/threeway.py -examples/large_collection/__init__.py -examples/large_collection/large_collection.py -examples/materialized_paths/__init__.py -examples/materialized_paths/materialized_paths.py -examples/nested_sets/__init__.py -examples/nested_sets/nested_sets.py -examples/performance/__init__.py -examples/performance/__main__.py -examples/performance/bulk_inserts.py -examples/performance/bulk_updates.py -examples/performance/large_resultsets.py -examples/performance/short_selects.py -examples/performance/single_inserts.py -examples/postgis/__init__.py -examples/postgis/postgis.py -examples/sharding/__init__.py -examples/sharding/attribute_shard.py -examples/space_invaders/__init__.py -examples/space_invaders/space_invaders.py -examples/versioned_history/__init__.py -examples/versioned_history/history_meta.py -examples/versioned_history/test_versioning.py -examples/versioned_rows/__init__.py -examples/versioned_rows/versioned_map.py -examples/versioned_rows/versioned_rows.py -examples/versioned_rows/versioned_rows_w_versionid.py -examples/versioned_rows/versioned_update_old_row.py -examples/vertical/__init__.py -examples/vertical/dictlike-polymorphic.py -examples/vertical/dictlike.py -lib/SQLAlchemy.egg-info/PKG-INFO -lib/SQLAlchemy.egg-info/SOURCES.txt -lib/SQLAlchemy.egg-info/dependency_links.txt -lib/SQLAlchemy.egg-info/requires.txt -lib/SQLAlchemy.egg-info/top_level.txt -lib/sqlalchemy/__init__.py -lib/sqlalchemy/events.py -lib/sqlalchemy/exc.py -lib/sqlalchemy/inspection.py -lib/sqlalchemy/interfaces.py -lib/sqlalchemy/log.py -lib/sqlalchemy/processors.py -lib/sqlalchemy/schema.py -lib/sqlalchemy/types.py -lib/sqlalchemy/cextension/processors.c -lib/sqlalchemy/cextension/resultproxy.c -lib/sqlalchemy/cextension/utils.c -lib/sqlalchemy/connectors/__init__.py -lib/sqlalchemy/connectors/mxodbc.py -lib/sqlalchemy/connectors/pyodbc.py -lib/sqlalchemy/connectors/zxJDBC.py -lib/sqlalchemy/databases/__init__.py -lib/sqlalchemy/dialects/__init__.py -lib/sqlalchemy/dialects/type_migration_guidelines.txt -lib/sqlalchemy/dialects/firebird/__init__.py -lib/sqlalchemy/dialects/firebird/base.py -lib/sqlalchemy/dialects/firebird/fdb.py -lib/sqlalchemy/dialects/firebird/kinterbasdb.py -lib/sqlalchemy/dialects/mssql/__init__.py -lib/sqlalchemy/dialects/mssql/adodbapi.py -lib/sqlalchemy/dialects/mssql/base.py -lib/sqlalchemy/dialects/mssql/information_schema.py -lib/sqlalchemy/dialects/mssql/mxodbc.py -lib/sqlalchemy/dialects/mssql/pymssql.py -lib/sqlalchemy/dialects/mssql/pyodbc.py -lib/sqlalchemy/dialects/mssql/zxjdbc.py -lib/sqlalchemy/dialects/mysql/__init__.py -lib/sqlalchemy/dialects/mysql/base.py -lib/sqlalchemy/dialects/mysql/cymysql.py -lib/sqlalchemy/dialects/mysql/dml.py -lib/sqlalchemy/dialects/mysql/enumerated.py -lib/sqlalchemy/dialects/mysql/gaerdbms.py -lib/sqlalchemy/dialects/mysql/json.py -lib/sqlalchemy/dialects/mysql/mysqlconnector.py -lib/sqlalchemy/dialects/mysql/mysqldb.py -lib/sqlalchemy/dialects/mysql/oursql.py -lib/sqlalchemy/dialects/mysql/pymysql.py -lib/sqlalchemy/dialects/mysql/pyodbc.py -lib/sqlalchemy/dialects/mysql/reflection.py -lib/sqlalchemy/dialects/mysql/types.py -lib/sqlalchemy/dialects/mysql/zxjdbc.py -lib/sqlalchemy/dialects/oracle/__init__.py -lib/sqlalchemy/dialects/oracle/base.py -lib/sqlalchemy/dialects/oracle/cx_oracle.py -lib/sqlalchemy/dialects/oracle/zxjdbc.py -lib/sqlalchemy/dialects/postgresql/__init__.py -lib/sqlalchemy/dialects/postgresql/array.py -lib/sqlalchemy/dialects/postgresql/base.py -lib/sqlalchemy/dialects/postgresql/dml.py -lib/sqlalchemy/dialects/postgresql/ext.py -lib/sqlalchemy/dialects/postgresql/hstore.py -lib/sqlalchemy/dialects/postgresql/json.py -lib/sqlalchemy/dialects/postgresql/pg8000.py -lib/sqlalchemy/dialects/postgresql/psycopg2.py -lib/sqlalchemy/dialects/postgresql/psycopg2cffi.py -lib/sqlalchemy/dialects/postgresql/pygresql.py -lib/sqlalchemy/dialects/postgresql/pypostgresql.py -lib/sqlalchemy/dialects/postgresql/ranges.py -lib/sqlalchemy/dialects/postgresql/zxjdbc.py -lib/sqlalchemy/dialects/sqlite/__init__.py -lib/sqlalchemy/dialects/sqlite/base.py -lib/sqlalchemy/dialects/sqlite/json.py -lib/sqlalchemy/dialects/sqlite/pysqlcipher.py -lib/sqlalchemy/dialects/sqlite/pysqlite.py -lib/sqlalchemy/dialects/sybase/__init__.py -lib/sqlalchemy/dialects/sybase/base.py -lib/sqlalchemy/dialects/sybase/mxodbc.py -lib/sqlalchemy/dialects/sybase/pyodbc.py -lib/sqlalchemy/dialects/sybase/pysybase.py -lib/sqlalchemy/engine/__init__.py -lib/sqlalchemy/engine/base.py -lib/sqlalchemy/engine/default.py -lib/sqlalchemy/engine/interfaces.py -lib/sqlalchemy/engine/reflection.py -lib/sqlalchemy/engine/result.py -lib/sqlalchemy/engine/strategies.py -lib/sqlalchemy/engine/threadlocal.py -lib/sqlalchemy/engine/url.py -lib/sqlalchemy/engine/util.py -lib/sqlalchemy/event/__init__.py -lib/sqlalchemy/event/api.py -lib/sqlalchemy/event/attr.py -lib/sqlalchemy/event/base.py -lib/sqlalchemy/event/legacy.py -lib/sqlalchemy/event/registry.py -lib/sqlalchemy/ext/__init__.py -lib/sqlalchemy/ext/associationproxy.py -lib/sqlalchemy/ext/automap.py -lib/sqlalchemy/ext/baked.py -lib/sqlalchemy/ext/compiler.py -lib/sqlalchemy/ext/horizontal_shard.py -lib/sqlalchemy/ext/hybrid.py -lib/sqlalchemy/ext/indexable.py -lib/sqlalchemy/ext/instrumentation.py -lib/sqlalchemy/ext/mutable.py -lib/sqlalchemy/ext/orderinglist.py -lib/sqlalchemy/ext/serializer.py -lib/sqlalchemy/ext/declarative/__init__.py -lib/sqlalchemy/ext/declarative/api.py -lib/sqlalchemy/ext/declarative/base.py -lib/sqlalchemy/ext/declarative/clsregistry.py -lib/sqlalchemy/orm/__init__.py -lib/sqlalchemy/orm/attributes.py -lib/sqlalchemy/orm/base.py -lib/sqlalchemy/orm/collections.py -lib/sqlalchemy/orm/dependency.py -lib/sqlalchemy/orm/deprecated_interfaces.py -lib/sqlalchemy/orm/descriptor_props.py -lib/sqlalchemy/orm/dynamic.py -lib/sqlalchemy/orm/evaluator.py -lib/sqlalchemy/orm/events.py -lib/sqlalchemy/orm/exc.py -lib/sqlalchemy/orm/identity.py -lib/sqlalchemy/orm/instrumentation.py -lib/sqlalchemy/orm/interfaces.py -lib/sqlalchemy/orm/loading.py -lib/sqlalchemy/orm/mapper.py -lib/sqlalchemy/orm/path_registry.py -lib/sqlalchemy/orm/persistence.py -lib/sqlalchemy/orm/properties.py -lib/sqlalchemy/orm/query.py -lib/sqlalchemy/orm/relationships.py -lib/sqlalchemy/orm/scoping.py -lib/sqlalchemy/orm/session.py -lib/sqlalchemy/orm/state.py -lib/sqlalchemy/orm/strategies.py -lib/sqlalchemy/orm/strategy_options.py -lib/sqlalchemy/orm/sync.py -lib/sqlalchemy/orm/unitofwork.py -lib/sqlalchemy/orm/util.py -lib/sqlalchemy/pool/__init__.py -lib/sqlalchemy/pool/base.py -lib/sqlalchemy/pool/dbapi_proxy.py -lib/sqlalchemy/pool/impl.py -lib/sqlalchemy/sql/__init__.py -lib/sqlalchemy/sql/annotation.py -lib/sqlalchemy/sql/base.py -lib/sqlalchemy/sql/compiler.py -lib/sqlalchemy/sql/crud.py -lib/sqlalchemy/sql/ddl.py -lib/sqlalchemy/sql/default_comparator.py -lib/sqlalchemy/sql/dml.py -lib/sqlalchemy/sql/elements.py -lib/sqlalchemy/sql/expression.py -lib/sqlalchemy/sql/functions.py -lib/sqlalchemy/sql/naming.py -lib/sqlalchemy/sql/operators.py -lib/sqlalchemy/sql/schema.py -lib/sqlalchemy/sql/selectable.py -lib/sqlalchemy/sql/sqltypes.py -lib/sqlalchemy/sql/type_api.py -lib/sqlalchemy/sql/util.py -lib/sqlalchemy/sql/visitors.py -lib/sqlalchemy/testing/__init__.py -lib/sqlalchemy/testing/assertions.py -lib/sqlalchemy/testing/assertsql.py -lib/sqlalchemy/testing/config.py -lib/sqlalchemy/testing/engines.py -lib/sqlalchemy/testing/entities.py -lib/sqlalchemy/testing/exclusions.py -lib/sqlalchemy/testing/fixtures.py -lib/sqlalchemy/testing/mock.py -lib/sqlalchemy/testing/pickleable.py -lib/sqlalchemy/testing/profiling.py -lib/sqlalchemy/testing/provision.py -lib/sqlalchemy/testing/replay_fixture.py -lib/sqlalchemy/testing/requirements.py -lib/sqlalchemy/testing/schema.py -lib/sqlalchemy/testing/util.py -lib/sqlalchemy/testing/warnings.py -lib/sqlalchemy/testing/plugin/__init__.py -lib/sqlalchemy/testing/plugin/bootstrap.py -lib/sqlalchemy/testing/plugin/plugin_base.py -lib/sqlalchemy/testing/plugin/pytestplugin.py -lib/sqlalchemy/testing/suite/__init__.py -lib/sqlalchemy/testing/suite/test_cte.py -lib/sqlalchemy/testing/suite/test_ddl.py -lib/sqlalchemy/testing/suite/test_dialect.py -lib/sqlalchemy/testing/suite/test_insert.py -lib/sqlalchemy/testing/suite/test_reflection.py -lib/sqlalchemy/testing/suite/test_results.py -lib/sqlalchemy/testing/suite/test_select.py -lib/sqlalchemy/testing/suite/test_sequence.py -lib/sqlalchemy/testing/suite/test_types.py -lib/sqlalchemy/testing/suite/test_update_delete.py -lib/sqlalchemy/util/__init__.py -lib/sqlalchemy/util/_collections.py -lib/sqlalchemy/util/compat.py -lib/sqlalchemy/util/deprecations.py -lib/sqlalchemy/util/langhelpers.py -lib/sqlalchemy/util/queue.py -lib/sqlalchemy/util/topological.py -test/__init__.py -test/binary_data_one.dat -test/binary_data_two.dat -test/conftest.py -test/requirements.py -test/aaa_profiling/__init__.py -test/aaa_profiling/test_compiler.py -test/aaa_profiling/test_memusage.py -test/aaa_profiling/test_misc.py -test/aaa_profiling/test_orm.py -test/aaa_profiling/test_pool.py -test/aaa_profiling/test_resultset.py -test/aaa_profiling/test_zoomark.py -test/aaa_profiling/test_zoomark_orm.py -test/base/__init__.py -test/base/test_dependency.py -test/base/test_events.py -test/base/test_except.py -test/base/test_inspect.py -test/base/test_tutorials.py -test/base/test_utils.py -test/dialect/__init__.py -test/dialect/test_all.py -test/dialect/test_firebird.py -test/dialect/test_mxodbc.py -test/dialect/test_pyodbc.py -test/dialect/test_sqlite.py -test/dialect/test_suite.py -test/dialect/test_sybase.py -test/dialect/mssql/__init__.py -test/dialect/mssql/test_compiler.py -test/dialect/mssql/test_engine.py -test/dialect/mssql/test_query.py -test/dialect/mssql/test_reflection.py -test/dialect/mssql/test_types.py -test/dialect/mysql/__init__.py -test/dialect/mysql/test_compiler.py -test/dialect/mysql/test_dialect.py -test/dialect/mysql/test_for_update.py -test/dialect/mysql/test_on_duplicate.py -test/dialect/mysql/test_query.py -test/dialect/mysql/test_reflection.py -test/dialect/mysql/test_types.py -test/dialect/oracle/__init__.py -test/dialect/oracle/test_compiler.py -test/dialect/oracle/test_dialect.py -test/dialect/oracle/test_reflection.py -test/dialect/oracle/test_types.py -test/dialect/postgresql/__init__.py -test/dialect/postgresql/test_compiler.py -test/dialect/postgresql/test_dialect.py -test/dialect/postgresql/test_on_conflict.py -test/dialect/postgresql/test_query.py -test/dialect/postgresql/test_reflection.py -test/dialect/postgresql/test_types.py -test/engine/__init__.py -test/engine/test_bind.py -test/engine/test_ddlevents.py -test/engine/test_deprecations.py -test/engine/test_execute.py -test/engine/test_logging.py -test/engine/test_parseconnect.py -test/engine/test_pool.py -test/engine/test_processors.py -test/engine/test_reconnect.py -test/engine/test_reflection.py -test/engine/test_transaction.py -test/ext/__init__.py -test/ext/test_associationproxy.py -test/ext/test_automap.py -test/ext/test_baked.py -test/ext/test_compiler.py -test/ext/test_deprecations.py -test/ext/test_extendedattr.py -test/ext/test_horizontal_shard.py -test/ext/test_hybrid.py -test/ext/test_indexable.py -test/ext/test_mutable.py -test/ext/test_orderinglist.py -test/ext/test_serializer.py -test/ext/declarative/__init__.py -test/ext/declarative/test_basic.py -test/ext/declarative/test_clsregistry.py -test/ext/declarative/test_concurrency.py -test/ext/declarative/test_inheritance.py -test/ext/declarative/test_mixin.py -test/ext/declarative/test_reflection.py -test/orm/__init__.py -test/orm/_fixtures.py -test/orm/test_ac_relationships.py -test/orm/test_association.py -test/orm/test_assorted_eager.py -test/orm/test_attributes.py -test/orm/test_backref_mutations.py -test/orm/test_bind.py -test/orm/test_bulk.py -test/orm/test_bundle.py -test/orm/test_cascade.py -test/orm/test_collection.py -test/orm/test_compile.py -test/orm/test_composites.py -test/orm/test_cycles.py -test/orm/test_default_strategies.py -test/orm/test_defaults.py -test/orm/test_deferred.py -test/orm/test_deprecations.py -test/orm/test_descriptor.py -test/orm/test_dynamic.py -test/orm/test_eager_relations.py -test/orm/test_evaluator.py -test/orm/test_events.py -test/orm/test_expire.py -test/orm/test_froms.py -test/orm/test_generative.py -test/orm/test_hasparent.py -test/orm/test_immediate_load.py -test/orm/test_inspect.py -test/orm/test_instrumentation.py -test/orm/test_joins.py -test/orm/test_lazy_relations.py -test/orm/test_load_on_fks.py -test/orm/test_loading.py -test/orm/test_lockmode.py -test/orm/test_manytomany.py -test/orm/test_mapper.py -test/orm/test_merge.py -test/orm/test_naturalpks.py -test/orm/test_of_type.py -test/orm/test_onetoone.py -test/orm/test_options.py -test/orm/test_pickled.py -test/orm/test_query.py -test/orm/test_rel_fn.py -test/orm/test_relationships.py -test/orm/test_scoping.py -test/orm/test_selectable.py -test/orm/test_selectin_relations.py -test/orm/test_session.py -test/orm/test_subquery_relations.py -test/orm/test_sync.py -test/orm/test_transaction.py -test/orm/test_unitofwork.py -test/orm/test_unitofworkv2.py -test/orm/test_update_delete.py -test/orm/test_utils.py -test/orm/test_validators.py -test/orm/test_versioning.py -test/orm/inheritance/__init__.py -test/orm/inheritance/_poly_fixtures.py -test/orm/inheritance/test_abc_inheritance.py -test/orm/inheritance/test_abc_polymorphic.py -test/orm/inheritance/test_assorted_poly.py -test/orm/inheritance/test_basic.py -test/orm/inheritance/test_concrete.py -test/orm/inheritance/test_magazine.py -test/orm/inheritance/test_manytomany.py -test/orm/inheritance/test_poly_linked_list.py -test/orm/inheritance/test_poly_loading.py -test/orm/inheritance/test_poly_persistence.py -test/orm/inheritance/test_polymorphic_rel.py -test/orm/inheritance/test_productspec.py -test/orm/inheritance/test_relationship.py -test/orm/inheritance/test_selects.py -test/orm/inheritance/test_single.py -test/orm/inheritance/test_with_poly.py -test/perf/invalidate_stresstest.py -test/perf/orm2010.py -test/sql/__init__.py -test/sql/test_case_statement.py -test/sql/test_compiler.py -test/sql/test_computed.py -test/sql/test_constraints.py -test/sql/test_cte.py -test/sql/test_ddlemit.py -test/sql/test_defaults.py -test/sql/test_delete.py -test/sql/test_deprecations.py -test/sql/test_functions.py -test/sql/test_generative.py -test/sql/test_insert.py -test/sql/test_insert_exec.py -test/sql/test_inspect.py -test/sql/test_join_rewriting.py -test/sql/test_labels.py -test/sql/test_lateral.py -test/sql/test_metadata.py -test/sql/test_operators.py -test/sql/test_query.py -test/sql/test_quote.py -test/sql/test_resultset.py -test/sql/test_returning.py -test/sql/test_rowcount.py -test/sql/test_selectable.py -test/sql/test_tablesample.py -test/sql/test_text.py -test/sql/test_type_expressions.py -test/sql/test_types.py -test/sql/test_unicode.py -test/sql/test_update.py -test/sql/test_utils.py \ No newline at end of file diff --git a/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/dependency_links.txt b/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789..0000000 --- a/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/installed-files.txt b/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/installed-files.txt deleted file mode 100644 index 3d69885..0000000 --- a/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/installed-files.txt +++ /dev/null @@ -1,394 +0,0 @@ -../sqlalchemy/__init__.py -../sqlalchemy/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/__pycache__/events.cpython-37.pyc -../sqlalchemy/__pycache__/exc.cpython-37.pyc -../sqlalchemy/__pycache__/inspection.cpython-37.pyc -../sqlalchemy/__pycache__/interfaces.cpython-37.pyc -../sqlalchemy/__pycache__/log.cpython-37.pyc -../sqlalchemy/__pycache__/processors.cpython-37.pyc -../sqlalchemy/__pycache__/schema.cpython-37.pyc -../sqlalchemy/__pycache__/types.cpython-37.pyc -../sqlalchemy/connectors/__init__.py -../sqlalchemy/connectors/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/connectors/__pycache__/mxodbc.cpython-37.pyc -../sqlalchemy/connectors/__pycache__/pyodbc.cpython-37.pyc -../sqlalchemy/connectors/__pycache__/zxJDBC.cpython-37.pyc -../sqlalchemy/connectors/mxodbc.py -../sqlalchemy/connectors/pyodbc.py -../sqlalchemy/connectors/zxJDBC.py -../sqlalchemy/cprocessors.cpython-37m-x86_64-linux-gnu.so -../sqlalchemy/cresultproxy.cpython-37m-x86_64-linux-gnu.so -../sqlalchemy/cutils.cpython-37m-x86_64-linux-gnu.so -../sqlalchemy/databases/__init__.py -../sqlalchemy/databases/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/dialects/__init__.py -../sqlalchemy/dialects/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/dialects/firebird/__init__.py -../sqlalchemy/dialects/firebird/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/dialects/firebird/__pycache__/base.cpython-37.pyc -../sqlalchemy/dialects/firebird/__pycache__/fdb.cpython-37.pyc -../sqlalchemy/dialects/firebird/__pycache__/kinterbasdb.cpython-37.pyc -../sqlalchemy/dialects/firebird/base.py -../sqlalchemy/dialects/firebird/fdb.py -../sqlalchemy/dialects/firebird/kinterbasdb.py -../sqlalchemy/dialects/mssql/__init__.py -../sqlalchemy/dialects/mssql/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/dialects/mssql/__pycache__/adodbapi.cpython-37.pyc -../sqlalchemy/dialects/mssql/__pycache__/base.cpython-37.pyc -../sqlalchemy/dialects/mssql/__pycache__/information_schema.cpython-37.pyc -../sqlalchemy/dialects/mssql/__pycache__/mxodbc.cpython-37.pyc -../sqlalchemy/dialects/mssql/__pycache__/pymssql.cpython-37.pyc -../sqlalchemy/dialects/mssql/__pycache__/pyodbc.cpython-37.pyc -../sqlalchemy/dialects/mssql/__pycache__/zxjdbc.cpython-37.pyc -../sqlalchemy/dialects/mssql/adodbapi.py -../sqlalchemy/dialects/mssql/base.py -../sqlalchemy/dialects/mssql/information_schema.py -../sqlalchemy/dialects/mssql/mxodbc.py -../sqlalchemy/dialects/mssql/pymssql.py -../sqlalchemy/dialects/mssql/pyodbc.py -../sqlalchemy/dialects/mssql/zxjdbc.py -../sqlalchemy/dialects/mysql/__init__.py -../sqlalchemy/dialects/mysql/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/dialects/mysql/__pycache__/base.cpython-37.pyc -../sqlalchemy/dialects/mysql/__pycache__/cymysql.cpython-37.pyc -../sqlalchemy/dialects/mysql/__pycache__/dml.cpython-37.pyc -../sqlalchemy/dialects/mysql/__pycache__/enumerated.cpython-37.pyc -../sqlalchemy/dialects/mysql/__pycache__/gaerdbms.cpython-37.pyc -../sqlalchemy/dialects/mysql/__pycache__/json.cpython-37.pyc -../sqlalchemy/dialects/mysql/__pycache__/mysqlconnector.cpython-37.pyc -../sqlalchemy/dialects/mysql/__pycache__/mysqldb.cpython-37.pyc -../sqlalchemy/dialects/mysql/__pycache__/oursql.cpython-37.pyc -../sqlalchemy/dialects/mysql/__pycache__/pymysql.cpython-37.pyc -../sqlalchemy/dialects/mysql/__pycache__/pyodbc.cpython-37.pyc -../sqlalchemy/dialects/mysql/__pycache__/reflection.cpython-37.pyc -../sqlalchemy/dialects/mysql/__pycache__/types.cpython-37.pyc -../sqlalchemy/dialects/mysql/__pycache__/zxjdbc.cpython-37.pyc -../sqlalchemy/dialects/mysql/base.py -../sqlalchemy/dialects/mysql/cymysql.py -../sqlalchemy/dialects/mysql/dml.py -../sqlalchemy/dialects/mysql/enumerated.py -../sqlalchemy/dialects/mysql/gaerdbms.py -../sqlalchemy/dialects/mysql/json.py -../sqlalchemy/dialects/mysql/mysqlconnector.py -../sqlalchemy/dialects/mysql/mysqldb.py -../sqlalchemy/dialects/mysql/oursql.py -../sqlalchemy/dialects/mysql/pymysql.py -../sqlalchemy/dialects/mysql/pyodbc.py -../sqlalchemy/dialects/mysql/reflection.py -../sqlalchemy/dialects/mysql/types.py -../sqlalchemy/dialects/mysql/zxjdbc.py -../sqlalchemy/dialects/oracle/__init__.py -../sqlalchemy/dialects/oracle/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/dialects/oracle/__pycache__/base.cpython-37.pyc -../sqlalchemy/dialects/oracle/__pycache__/cx_oracle.cpython-37.pyc -../sqlalchemy/dialects/oracle/__pycache__/zxjdbc.cpython-37.pyc -../sqlalchemy/dialects/oracle/base.py -../sqlalchemy/dialects/oracle/cx_oracle.py -../sqlalchemy/dialects/oracle/zxjdbc.py -../sqlalchemy/dialects/postgresql/__init__.py -../sqlalchemy/dialects/postgresql/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/dialects/postgresql/__pycache__/array.cpython-37.pyc -../sqlalchemy/dialects/postgresql/__pycache__/base.cpython-37.pyc -../sqlalchemy/dialects/postgresql/__pycache__/dml.cpython-37.pyc -../sqlalchemy/dialects/postgresql/__pycache__/ext.cpython-37.pyc -../sqlalchemy/dialects/postgresql/__pycache__/hstore.cpython-37.pyc -../sqlalchemy/dialects/postgresql/__pycache__/json.cpython-37.pyc -../sqlalchemy/dialects/postgresql/__pycache__/pg8000.cpython-37.pyc -../sqlalchemy/dialects/postgresql/__pycache__/psycopg2.cpython-37.pyc -../sqlalchemy/dialects/postgresql/__pycache__/psycopg2cffi.cpython-37.pyc -../sqlalchemy/dialects/postgresql/__pycache__/pygresql.cpython-37.pyc -../sqlalchemy/dialects/postgresql/__pycache__/pypostgresql.cpython-37.pyc -../sqlalchemy/dialects/postgresql/__pycache__/ranges.cpython-37.pyc -../sqlalchemy/dialects/postgresql/__pycache__/zxjdbc.cpython-37.pyc -../sqlalchemy/dialects/postgresql/array.py -../sqlalchemy/dialects/postgresql/base.py -../sqlalchemy/dialects/postgresql/dml.py -../sqlalchemy/dialects/postgresql/ext.py -../sqlalchemy/dialects/postgresql/hstore.py -../sqlalchemy/dialects/postgresql/json.py -../sqlalchemy/dialects/postgresql/pg8000.py -../sqlalchemy/dialects/postgresql/psycopg2.py -../sqlalchemy/dialects/postgresql/psycopg2cffi.py -../sqlalchemy/dialects/postgresql/pygresql.py -../sqlalchemy/dialects/postgresql/pypostgresql.py -../sqlalchemy/dialects/postgresql/ranges.py -../sqlalchemy/dialects/postgresql/zxjdbc.py -../sqlalchemy/dialects/sqlite/__init__.py -../sqlalchemy/dialects/sqlite/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/dialects/sqlite/__pycache__/base.cpython-37.pyc -../sqlalchemy/dialects/sqlite/__pycache__/json.cpython-37.pyc -../sqlalchemy/dialects/sqlite/__pycache__/pysqlcipher.cpython-37.pyc -../sqlalchemy/dialects/sqlite/__pycache__/pysqlite.cpython-37.pyc -../sqlalchemy/dialects/sqlite/base.py -../sqlalchemy/dialects/sqlite/json.py -../sqlalchemy/dialects/sqlite/pysqlcipher.py -../sqlalchemy/dialects/sqlite/pysqlite.py -../sqlalchemy/dialects/sybase/__init__.py -../sqlalchemy/dialects/sybase/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/dialects/sybase/__pycache__/base.cpython-37.pyc -../sqlalchemy/dialects/sybase/__pycache__/mxodbc.cpython-37.pyc -../sqlalchemy/dialects/sybase/__pycache__/pyodbc.cpython-37.pyc -../sqlalchemy/dialects/sybase/__pycache__/pysybase.cpython-37.pyc -../sqlalchemy/dialects/sybase/base.py -../sqlalchemy/dialects/sybase/mxodbc.py -../sqlalchemy/dialects/sybase/pyodbc.py -../sqlalchemy/dialects/sybase/pysybase.py -../sqlalchemy/engine/__init__.py -../sqlalchemy/engine/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/engine/__pycache__/base.cpython-37.pyc -../sqlalchemy/engine/__pycache__/default.cpython-37.pyc -../sqlalchemy/engine/__pycache__/interfaces.cpython-37.pyc -../sqlalchemy/engine/__pycache__/reflection.cpython-37.pyc -../sqlalchemy/engine/__pycache__/result.cpython-37.pyc -../sqlalchemy/engine/__pycache__/strategies.cpython-37.pyc -../sqlalchemy/engine/__pycache__/threadlocal.cpython-37.pyc -../sqlalchemy/engine/__pycache__/url.cpython-37.pyc -../sqlalchemy/engine/__pycache__/util.cpython-37.pyc -../sqlalchemy/engine/base.py -../sqlalchemy/engine/default.py -../sqlalchemy/engine/interfaces.py -../sqlalchemy/engine/reflection.py -../sqlalchemy/engine/result.py -../sqlalchemy/engine/strategies.py -../sqlalchemy/engine/threadlocal.py -../sqlalchemy/engine/url.py -../sqlalchemy/engine/util.py -../sqlalchemy/event/__init__.py -../sqlalchemy/event/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/event/__pycache__/api.cpython-37.pyc -../sqlalchemy/event/__pycache__/attr.cpython-37.pyc -../sqlalchemy/event/__pycache__/base.cpython-37.pyc -../sqlalchemy/event/__pycache__/legacy.cpython-37.pyc -../sqlalchemy/event/__pycache__/registry.cpython-37.pyc -../sqlalchemy/event/api.py -../sqlalchemy/event/attr.py -../sqlalchemy/event/base.py -../sqlalchemy/event/legacy.py -../sqlalchemy/event/registry.py -../sqlalchemy/events.py -../sqlalchemy/exc.py -../sqlalchemy/ext/__init__.py -../sqlalchemy/ext/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/ext/__pycache__/associationproxy.cpython-37.pyc -../sqlalchemy/ext/__pycache__/automap.cpython-37.pyc -../sqlalchemy/ext/__pycache__/baked.cpython-37.pyc -../sqlalchemy/ext/__pycache__/compiler.cpython-37.pyc -../sqlalchemy/ext/__pycache__/horizontal_shard.cpython-37.pyc -../sqlalchemy/ext/__pycache__/hybrid.cpython-37.pyc -../sqlalchemy/ext/__pycache__/indexable.cpython-37.pyc -../sqlalchemy/ext/__pycache__/instrumentation.cpython-37.pyc -../sqlalchemy/ext/__pycache__/mutable.cpython-37.pyc -../sqlalchemy/ext/__pycache__/orderinglist.cpython-37.pyc -../sqlalchemy/ext/__pycache__/serializer.cpython-37.pyc -../sqlalchemy/ext/associationproxy.py -../sqlalchemy/ext/automap.py -../sqlalchemy/ext/baked.py -../sqlalchemy/ext/compiler.py -../sqlalchemy/ext/declarative/__init__.py -../sqlalchemy/ext/declarative/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/ext/declarative/__pycache__/api.cpython-37.pyc -../sqlalchemy/ext/declarative/__pycache__/base.cpython-37.pyc -../sqlalchemy/ext/declarative/__pycache__/clsregistry.cpython-37.pyc -../sqlalchemy/ext/declarative/api.py -../sqlalchemy/ext/declarative/base.py -../sqlalchemy/ext/declarative/clsregistry.py -../sqlalchemy/ext/horizontal_shard.py -../sqlalchemy/ext/hybrid.py -../sqlalchemy/ext/indexable.py -../sqlalchemy/ext/instrumentation.py -../sqlalchemy/ext/mutable.py -../sqlalchemy/ext/orderinglist.py -../sqlalchemy/ext/serializer.py -../sqlalchemy/inspection.py -../sqlalchemy/interfaces.py -../sqlalchemy/log.py -../sqlalchemy/orm/__init__.py -../sqlalchemy/orm/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/orm/__pycache__/attributes.cpython-37.pyc -../sqlalchemy/orm/__pycache__/base.cpython-37.pyc -../sqlalchemy/orm/__pycache__/collections.cpython-37.pyc -../sqlalchemy/orm/__pycache__/dependency.cpython-37.pyc -../sqlalchemy/orm/__pycache__/deprecated_interfaces.cpython-37.pyc -../sqlalchemy/orm/__pycache__/descriptor_props.cpython-37.pyc -../sqlalchemy/orm/__pycache__/dynamic.cpython-37.pyc -../sqlalchemy/orm/__pycache__/evaluator.cpython-37.pyc -../sqlalchemy/orm/__pycache__/events.cpython-37.pyc -../sqlalchemy/orm/__pycache__/exc.cpython-37.pyc -../sqlalchemy/orm/__pycache__/identity.cpython-37.pyc -../sqlalchemy/orm/__pycache__/instrumentation.cpython-37.pyc -../sqlalchemy/orm/__pycache__/interfaces.cpython-37.pyc -../sqlalchemy/orm/__pycache__/loading.cpython-37.pyc -../sqlalchemy/orm/__pycache__/mapper.cpython-37.pyc -../sqlalchemy/orm/__pycache__/path_registry.cpython-37.pyc -../sqlalchemy/orm/__pycache__/persistence.cpython-37.pyc -../sqlalchemy/orm/__pycache__/properties.cpython-37.pyc -../sqlalchemy/orm/__pycache__/query.cpython-37.pyc -../sqlalchemy/orm/__pycache__/relationships.cpython-37.pyc -../sqlalchemy/orm/__pycache__/scoping.cpython-37.pyc -../sqlalchemy/orm/__pycache__/session.cpython-37.pyc -../sqlalchemy/orm/__pycache__/state.cpython-37.pyc -../sqlalchemy/orm/__pycache__/strategies.cpython-37.pyc -../sqlalchemy/orm/__pycache__/strategy_options.cpython-37.pyc -../sqlalchemy/orm/__pycache__/sync.cpython-37.pyc -../sqlalchemy/orm/__pycache__/unitofwork.cpython-37.pyc -../sqlalchemy/orm/__pycache__/util.cpython-37.pyc -../sqlalchemy/orm/attributes.py -../sqlalchemy/orm/base.py -../sqlalchemy/orm/collections.py -../sqlalchemy/orm/dependency.py -../sqlalchemy/orm/deprecated_interfaces.py -../sqlalchemy/orm/descriptor_props.py -../sqlalchemy/orm/dynamic.py -../sqlalchemy/orm/evaluator.py -../sqlalchemy/orm/events.py -../sqlalchemy/orm/exc.py -../sqlalchemy/orm/identity.py -../sqlalchemy/orm/instrumentation.py -../sqlalchemy/orm/interfaces.py -../sqlalchemy/orm/loading.py -../sqlalchemy/orm/mapper.py -../sqlalchemy/orm/path_registry.py -../sqlalchemy/orm/persistence.py -../sqlalchemy/orm/properties.py -../sqlalchemy/orm/query.py -../sqlalchemy/orm/relationships.py -../sqlalchemy/orm/scoping.py -../sqlalchemy/orm/session.py -../sqlalchemy/orm/state.py -../sqlalchemy/orm/strategies.py -../sqlalchemy/orm/strategy_options.py -../sqlalchemy/orm/sync.py -../sqlalchemy/orm/unitofwork.py -../sqlalchemy/orm/util.py -../sqlalchemy/pool/__init__.py -../sqlalchemy/pool/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/pool/__pycache__/base.cpython-37.pyc -../sqlalchemy/pool/__pycache__/dbapi_proxy.cpython-37.pyc -../sqlalchemy/pool/__pycache__/impl.cpython-37.pyc -../sqlalchemy/pool/base.py -../sqlalchemy/pool/dbapi_proxy.py -../sqlalchemy/pool/impl.py -../sqlalchemy/processors.py -../sqlalchemy/schema.py -../sqlalchemy/sql/__init__.py -../sqlalchemy/sql/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/sql/__pycache__/annotation.cpython-37.pyc -../sqlalchemy/sql/__pycache__/base.cpython-37.pyc -../sqlalchemy/sql/__pycache__/compiler.cpython-37.pyc -../sqlalchemy/sql/__pycache__/crud.cpython-37.pyc -../sqlalchemy/sql/__pycache__/ddl.cpython-37.pyc -../sqlalchemy/sql/__pycache__/default_comparator.cpython-37.pyc -../sqlalchemy/sql/__pycache__/dml.cpython-37.pyc -../sqlalchemy/sql/__pycache__/elements.cpython-37.pyc -../sqlalchemy/sql/__pycache__/expression.cpython-37.pyc -../sqlalchemy/sql/__pycache__/functions.cpython-37.pyc -../sqlalchemy/sql/__pycache__/naming.cpython-37.pyc -../sqlalchemy/sql/__pycache__/operators.cpython-37.pyc -../sqlalchemy/sql/__pycache__/schema.cpython-37.pyc -../sqlalchemy/sql/__pycache__/selectable.cpython-37.pyc -../sqlalchemy/sql/__pycache__/sqltypes.cpython-37.pyc -../sqlalchemy/sql/__pycache__/type_api.cpython-37.pyc -../sqlalchemy/sql/__pycache__/util.cpython-37.pyc -../sqlalchemy/sql/__pycache__/visitors.cpython-37.pyc -../sqlalchemy/sql/annotation.py -../sqlalchemy/sql/base.py -../sqlalchemy/sql/compiler.py -../sqlalchemy/sql/crud.py -../sqlalchemy/sql/ddl.py -../sqlalchemy/sql/default_comparator.py -../sqlalchemy/sql/dml.py -../sqlalchemy/sql/elements.py -../sqlalchemy/sql/expression.py -../sqlalchemy/sql/functions.py -../sqlalchemy/sql/naming.py -../sqlalchemy/sql/operators.py -../sqlalchemy/sql/schema.py -../sqlalchemy/sql/selectable.py -../sqlalchemy/sql/sqltypes.py -../sqlalchemy/sql/type_api.py -../sqlalchemy/sql/util.py -../sqlalchemy/sql/visitors.py -../sqlalchemy/testing/__init__.py -../sqlalchemy/testing/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/testing/__pycache__/assertions.cpython-37.pyc -../sqlalchemy/testing/__pycache__/assertsql.cpython-37.pyc -../sqlalchemy/testing/__pycache__/config.cpython-37.pyc -../sqlalchemy/testing/__pycache__/engines.cpython-37.pyc -../sqlalchemy/testing/__pycache__/entities.cpython-37.pyc -../sqlalchemy/testing/__pycache__/exclusions.cpython-37.pyc -../sqlalchemy/testing/__pycache__/fixtures.cpython-37.pyc -../sqlalchemy/testing/__pycache__/mock.cpython-37.pyc -../sqlalchemy/testing/__pycache__/pickleable.cpython-37.pyc -../sqlalchemy/testing/__pycache__/profiling.cpython-37.pyc -../sqlalchemy/testing/__pycache__/provision.cpython-37.pyc -../sqlalchemy/testing/__pycache__/replay_fixture.cpython-37.pyc -../sqlalchemy/testing/__pycache__/requirements.cpython-37.pyc -../sqlalchemy/testing/__pycache__/schema.cpython-37.pyc -../sqlalchemy/testing/__pycache__/util.cpython-37.pyc -../sqlalchemy/testing/__pycache__/warnings.cpython-37.pyc -../sqlalchemy/testing/assertions.py -../sqlalchemy/testing/assertsql.py -../sqlalchemy/testing/config.py -../sqlalchemy/testing/engines.py -../sqlalchemy/testing/entities.py -../sqlalchemy/testing/exclusions.py -../sqlalchemy/testing/fixtures.py -../sqlalchemy/testing/mock.py -../sqlalchemy/testing/pickleable.py -../sqlalchemy/testing/plugin/__init__.py -../sqlalchemy/testing/plugin/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/testing/plugin/__pycache__/bootstrap.cpython-37.pyc -../sqlalchemy/testing/plugin/__pycache__/plugin_base.cpython-37.pyc -../sqlalchemy/testing/plugin/__pycache__/pytestplugin.cpython-37.pyc -../sqlalchemy/testing/plugin/bootstrap.py -../sqlalchemy/testing/plugin/plugin_base.py -../sqlalchemy/testing/plugin/pytestplugin.py -../sqlalchemy/testing/profiling.py -../sqlalchemy/testing/provision.py -../sqlalchemy/testing/replay_fixture.py -../sqlalchemy/testing/requirements.py -../sqlalchemy/testing/schema.py -../sqlalchemy/testing/suite/__init__.py -../sqlalchemy/testing/suite/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/testing/suite/__pycache__/test_cte.cpython-37.pyc -../sqlalchemy/testing/suite/__pycache__/test_ddl.cpython-37.pyc -../sqlalchemy/testing/suite/__pycache__/test_dialect.cpython-37.pyc -../sqlalchemy/testing/suite/__pycache__/test_insert.cpython-37.pyc -../sqlalchemy/testing/suite/__pycache__/test_reflection.cpython-37.pyc -../sqlalchemy/testing/suite/__pycache__/test_results.cpython-37.pyc -../sqlalchemy/testing/suite/__pycache__/test_select.cpython-37.pyc -../sqlalchemy/testing/suite/__pycache__/test_sequence.cpython-37.pyc -../sqlalchemy/testing/suite/__pycache__/test_types.cpython-37.pyc -../sqlalchemy/testing/suite/__pycache__/test_update_delete.cpython-37.pyc -../sqlalchemy/testing/suite/test_cte.py -../sqlalchemy/testing/suite/test_ddl.py -../sqlalchemy/testing/suite/test_dialect.py -../sqlalchemy/testing/suite/test_insert.py -../sqlalchemy/testing/suite/test_reflection.py -../sqlalchemy/testing/suite/test_results.py -../sqlalchemy/testing/suite/test_select.py -../sqlalchemy/testing/suite/test_sequence.py -../sqlalchemy/testing/suite/test_types.py -../sqlalchemy/testing/suite/test_update_delete.py -../sqlalchemy/testing/util.py -../sqlalchemy/testing/warnings.py -../sqlalchemy/types.py -../sqlalchemy/util/__init__.py -../sqlalchemy/util/__pycache__/__init__.cpython-37.pyc -../sqlalchemy/util/__pycache__/_collections.cpython-37.pyc -../sqlalchemy/util/__pycache__/compat.cpython-37.pyc -../sqlalchemy/util/__pycache__/deprecations.cpython-37.pyc -../sqlalchemy/util/__pycache__/langhelpers.cpython-37.pyc -../sqlalchemy/util/__pycache__/queue.cpython-37.pyc -../sqlalchemy/util/__pycache__/topological.cpython-37.pyc -../sqlalchemy/util/_collections.py -../sqlalchemy/util/compat.py -../sqlalchemy/util/deprecations.py -../sqlalchemy/util/langhelpers.py -../sqlalchemy/util/queue.py -../sqlalchemy/util/topological.py -PKG-INFO -SOURCES.txt -dependency_links.txt -requires.txt -top_level.txt diff --git a/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/requires.txt b/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/requires.txt deleted file mode 100644 index 7d73cfc..0000000 --- a/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/requires.txt +++ /dev/null @@ -1,30 +0,0 @@ - -[mssql] -pyodbc - -[mssql_pymssql] -pymssql - -[mssql_pyodbc] -pyodbc - -[mysql] -mysqlclient - -[oracle] -cx_oracle - -[postgresql] -psycopg2 - -[postgresql_pg8000] -pg8000 - -[postgresql_psycopg2binary] -psycopg2-binary - -[postgresql_psycopg2cffi] -psycopg2cffi - -[pymysql] -pymysql diff --git a/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/top_level.txt b/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/top_level.txt deleted file mode 100644 index 39fb2be..0000000 --- a/venv/lib/python3.7/site-packages/SQLAlchemy-1.3.11-py3.7.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -sqlalchemy diff --git a/venv/lib/python3.7/site-packages/babel/__init__.py b/venv/lib/python3.7/site-packages/babel/__init__.py deleted file mode 100644 index 1132e6f..0000000 --- a/venv/lib/python3.7/site-packages/babel/__init__.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -""" - babel - ~~~~~ - - Integrated collection of utilities that assist in internationalizing and - localizing applications. - - This package is basically composed of two major parts: - - * tools to build and work with ``gettext`` message catalogs - * a Python interface to the CLDR (Common Locale Data Repository), providing - access to various locale display names, localized number and date - formatting, etc. - - :copyright: (c) 2013-2019 by the Babel Team. - :license: BSD, see LICENSE for more details. -""" - -from babel.core import UnknownLocaleError, Locale, default_locale, \ - negotiate_locale, parse_locale, get_locale_identifier - - -__version__ = '2.7.0' diff --git a/venv/lib/python3.7/site-packages/babel/_compat.py b/venv/lib/python3.7/site-packages/babel/_compat.py deleted file mode 100644 index 11b4d7a..0000000 --- a/venv/lib/python3.7/site-packages/babel/_compat.py +++ /dev/null @@ -1,79 +0,0 @@ -import sys -import array - -PY2 = sys.version_info[0] == 2 - -_identity = lambda x: x - - -if not PY2: - text_type = str - string_types = (str,) - integer_types = (int, ) - - text_to_native = lambda s, enc: s - unichr = chr - - iterkeys = lambda d: iter(d.keys()) - itervalues = lambda d: iter(d.values()) - iteritems = lambda d: iter(d.items()) - - from io import StringIO, BytesIO - import pickle - - izip = zip - imap = map - range_type = range - - cmp = lambda a, b: (a > b) - (a < b) - - array_tobytes = array.array.tobytes - from collections import abc - -else: - text_type = unicode - string_types = (str, unicode) - integer_types = (int, long) - - text_to_native = lambda s, enc: s.encode(enc) - unichr = unichr - - iterkeys = lambda d: d.iterkeys() - itervalues = lambda d: d.itervalues() - iteritems = lambda d: d.iteritems() - - from cStringIO import StringIO as BytesIO - from StringIO import StringIO - import cPickle as pickle - - from itertools import imap - from itertools import izip - range_type = xrange - - cmp = cmp - - array_tobytes = array.array.tostring - import collections as abc - -number_types = integer_types + (float,) - - -def force_text(s, encoding='utf-8', errors='strict'): - if isinstance(s, text_type): - return s - if isinstance(s, bytes): - return s.decode(encoding, errors) - return text_type(s) - - -# -# Since Python 3.3, a fast decimal implementation is already included in the -# standard library. Otherwise use cdecimal when available -# -if sys.version_info[:2] >= (3, 3): - import decimal -else: - try: - import cdecimal as decimal - except ImportError: - import decimal diff --git a/venv/lib/python3.7/site-packages/babel/core.py b/venv/lib/python3.7/site-packages/babel/core.py deleted file mode 100644 index a80807a..0000000 --- a/venv/lib/python3.7/site-packages/babel/core.py +++ /dev/null @@ -1,1133 +0,0 @@ -# -*- coding: utf-8 -*- -""" - babel.core - ~~~~~~~~~~ - - Core locale representation and locale data access. - - :copyright: (c) 2013-2019 by the Babel Team. - :license: BSD, see LICENSE for more details. -""" - -import os - -from babel import localedata -from babel._compat import pickle, string_types -from babel.plural import PluralRule - -__all__ = ['UnknownLocaleError', 'Locale', 'default_locale', 'negotiate_locale', - 'parse_locale'] - - -_global_data = None -_default_plural_rule = PluralRule({}) - - -def _raise_no_data_error(): - raise RuntimeError('The babel data files are not available. ' - 'This usually happens because you are using ' - 'a source checkout from Babel and you did ' - 'not build the data files. Just make sure ' - 'to run "python setup.py import_cldr" before ' - 'installing the library.') - - -def get_global(key): - """Return the dictionary for the given key in the global data. - - The global data is stored in the ``babel/global.dat`` file and contains - information independent of individual locales. - - >>> get_global('zone_aliases')['UTC'] - u'Etc/UTC' - >>> get_global('zone_territories')['Europe/Berlin'] - u'DE' - - The keys available are: - - - ``all_currencies`` - - ``currency_fractions`` - - ``language_aliases`` - - ``likely_subtags`` - - ``parent_exceptions`` - - ``script_aliases`` - - ``territory_aliases`` - - ``territory_currencies`` - - ``territory_languages`` - - ``territory_zones`` - - ``variant_aliases`` - - ``windows_zone_mapping`` - - ``zone_aliases`` - - ``zone_territories`` - - .. note:: The internal structure of the data may change between versions. - - .. versionadded:: 0.9 - - :param key: the data key - """ - global _global_data - if _global_data is None: - dirname = os.path.join(os.path.dirname(__file__)) - filename = os.path.join(dirname, 'global.dat') - if not os.path.isfile(filename): - _raise_no_data_error() - with open(filename, 'rb') as fileobj: - _global_data = pickle.load(fileobj) - return _global_data.get(key, {}) - - -LOCALE_ALIASES = { - 'ar': 'ar_SY', 'bg': 'bg_BG', 'bs': 'bs_BA', 'ca': 'ca_ES', 'cs': 'cs_CZ', - 'da': 'da_DK', 'de': 'de_DE', 'el': 'el_GR', 'en': 'en_US', 'es': 'es_ES', - 'et': 'et_EE', 'fa': 'fa_IR', 'fi': 'fi_FI', 'fr': 'fr_FR', 'gl': 'gl_ES', - 'he': 'he_IL', 'hu': 'hu_HU', 'id': 'id_ID', 'is': 'is_IS', 'it': 'it_IT', - 'ja': 'ja_JP', 'km': 'km_KH', 'ko': 'ko_KR', 'lt': 'lt_LT', 'lv': 'lv_LV', - 'mk': 'mk_MK', 'nl': 'nl_NL', 'nn': 'nn_NO', 'no': 'nb_NO', 'pl': 'pl_PL', - 'pt': 'pt_PT', 'ro': 'ro_RO', 'ru': 'ru_RU', 'sk': 'sk_SK', 'sl': 'sl_SI', - 'sv': 'sv_SE', 'th': 'th_TH', 'tr': 'tr_TR', 'uk': 'uk_UA' -} - - -class UnknownLocaleError(Exception): - """Exception thrown when a locale is requested for which no locale data - is available. - """ - - def __init__(self, identifier): - """Create the exception. - - :param identifier: the identifier string of the unsupported locale - """ - Exception.__init__(self, 'unknown locale %r' % identifier) - - #: The identifier of the locale that could not be found. - self.identifier = identifier - - -class Locale(object): - """Representation of a specific locale. - - >>> locale = Locale('en', 'US') - >>> repr(locale) - "Locale('en', territory='US')" - >>> locale.display_name - u'English (United States)' - - A `Locale` object can also be instantiated from a raw locale string: - - >>> locale = Locale.parse('en-US', sep='-') - >>> repr(locale) - "Locale('en', territory='US')" - - `Locale` objects provide access to a collection of locale data, such as - territory and language names, number and date format patterns, and more: - - >>> locale.number_symbols['decimal'] - u'.' - - If a locale is requested for which no locale data is available, an - `UnknownLocaleError` is raised: - - >>> Locale.parse('en_XX') - Traceback (most recent call last): - ... - UnknownLocaleError: unknown locale 'en_XX' - - For more information see :rfc:`3066`. - """ - - def __init__(self, language, territory=None, script=None, variant=None): - """Initialize the locale object from the given identifier components. - - >>> locale = Locale('en', 'US') - >>> locale.language - 'en' - >>> locale.territory - 'US' - - :param language: the language code - :param territory: the territory (country or region) code - :param script: the script code - :param variant: the variant code - :raise `UnknownLocaleError`: if no locale data is available for the - requested locale - """ - #: the language code - self.language = language - #: the territory (country or region) code - self.territory = territory - #: the script code - self.script = script - #: the variant code - self.variant = variant - self.__data = None - - identifier = str(self) - if not localedata.exists(identifier): - raise UnknownLocaleError(identifier) - - @classmethod - def default(cls, category=None, aliases=LOCALE_ALIASES): - """Return the system default locale for the specified category. - - >>> for name in ['LANGUAGE', 'LC_ALL', 'LC_CTYPE', 'LC_MESSAGES']: - ... os.environ[name] = '' - >>> os.environ['LANG'] = 'fr_FR.UTF-8' - >>> Locale.default('LC_MESSAGES') - Locale('fr', territory='FR') - - The following fallbacks to the variable are always considered: - - - ``LANGUAGE`` - - ``LC_ALL`` - - ``LC_CTYPE`` - - ``LANG`` - - :param category: one of the ``LC_XXX`` environment variable names - :param aliases: a dictionary of aliases for locale identifiers - """ - # XXX: use likely subtag expansion here instead of the - # aliases dictionary. - locale_string = default_locale(category, aliases=aliases) - return cls.parse(locale_string) - - @classmethod - def negotiate(cls, preferred, available, sep='_', aliases=LOCALE_ALIASES): - """Find the best match between available and requested locale strings. - - >>> Locale.negotiate(['de_DE', 'en_US'], ['de_DE', 'de_AT']) - Locale('de', territory='DE') - >>> Locale.negotiate(['de_DE', 'en_US'], ['en', 'de']) - Locale('de') - >>> Locale.negotiate(['de_DE', 'de'], ['en_US']) - - You can specify the character used in the locale identifiers to separate - the differnet components. This separator is applied to both lists. Also, - case is ignored in the comparison: - - >>> Locale.negotiate(['de-DE', 'de'], ['en-us', 'de-de'], sep='-') - Locale('de', territory='DE') - - :param preferred: the list of locale identifers preferred by the user - :param available: the list of locale identifiers available - :param aliases: a dictionary of aliases for locale identifiers - """ - identifier = negotiate_locale(preferred, available, sep=sep, - aliases=aliases) - if identifier: - return Locale.parse(identifier, sep=sep) - - @classmethod - def parse(cls, identifier, sep='_', resolve_likely_subtags=True): - """Create a `Locale` instance for the given locale identifier. - - >>> l = Locale.parse('de-DE', sep='-') - >>> l.display_name - u'Deutsch (Deutschland)' - - If the `identifier` parameter is not a string, but actually a `Locale` - object, that object is returned: - - >>> Locale.parse(l) - Locale('de', territory='DE') - - This also can perform resolving of likely subtags which it does - by default. This is for instance useful to figure out the most - likely locale for a territory you can use ``'und'`` as the - language tag: - - >>> Locale.parse('und_AT') - Locale('de', territory='AT') - - :param identifier: the locale identifier string - :param sep: optional component separator - :param resolve_likely_subtags: if this is specified then a locale will - have its likely subtag resolved if the - locale otherwise does not exist. For - instance ``zh_TW`` by itself is not a - locale that exists but Babel can - automatically expand it to the full - form of ``zh_hant_TW``. Note that this - expansion is only taking place if no - locale exists otherwise. For instance - there is a locale ``en`` that can exist - by itself. - :raise `ValueError`: if the string does not appear to be a valid locale - identifier - :raise `UnknownLocaleError`: if no locale data is available for the - requested locale - """ - if identifier is None: - return None - elif isinstance(identifier, Locale): - return identifier - elif not isinstance(identifier, string_types): - raise TypeError('Unexpected value for identifier: %r' % (identifier,)) - - parts = parse_locale(identifier, sep=sep) - input_id = get_locale_identifier(parts) - - def _try_load(parts): - try: - return cls(*parts) - except UnknownLocaleError: - return None - - def _try_load_reducing(parts): - # Success on first hit, return it. - locale = _try_load(parts) - if locale is not None: - return locale - - # Now try without script and variant - locale = _try_load(parts[:2]) - if locale is not None: - return locale - - locale = _try_load(parts) - if locale is not None: - return locale - if not resolve_likely_subtags: - raise UnknownLocaleError(input_id) - - # From here onwards is some very bad likely subtag resolving. This - # whole logic is not entirely correct but good enough (tm) for the - # time being. This has been added so that zh_TW does not cause - # errors for people when they upgrade. Later we should properly - # implement ICU like fuzzy locale objects and provide a way to - # maximize and minimize locale tags. - - language, territory, script, variant = parts - language = get_global('language_aliases').get(language, language) - territory = get_global('territory_aliases').get(territory, (territory,))[0] - script = get_global('script_aliases').get(script, script) - variant = get_global('variant_aliases').get(variant, variant) - - if territory == 'ZZ': - territory = None - if script == 'Zzzz': - script = None - - parts = language, territory, script, variant - - # First match: try the whole identifier - new_id = get_locale_identifier(parts) - likely_subtag = get_global('likely_subtags').get(new_id) - if likely_subtag is not None: - locale = _try_load_reducing(parse_locale(likely_subtag)) - if locale is not None: - return locale - - # If we did not find anything so far, try again with a - # simplified identifier that is just the language - likely_subtag = get_global('likely_subtags').get(language) - if likely_subtag is not None: - language2, _, script2, variant2 = parse_locale(likely_subtag) - locale = _try_load_reducing((language2, territory, script2, variant2)) - if locale is not None: - return locale - - raise UnknownLocaleError(input_id) - - def __eq__(self, other): - for key in ('language', 'territory', 'script', 'variant'): - if not hasattr(other, key): - return False - return (self.language == other.language) and \ - (self.territory == other.territory) and \ - (self.script == other.script) and \ - (self.variant == other.variant) - - def __ne__(self, other): - return not self.__eq__(other) - - def __hash__(self): - return hash((self.language, self.territory, self.script, self.variant)) - - def __repr__(self): - parameters = [''] - for key in ('territory', 'script', 'variant'): - value = getattr(self, key) - if value is not None: - parameters.append('%s=%r' % (key, value)) - parameter_string = '%r' % self.language + ', '.join(parameters) - return 'Locale(%s)' % parameter_string - - def __str__(self): - return get_locale_identifier((self.language, self.territory, - self.script, self.variant)) - - @property - def _data(self): - if self.__data is None: - self.__data = localedata.LocaleDataDict(localedata.load(str(self))) - return self.__data - - def get_display_name(self, locale=None): - """Return the display name of the locale using the given locale. - - The display name will include the language, territory, script, and - variant, if those are specified. - - >>> Locale('zh', 'CN', script='Hans').get_display_name('en') - u'Chinese (Simplified, China)' - - :param locale: the locale to use - """ - if locale is None: - locale = self - locale = Locale.parse(locale) - retval = locale.languages.get(self.language) - if retval and (self.territory or self.script or self.variant): - details = [] - if self.script: - details.append(locale.scripts.get(self.script)) - if self.territory: - details.append(locale.territories.get(self.territory)) - if self.variant: - details.append(locale.variants.get(self.variant)) - details = filter(None, details) - if details: - retval += ' (%s)' % u', '.join(details) - return retval - - display_name = property(get_display_name, doc="""\ - The localized display name of the locale. - - >>> Locale('en').display_name - u'English' - >>> Locale('en', 'US').display_name - u'English (United States)' - >>> Locale('sv').display_name - u'svenska' - - :type: `unicode` - """) - - def get_language_name(self, locale=None): - """Return the language of this locale in the given locale. - - >>> Locale('zh', 'CN', script='Hans').get_language_name('de') - u'Chinesisch' - - .. versionadded:: 1.0 - - :param locale: the locale to use - """ - if locale is None: - locale = self - locale = Locale.parse(locale) - return locale.languages.get(self.language) - - language_name = property(get_language_name, doc="""\ - The localized language name of the locale. - - >>> Locale('en', 'US').language_name - u'English' - """) - - def get_territory_name(self, locale=None): - """Return the territory name in the given locale.""" - if locale is None: - locale = self - locale = Locale.parse(locale) - return locale.territories.get(self.territory) - - territory_name = property(get_territory_name, doc="""\ - The localized territory name of the locale if available. - - >>> Locale('de', 'DE').territory_name - u'Deutschland' - """) - - def get_script_name(self, locale=None): - """Return the script name in the given locale.""" - if locale is None: - locale = self - locale = Locale.parse(locale) - return locale.scripts.get(self.script) - - script_name = property(get_script_name, doc="""\ - The localized script name of the locale if available. - - >>> Locale('sr', 'ME', script='Latn').script_name - u'latinica' - """) - - @property - def english_name(self): - """The english display name of the locale. - - >>> Locale('de').english_name - u'German' - >>> Locale('de', 'DE').english_name - u'German (Germany)' - - :type: `unicode`""" - return self.get_display_name(Locale('en')) - - # { General Locale Display Names - - @property - def languages(self): - """Mapping of language codes to translated language names. - - >>> Locale('de', 'DE').languages['ja'] - u'Japanisch' - - See `ISO 639 `_ for - more information. - """ - return self._data['languages'] - - @property - def scripts(self): - """Mapping of script codes to translated script names. - - >>> Locale('en', 'US').scripts['Hira'] - u'Hiragana' - - See `ISO 15924 `_ - for more information. - """ - return self._data['scripts'] - - @property - def territories(self): - """Mapping of script codes to translated script names. - - >>> Locale('es', 'CO').territories['DE'] - u'Alemania' - - See `ISO 3166 `_ - for more information. - """ - return self._data['territories'] - - @property - def variants(self): - """Mapping of script codes to translated script names. - - >>> Locale('de', 'DE').variants['1901'] - u'Alte deutsche Rechtschreibung' - """ - return self._data['variants'] - - # { Number Formatting - - @property - def currencies(self): - """Mapping of currency codes to translated currency names. This - only returns the generic form of the currency name, not the count - specific one. If an actual number is requested use the - :func:`babel.numbers.get_currency_name` function. - - >>> Locale('en').currencies['COP'] - u'Colombian Peso' - >>> Locale('de', 'DE').currencies['COP'] - u'Kolumbianischer Peso' - """ - return self._data['currency_names'] - - @property - def currency_symbols(self): - """Mapping of currency codes to symbols. - - >>> Locale('en', 'US').currency_symbols['USD'] - u'$' - >>> Locale('es', 'CO').currency_symbols['USD'] - u'US$' - """ - return self._data['currency_symbols'] - - @property - def number_symbols(self): - """Symbols used in number formatting. - - .. note:: The format of the value returned may change between - Babel versions. - - >>> Locale('fr', 'FR').number_symbols['decimal'] - u',' - """ - return self._data['number_symbols'] - - @property - def decimal_formats(self): - """Locale patterns for decimal number formatting. - - .. note:: The format of the value returned may change between - Babel versions. - - >>> Locale('en', 'US').decimal_formats[None] - - """ - return self._data['decimal_formats'] - - @property - def currency_formats(self): - """Locale patterns for currency number formatting. - - .. note:: The format of the value returned may change between - Babel versions. - - >>> Locale('en', 'US').currency_formats['standard'] - - >>> Locale('en', 'US').currency_formats['accounting'] - - """ - return self._data['currency_formats'] - - @property - def percent_formats(self): - """Locale patterns for percent number formatting. - - .. note:: The format of the value returned may change between - Babel versions. - - >>> Locale('en', 'US').percent_formats[None] - - """ - return self._data['percent_formats'] - - @property - def scientific_formats(self): - """Locale patterns for scientific number formatting. - - .. note:: The format of the value returned may change between - Babel versions. - - >>> Locale('en', 'US').scientific_formats[None] - - """ - return self._data['scientific_formats'] - - # { Calendar Information and Date Formatting - - @property - def periods(self): - """Locale display names for day periods (AM/PM). - - >>> Locale('en', 'US').periods['am'] - u'AM' - """ - try: - return self._data['day_periods']['stand-alone']['wide'] - except KeyError: - return {} - - @property - def day_periods(self): - """Locale display names for various day periods (not necessarily only AM/PM). - - These are not meant to be used without the relevant `day_period_rules`. - """ - return self._data['day_periods'] - - @property - def day_period_rules(self): - """Day period rules for the locale. Used by `get_period_id`. - """ - return self._data.get('day_period_rules', {}) - - @property - def days(self): - """Locale display names for weekdays. - - >>> Locale('de', 'DE').days['format']['wide'][3] - u'Donnerstag' - """ - return self._data['days'] - - @property - def months(self): - """Locale display names for months. - - >>> Locale('de', 'DE').months['format']['wide'][10] - u'Oktober' - """ - return self._data['months'] - - @property - def quarters(self): - """Locale display names for quarters. - - >>> Locale('de', 'DE').quarters['format']['wide'][1] - u'1. Quartal' - """ - return self._data['quarters'] - - @property - def eras(self): - """Locale display names for eras. - - .. note:: The format of the value returned may change between - Babel versions. - - >>> Locale('en', 'US').eras['wide'][1] - u'Anno Domini' - >>> Locale('en', 'US').eras['abbreviated'][0] - u'BC' - """ - return self._data['eras'] - - @property - def time_zones(self): - """Locale display names for time zones. - - .. note:: The format of the value returned may change between - Babel versions. - - >>> Locale('en', 'US').time_zones['Europe/London']['long']['daylight'] - u'British Summer Time' - >>> Locale('en', 'US').time_zones['America/St_Johns']['city'] - u'St. John\u2019s' - """ - return self._data['time_zones'] - - @property - def meta_zones(self): - """Locale display names for meta time zones. - - Meta time zones are basically groups of different Olson time zones that - have the same GMT offset and daylight savings time. - - .. note:: The format of the value returned may change between - Babel versions. - - >>> Locale('en', 'US').meta_zones['Europe_Central']['long']['daylight'] - u'Central European Summer Time' - - .. versionadded:: 0.9 - """ - return self._data['meta_zones'] - - @property - def zone_formats(self): - """Patterns related to the formatting of time zones. - - .. note:: The format of the value returned may change between - Babel versions. - - >>> Locale('en', 'US').zone_formats['fallback'] - u'%(1)s (%(0)s)' - >>> Locale('pt', 'BR').zone_formats['region'] - u'Hor\\xe1rio %s' - - .. versionadded:: 0.9 - """ - return self._data['zone_formats'] - - @property - def first_week_day(self): - """The first day of a week, with 0 being Monday. - - >>> Locale('de', 'DE').first_week_day - 0 - >>> Locale('en', 'US').first_week_day - 6 - """ - return self._data['week_data']['first_day'] - - @property - def weekend_start(self): - """The day the weekend starts, with 0 being Monday. - - >>> Locale('de', 'DE').weekend_start - 5 - """ - return self._data['week_data']['weekend_start'] - - @property - def weekend_end(self): - """The day the weekend ends, with 0 being Monday. - - >>> Locale('de', 'DE').weekend_end - 6 - """ - return self._data['week_data']['weekend_end'] - - @property - def min_week_days(self): - """The minimum number of days in a week so that the week is counted as - the first week of a year or month. - - >>> Locale('de', 'DE').min_week_days - 4 - """ - return self._data['week_data']['min_days'] - - @property - def date_formats(self): - """Locale patterns for date formatting. - - .. note:: The format of the value returned may change between - Babel versions. - - >>> Locale('en', 'US').date_formats['short'] - - >>> Locale('fr', 'FR').date_formats['long'] - - """ - return self._data['date_formats'] - - @property - def time_formats(self): - """Locale patterns for time formatting. - - .. note:: The format of the value returned may change between - Babel versions. - - >>> Locale('en', 'US').time_formats['short'] - - >>> Locale('fr', 'FR').time_formats['long'] - - """ - return self._data['time_formats'] - - @property - def datetime_formats(self): - """Locale patterns for datetime formatting. - - .. note:: The format of the value returned may change between - Babel versions. - - >>> Locale('en').datetime_formats['full'] - u"{1} 'at' {0}" - >>> Locale('th').datetime_formats['medium'] - u'{1} {0}' - """ - return self._data['datetime_formats'] - - @property - def datetime_skeletons(self): - """Locale patterns for formatting parts of a datetime. - - >>> Locale('en').datetime_skeletons['MEd'] - - >>> Locale('fr').datetime_skeletons['MEd'] - - >>> Locale('fr').datetime_skeletons['H'] - - """ - return self._data['datetime_skeletons'] - - @property - def interval_formats(self): - """Locale patterns for interval formatting. - - .. note:: The format of the value returned may change between - Babel versions. - - How to format date intervals in Finnish when the day is the - smallest changing component: - - >>> Locale('fi_FI').interval_formats['MEd']['d'] - [u'E d. \u2013 ', u'E d.M.'] - - .. seealso:: - - The primary API to use this data is :py:func:`babel.dates.format_interval`. - - - :rtype: dict[str, dict[str, list[str]]] - """ - return self._data['interval_formats'] - - @property - def plural_form(self): - """Plural rules for the locale. - - >>> Locale('en').plural_form(1) - 'one' - >>> Locale('en').plural_form(0) - 'other' - >>> Locale('fr').plural_form(0) - 'one' - >>> Locale('ru').plural_form(100) - 'many' - """ - return self._data.get('plural_form', _default_plural_rule) - - @property - def list_patterns(self): - """Patterns for generating lists - - .. note:: The format of the value returned may change between - Babel versions. - - >>> Locale('en').list_patterns['standard']['start'] - u'{0}, {1}' - >>> Locale('en').list_patterns['standard']['end'] - u'{0}, and {1}' - >>> Locale('en_GB').list_patterns['standard']['end'] - u'{0} and {1}' - """ - return self._data['list_patterns'] - - @property - def ordinal_form(self): - """Plural rules for the locale. - - >>> Locale('en').ordinal_form(1) - 'one' - >>> Locale('en').ordinal_form(2) - 'two' - >>> Locale('en').ordinal_form(3) - 'few' - >>> Locale('fr').ordinal_form(2) - 'other' - >>> Locale('ru').ordinal_form(100) - 'other' - """ - return self._data.get('ordinal_form', _default_plural_rule) - - @property - def measurement_systems(self): - """Localized names for various measurement systems. - - >>> Locale('fr', 'FR').measurement_systems['US'] - u'am\\xe9ricain' - >>> Locale('en', 'US').measurement_systems['US'] - u'US' - - """ - return self._data['measurement_systems'] - - @property - def character_order(self): - """The text direction for the language. - - >>> Locale('de', 'DE').character_order - 'left-to-right' - >>> Locale('ar', 'SA').character_order - 'right-to-left' - """ - return self._data['character_order'] - - @property - def text_direction(self): - """The text direction for the language in CSS short-hand form. - - >>> Locale('de', 'DE').text_direction - 'ltr' - >>> Locale('ar', 'SA').text_direction - 'rtl' - """ - return ''.join(word[0] for word in self.character_order.split('-')) - - @property - def unit_display_names(self): - """Display names for units of measurement. - - .. seealso:: - - You may want to use :py:func:`babel.units.get_unit_name` instead. - - .. note:: The format of the value returned may change between - Babel versions. - - """ - return self._data['unit_display_names'] - - -def default_locale(category=None, aliases=LOCALE_ALIASES): - """Returns the system default locale for a given category, based on - environment variables. - - >>> for name in ['LANGUAGE', 'LC_ALL', 'LC_CTYPE']: - ... os.environ[name] = '' - >>> os.environ['LANG'] = 'fr_FR.UTF-8' - >>> default_locale('LC_MESSAGES') - 'fr_FR' - - The "C" or "POSIX" pseudo-locales are treated as aliases for the - "en_US_POSIX" locale: - - >>> os.environ['LC_MESSAGES'] = 'POSIX' - >>> default_locale('LC_MESSAGES') - 'en_US_POSIX' - - The following fallbacks to the variable are always considered: - - - ``LANGUAGE`` - - ``LC_ALL`` - - ``LC_CTYPE`` - - ``LANG`` - - :param category: one of the ``LC_XXX`` environment variable names - :param aliases: a dictionary of aliases for locale identifiers - """ - varnames = (category, 'LANGUAGE', 'LC_ALL', 'LC_CTYPE', 'LANG') - for name in filter(None, varnames): - locale = os.getenv(name) - if locale: - if name == 'LANGUAGE' and ':' in locale: - # the LANGUAGE variable may contain a colon-separated list of - # language codes; we just pick the language on the list - locale = locale.split(':')[0] - if locale.split('.')[0] in ('C', 'POSIX'): - locale = 'en_US_POSIX' - elif aliases and locale in aliases: - locale = aliases[locale] - try: - return get_locale_identifier(parse_locale(locale)) - except ValueError: - pass - - -def negotiate_locale(preferred, available, sep='_', aliases=LOCALE_ALIASES): - """Find the best match between available and requested locale strings. - - >>> negotiate_locale(['de_DE', 'en_US'], ['de_DE', 'de_AT']) - 'de_DE' - >>> negotiate_locale(['de_DE', 'en_US'], ['en', 'de']) - 'de' - - Case is ignored by the algorithm, the result uses the case of the preferred - locale identifier: - - >>> negotiate_locale(['de_DE', 'en_US'], ['de_de', 'de_at']) - 'de_DE' - - >>> negotiate_locale(['de_DE', 'en_US'], ['de_de', 'de_at']) - 'de_DE' - - By default, some web browsers unfortunately do not include the territory - in the locale identifier for many locales, and some don't even allow the - user to easily add the territory. So while you may prefer using qualified - locale identifiers in your web-application, they would not normally match - the language-only locale sent by such browsers. To workaround that, this - function uses a default mapping of commonly used langauge-only locale - identifiers to identifiers including the territory: - - >>> negotiate_locale(['ja', 'en_US'], ['ja_JP', 'en_US']) - 'ja_JP' - - Some browsers even use an incorrect or outdated language code, such as "no" - for Norwegian, where the correct locale identifier would actually be "nb_NO" - (Bokmål) or "nn_NO" (Nynorsk). The aliases are intended to take care of - such cases, too: - - >>> negotiate_locale(['no', 'sv'], ['nb_NO', 'sv_SE']) - 'nb_NO' - - You can override this default mapping by passing a different `aliases` - dictionary to this function, or you can bypass the behavior althogher by - setting the `aliases` parameter to `None`. - - :param preferred: the list of locale strings preferred by the user - :param available: the list of locale strings available - :param sep: character that separates the different parts of the locale - strings - :param aliases: a dictionary of aliases for locale identifiers - """ - available = [a.lower() for a in available if a] - for locale in preferred: - ll = locale.lower() - if ll in available: - return locale - if aliases: - alias = aliases.get(ll) - if alias: - alias = alias.replace('_', sep) - if alias.lower() in available: - return alias - parts = locale.split(sep) - if len(parts) > 1 and parts[0].lower() in available: - return parts[0] - return None - - -def parse_locale(identifier, sep='_'): - """Parse a locale identifier into a tuple of the form ``(language, - territory, script, variant)``. - - >>> parse_locale('zh_CN') - ('zh', 'CN', None, None) - >>> parse_locale('zh_Hans_CN') - ('zh', 'CN', 'Hans', None) - - The default component separator is "_", but a different separator can be - specified using the `sep` parameter: - - >>> parse_locale('zh-CN', sep='-') - ('zh', 'CN', None, None) - - If the identifier cannot be parsed into a locale, a `ValueError` exception - is raised: - - >>> parse_locale('not_a_LOCALE_String') - Traceback (most recent call last): - ... - ValueError: 'not_a_LOCALE_String' is not a valid locale identifier - - Encoding information and locale modifiers are removed from the identifier: - - >>> parse_locale('it_IT@euro') - ('it', 'IT', None, None) - >>> parse_locale('en_US.UTF-8') - ('en', 'US', None, None) - >>> parse_locale('de_DE.iso885915@euro') - ('de', 'DE', None, None) - - See :rfc:`4646` for more information. - - :param identifier: the locale identifier string - :param sep: character that separates the different components of the locale - identifier - :raise `ValueError`: if the string does not appear to be a valid locale - identifier - """ - if '.' in identifier: - # this is probably the charset/encoding, which we don't care about - identifier = identifier.split('.', 1)[0] - if '@' in identifier: - # this is a locale modifier such as @euro, which we don't care about - # either - identifier = identifier.split('@', 1)[0] - - parts = identifier.split(sep) - lang = parts.pop(0).lower() - if not lang.isalpha(): - raise ValueError('expected only letters, got %r' % lang) - - script = territory = variant = None - if parts: - if len(parts[0]) == 4 and parts[0].isalpha(): - script = parts.pop(0).title() - - if parts: - if len(parts[0]) == 2 and parts[0].isalpha(): - territory = parts.pop(0).upper() - elif len(parts[0]) == 3 and parts[0].isdigit(): - territory = parts.pop(0) - - if parts: - if len(parts[0]) == 4 and parts[0][0].isdigit() or \ - len(parts[0]) >= 5 and parts[0][0].isalpha(): - variant = parts.pop() - - if parts: - raise ValueError('%r is not a valid locale identifier' % identifier) - - return lang, territory, script, variant - - -def get_locale_identifier(tup, sep='_'): - """The reverse of :func:`parse_locale`. It creates a locale identifier out - of a ``(language, territory, script, variant)`` tuple. Items can be set to - ``None`` and trailing ``None``\\s can also be left out of the tuple. - - >>> get_locale_identifier(('de', 'DE', None, '1999')) - 'de_DE_1999' - - .. versionadded:: 1.0 - - :param tup: the tuple as returned by :func:`parse_locale`. - :param sep: the separator for the identifier. - """ - tup = tuple(tup[:4]) - lang, territory, script, variant = tup + (None,) * (4 - len(tup)) - return sep.join(filter(None, (lang, script, territory, variant))) diff --git a/venv/lib/python3.7/site-packages/babel/dates.py b/venv/lib/python3.7/site-packages/babel/dates.py deleted file mode 100644 index f1bd66f..0000000 --- a/venv/lib/python3.7/site-packages/babel/dates.py +++ /dev/null @@ -1,1788 +0,0 @@ -# -*- coding: utf-8 -*- -""" - babel.dates - ~~~~~~~~~~~ - - Locale dependent formatting and parsing of dates and times. - - The default locale for the functions in this module is determined by the - following environment variables, in that order: - - * ``LC_TIME``, - * ``LC_ALL``, and - * ``LANG`` - - :copyright: (c) 2013-2019 by the Babel Team. - :license: BSD, see LICENSE for more details. -""" - -from __future__ import division - -import re -import warnings -import pytz as _pytz - -from datetime import date, datetime, time, timedelta -from bisect import bisect_right - -from babel.core import default_locale, get_global, Locale -from babel.util import UTC, LOCALTZ -from babel._compat import string_types, integer_types, number_types, PY2 - -# "If a given short metazone form is known NOT to be understood in a given -# locale and the parent locale has this value such that it would normally -# be inherited, the inheritance of this value can be explicitly disabled by -# use of the 'no inheritance marker' as the value, which is 3 simultaneous [sic] -# empty set characters ( U+2205 )." -# - https://www.unicode.org/reports/tr35/tr35-dates.html#Metazone_Names - -NO_INHERITANCE_MARKER = u'\u2205\u2205\u2205' - - -LC_TIME = default_locale('LC_TIME') - -# Aliases for use in scopes where the modules are shadowed by local variables -date_ = date -datetime_ = datetime -time_ = time - - -def _get_dt_and_tzinfo(dt_or_tzinfo): - """ - Parse a `dt_or_tzinfo` value into a datetime and a tzinfo. - - See the docs for this function's callers for semantics. - - :rtype: tuple[datetime, tzinfo] - """ - if dt_or_tzinfo is None: - dt = datetime.now() - tzinfo = LOCALTZ - elif isinstance(dt_or_tzinfo, string_types): - dt = None - tzinfo = get_timezone(dt_or_tzinfo) - elif isinstance(dt_or_tzinfo, integer_types): - dt = None - tzinfo = UTC - elif isinstance(dt_or_tzinfo, (datetime, time)): - dt = _get_datetime(dt_or_tzinfo) - if dt.tzinfo is not None: - tzinfo = dt.tzinfo - else: - tzinfo = UTC - else: - dt = None - tzinfo = dt_or_tzinfo - return dt, tzinfo - - -def _get_datetime(instant): - """ - Get a datetime out of an "instant" (date, time, datetime, number). - - .. warning:: The return values of this function may depend on the system clock. - - If the instant is None, the current moment is used. - If the instant is a time, it's augmented with today's date. - - Dates are converted to naive datetimes with midnight as the time component. - - >>> _get_datetime(date(2015, 1, 1)) - datetime.datetime(2015, 1, 1, 0, 0) - - UNIX timestamps are converted to datetimes. - - >>> _get_datetime(1400000000) - datetime.datetime(2014, 5, 13, 16, 53, 20) - - Other values are passed through as-is. - - >>> x = datetime(2015, 1, 1) - >>> _get_datetime(x) is x - True - - :param instant: date, time, datetime, integer, float or None - :type instant: date|time|datetime|int|float|None - :return: a datetime - :rtype: datetime - """ - if instant is None: - return datetime_.utcnow() - elif isinstance(instant, integer_types) or isinstance(instant, float): - return datetime_.utcfromtimestamp(instant) - elif isinstance(instant, time): - return datetime_.combine(date.today(), instant) - elif isinstance(instant, date) and not isinstance(instant, datetime): - return datetime_.combine(instant, time()) - # TODO (3.x): Add an assertion/type check for this fallthrough branch: - return instant - - -def _ensure_datetime_tzinfo(datetime, tzinfo=None): - """ - Ensure the datetime passed has an attached tzinfo. - - If the datetime is tz-naive to begin with, UTC is attached. - - If a tzinfo is passed in, the datetime is normalized to that timezone. - - >>> _ensure_datetime_tzinfo(datetime(2015, 1, 1)).tzinfo.zone - 'UTC' - - >>> tz = get_timezone("Europe/Stockholm") - >>> _ensure_datetime_tzinfo(datetime(2015, 1, 1, 13, 15, tzinfo=UTC), tzinfo=tz).hour - 14 - - :param datetime: Datetime to augment. - :param tzinfo: Optional tznfo. - :return: datetime with tzinfo - :rtype: datetime - """ - if datetime.tzinfo is None: - datetime = datetime.replace(tzinfo=UTC) - if tzinfo is not None: - datetime = datetime.astimezone(get_timezone(tzinfo)) - if hasattr(tzinfo, 'normalize'): # pytz - datetime = tzinfo.normalize(datetime) - return datetime - - -def _get_time(time, tzinfo=None): - """ - Get a timezoned time from a given instant. - - .. warning:: The return values of this function may depend on the system clock. - - :param time: time, datetime or None - :rtype: time - """ - if time is None: - time = datetime.utcnow() - elif isinstance(time, number_types): - time = datetime.utcfromtimestamp(time) - if time.tzinfo is None: - time = time.replace(tzinfo=UTC) - if isinstance(time, datetime): - if tzinfo is not None: - time = time.astimezone(tzinfo) - if hasattr(tzinfo, 'normalize'): # pytz - time = tzinfo.normalize(time) - time = time.timetz() - elif tzinfo is not None: - time = time.replace(tzinfo=tzinfo) - return time - - -def get_timezone(zone=None): - """Looks up a timezone by name and returns it. The timezone object - returned comes from ``pytz`` and corresponds to the `tzinfo` interface and - can be used with all of the functions of Babel that operate with dates. - - If a timezone is not known a :exc:`LookupError` is raised. If `zone` - is ``None`` a local zone object is returned. - - :param zone: the name of the timezone to look up. If a timezone object - itself is passed in, mit's returned unchanged. - """ - if zone is None: - return LOCALTZ - if not isinstance(zone, string_types): - return zone - try: - return _pytz.timezone(zone) - except _pytz.UnknownTimeZoneError: - raise LookupError('Unknown timezone %s' % zone) - - -def get_next_timezone_transition(zone=None, dt=None): - """Given a timezone it will return a :class:`TimezoneTransition` object - that holds the information about the next timezone transition that's going - to happen. For instance this can be used to detect when the next DST - change is going to happen and how it looks like. - - The transition is calculated relative to the given datetime object. The - next transition that follows the date is used. If a transition cannot - be found the return value will be `None`. - - Transition information can only be provided for timezones returned by - the :func:`get_timezone` function. - - :param zone: the timezone for which the transition should be looked up. - If not provided the local timezone is used. - :param dt: the date after which the next transition should be found. - If not given the current time is assumed. - """ - zone = get_timezone(zone) - dt = _get_datetime(dt).replace(tzinfo=None) - - if not hasattr(zone, '_utc_transition_times'): - raise TypeError('Given timezone does not have UTC transition ' - 'times. This can happen because the operating ' - 'system fallback local timezone is used or a ' - 'custom timezone object') - - try: - idx = max(0, bisect_right(zone._utc_transition_times, dt)) - old_trans = zone._transition_info[idx - 1] - new_trans = zone._transition_info[idx] - old_tz = zone._tzinfos[old_trans] - new_tz = zone._tzinfos[new_trans] - except (LookupError, ValueError): - return None - - return TimezoneTransition( - activates=zone._utc_transition_times[idx], - from_tzinfo=old_tz, - to_tzinfo=new_tz, - reference_date=dt - ) - - -class TimezoneTransition(object): - """A helper object that represents the return value from - :func:`get_next_timezone_transition`. - """ - - def __init__(self, activates, from_tzinfo, to_tzinfo, reference_date=None): - #: the time of the activation of the timezone transition in UTC. - self.activates = activates - #: the timezone from where the transition starts. - self.from_tzinfo = from_tzinfo - #: the timezone for after the transition. - self.to_tzinfo = to_tzinfo - #: the reference date that was provided. This is the `dt` parameter - #: to the :func:`get_next_timezone_transition`. - self.reference_date = reference_date - - @property - def from_tz(self): - """The name of the timezone before the transition.""" - return self.from_tzinfo._tzname - - @property - def to_tz(self): - """The name of the timezone after the transition.""" - return self.to_tzinfo._tzname - - @property - def from_offset(self): - """The UTC offset in seconds before the transition.""" - return int(self.from_tzinfo._utcoffset.total_seconds()) - - @property - def to_offset(self): - """The UTC offset in seconds after the transition.""" - return int(self.to_tzinfo._utcoffset.total_seconds()) - - def __repr__(self): - return ' %s (%s)>' % ( - self.from_tz, - self.to_tz, - self.activates, - ) - - -def get_period_names(width='wide', context='stand-alone', locale=LC_TIME): - """Return the names for day periods (AM/PM) used by the locale. - - >>> get_period_names(locale='en_US')['am'] - u'AM' - - :param width: the width to use, one of "abbreviated", "narrow", or "wide" - :param context: the context, either "format" or "stand-alone" - :param locale: the `Locale` object, or a locale string - """ - return Locale.parse(locale).day_periods[context][width] - - -def get_day_names(width='wide', context='format', locale=LC_TIME): - """Return the day names used by the locale for the specified format. - - >>> get_day_names('wide', locale='en_US')[1] - u'Tuesday' - >>> get_day_names('short', locale='en_US')[1] - u'Tu' - >>> get_day_names('abbreviated', locale='es')[1] - u'mar.' - >>> get_day_names('narrow', context='stand-alone', locale='de_DE')[1] - u'D' - - :param width: the width to use, one of "wide", "abbreviated", "short" or "narrow" - :param context: the context, either "format" or "stand-alone" - :param locale: the `Locale` object, or a locale string - """ - return Locale.parse(locale).days[context][width] - - -def get_month_names(width='wide', context='format', locale=LC_TIME): - """Return the month names used by the locale for the specified format. - - >>> get_month_names('wide', locale='en_US')[1] - u'January' - >>> get_month_names('abbreviated', locale='es')[1] - u'ene.' - >>> get_month_names('narrow', context='stand-alone', locale='de_DE')[1] - u'J' - - :param width: the width to use, one of "wide", "abbreviated", or "narrow" - :param context: the context, either "format" or "stand-alone" - :param locale: the `Locale` object, or a locale string - """ - return Locale.parse(locale).months[context][width] - - -def get_quarter_names(width='wide', context='format', locale=LC_TIME): - """Return the quarter names used by the locale for the specified format. - - >>> get_quarter_names('wide', locale='en_US')[1] - u'1st quarter' - >>> get_quarter_names('abbreviated', locale='de_DE')[1] - u'Q1' - >>> get_quarter_names('narrow', locale='de_DE')[1] - u'1' - - :param width: the width to use, one of "wide", "abbreviated", or "narrow" - :param context: the context, either "format" or "stand-alone" - :param locale: the `Locale` object, or a locale string - """ - return Locale.parse(locale).quarters[context][width] - - -def get_era_names(width='wide', locale=LC_TIME): - """Return the era names used by the locale for the specified format. - - >>> get_era_names('wide', locale='en_US')[1] - u'Anno Domini' - >>> get_era_names('abbreviated', locale='de_DE')[1] - u'n. Chr.' - - :param width: the width to use, either "wide", "abbreviated", or "narrow" - :param locale: the `Locale` object, or a locale string - """ - return Locale.parse(locale).eras[width] - - -def get_date_format(format='medium', locale=LC_TIME): - """Return the date formatting patterns used by the locale for the specified - format. - - >>> get_date_format(locale='en_US') - - >>> get_date_format('full', locale='de_DE') - - - :param format: the format to use, one of "full", "long", "medium", or - "short" - :param locale: the `Locale` object, or a locale string - """ - return Locale.parse(locale).date_formats[format] - - -def get_datetime_format(format='medium', locale=LC_TIME): - """Return the datetime formatting patterns used by the locale for the - specified format. - - >>> get_datetime_format(locale='en_US') - u'{1}, {0}' - - :param format: the format to use, one of "full", "long", "medium", or - "short" - :param locale: the `Locale` object, or a locale string - """ - patterns = Locale.parse(locale).datetime_formats - if format not in patterns: - format = None - return patterns[format] - - -def get_time_format(format='medium', locale=LC_TIME): - """Return the time formatting patterns used by the locale for the specified - format. - - >>> get_time_format(locale='en_US') - - >>> get_time_format('full', locale='de_DE') - - - :param format: the format to use, one of "full", "long", "medium", or - "short" - :param locale: the `Locale` object, or a locale string - """ - return Locale.parse(locale).time_formats[format] - - -def get_timezone_gmt(datetime=None, width='long', locale=LC_TIME, return_z=False): - """Return the timezone associated with the given `datetime` object formatted - as string indicating the offset from GMT. - - >>> dt = datetime(2007, 4, 1, 15, 30) - >>> get_timezone_gmt(dt, locale='en') - u'GMT+00:00' - >>> get_timezone_gmt(dt, locale='en', return_z=True) - 'Z' - >>> get_timezone_gmt(dt, locale='en', width='iso8601_short') - u'+00' - >>> tz = get_timezone('America/Los_Angeles') - >>> dt = tz.localize(datetime(2007, 4, 1, 15, 30)) - >>> get_timezone_gmt(dt, locale='en') - u'GMT-07:00' - >>> get_timezone_gmt(dt, 'short', locale='en') - u'-0700' - >>> get_timezone_gmt(dt, locale='en', width='iso8601_short') - u'-07' - - The long format depends on the locale, for example in France the acronym - UTC string is used instead of GMT: - - >>> get_timezone_gmt(dt, 'long', locale='fr_FR') - u'UTC-07:00' - - .. versionadded:: 0.9 - - :param datetime: the ``datetime`` object; if `None`, the current date and - time in UTC is used - :param width: either "long" or "short" or "iso8601" or "iso8601_short" - :param locale: the `Locale` object, or a locale string - :param return_z: True or False; Function returns indicator "Z" - when local time offset is 0 - """ - datetime = _ensure_datetime_tzinfo(_get_datetime(datetime)) - locale = Locale.parse(locale) - - offset = datetime.tzinfo.utcoffset(datetime) - seconds = offset.days * 24 * 60 * 60 + offset.seconds - hours, seconds = divmod(seconds, 3600) - if return_z and hours == 0 and seconds == 0: - return 'Z' - elif seconds == 0 and width == 'iso8601_short': - return u'%+03d' % hours - elif width == 'short' or width == 'iso8601_short': - pattern = u'%+03d%02d' - elif width == 'iso8601': - pattern = u'%+03d:%02d' - else: - pattern = locale.zone_formats['gmt'] % '%+03d:%02d' - return pattern % (hours, seconds // 60) - - -def get_timezone_location(dt_or_tzinfo=None, locale=LC_TIME, return_city=False): - u"""Return a representation of the given timezone using "location format". - - The result depends on both the local display name of the country and the - city associated with the time zone: - - >>> tz = get_timezone('America/St_Johns') - >>> print(get_timezone_location(tz, locale='de_DE')) - Kanada (St. John’s) Zeit - >>> print(get_timezone_location(tz, locale='en')) - Canada (St. John’s) Time - >>> print(get_timezone_location(tz, locale='en', return_city=True)) - St. John’s - >>> tz = get_timezone('America/Mexico_City') - >>> get_timezone_location(tz, locale='de_DE') - u'Mexiko (Mexiko-Stadt) Zeit' - - If the timezone is associated with a country that uses only a single - timezone, just the localized country name is returned: - - >>> tz = get_timezone('Europe/Berlin') - >>> get_timezone_name(tz, locale='de_DE') - u'Mitteleurop\\xe4ische Zeit' - - .. versionadded:: 0.9 - - :param dt_or_tzinfo: the ``datetime`` or ``tzinfo`` object that determines - the timezone; if `None`, the current date and time in - UTC is assumed - :param locale: the `Locale` object, or a locale string - :param return_city: True or False, if True then return exemplar city (location) - for the time zone - :return: the localized timezone name using location format - - """ - dt, tzinfo = _get_dt_and_tzinfo(dt_or_tzinfo) - locale = Locale.parse(locale) - - if hasattr(tzinfo, 'zone'): - zone = tzinfo.zone - else: - zone = tzinfo.tzname(dt or datetime.utcnow()) - - # Get the canonical time-zone code - zone = get_global('zone_aliases').get(zone, zone) - - info = locale.time_zones.get(zone, {}) - - # Otherwise, if there is only one timezone for the country, return the - # localized country name - region_format = locale.zone_formats['region'] - territory = get_global('zone_territories').get(zone) - if territory not in locale.territories: - territory = 'ZZ' # invalid/unknown - territory_name = locale.territories[territory] - if not return_city and territory and len(get_global('territory_zones').get(territory, [])) == 1: - return region_format % territory_name - - # Otherwise, include the city in the output - fallback_format = locale.zone_formats['fallback'] - if 'city' in info: - city_name = info['city'] - else: - metazone = get_global('meta_zones').get(zone) - metazone_info = locale.meta_zones.get(metazone, {}) - if 'city' in metazone_info: - city_name = metazone_info['city'] - elif '/' in zone: - city_name = zone.split('/', 1)[1].replace('_', ' ') - else: - city_name = zone.replace('_', ' ') - - if return_city: - return city_name - return region_format % (fallback_format % { - '0': city_name, - '1': territory_name - }) - - -def get_timezone_name(dt_or_tzinfo=None, width='long', uncommon=False, - locale=LC_TIME, zone_variant=None, return_zone=False): - r"""Return the localized display name for the given timezone. The timezone - may be specified using a ``datetime`` or `tzinfo` object. - - >>> dt = time(15, 30, tzinfo=get_timezone('America/Los_Angeles')) - >>> get_timezone_name(dt, locale='en_US') - u'Pacific Standard Time' - >>> get_timezone_name(dt, locale='en_US', return_zone=True) - 'America/Los_Angeles' - >>> get_timezone_name(dt, width='short', locale='en_US') - u'PST' - - If this function gets passed only a `tzinfo` object and no concrete - `datetime`, the returned display name is indenpendent of daylight savings - time. This can be used for example for selecting timezones, or to set the - time of events that recur across DST changes: - - >>> tz = get_timezone('America/Los_Angeles') - >>> get_timezone_name(tz, locale='en_US') - u'Pacific Time' - >>> get_timezone_name(tz, 'short', locale='en_US') - u'PT' - - If no localized display name for the timezone is available, and the timezone - is associated with a country that uses only a single timezone, the name of - that country is returned, formatted according to the locale: - - >>> tz = get_timezone('Europe/Berlin') - >>> get_timezone_name(tz, locale='de_DE') - u'Mitteleurop\xe4ische Zeit' - >>> get_timezone_name(tz, locale='pt_BR') - u'Hor\xe1rio da Europa Central' - - On the other hand, if the country uses multiple timezones, the city is also - included in the representation: - - >>> tz = get_timezone('America/St_Johns') - >>> get_timezone_name(tz, locale='de_DE') - u'Neufundland-Zeit' - - Note that short format is currently not supported for all timezones and - all locales. This is partially because not every timezone has a short - code in every locale. In that case it currently falls back to the long - format. - - For more information see `LDML Appendix J: Time Zone Display Names - `_ - - .. versionadded:: 0.9 - - .. versionchanged:: 1.0 - Added `zone_variant` support. - - :param dt_or_tzinfo: the ``datetime`` or ``tzinfo`` object that determines - the timezone; if a ``tzinfo`` object is used, the - resulting display name will be generic, i.e. - independent of daylight savings time; if `None`, the - current date in UTC is assumed - :param width: either "long" or "short" - :param uncommon: deprecated and ignored - :param zone_variant: defines the zone variation to return. By default the - variation is defined from the datetime object - passed in. If no datetime object is passed in, the - ``'generic'`` variation is assumed. The following - values are valid: ``'generic'``, ``'daylight'`` and - ``'standard'``. - :param locale: the `Locale` object, or a locale string - :param return_zone: True or False. If true then function - returns long time zone ID - """ - dt, tzinfo = _get_dt_and_tzinfo(dt_or_tzinfo) - locale = Locale.parse(locale) - - if hasattr(tzinfo, 'zone'): - zone = tzinfo.zone - else: - zone = tzinfo.tzname(dt) - - if zone_variant is None: - if dt is None: - zone_variant = 'generic' - else: - dst = tzinfo.dst(dt) - if dst: - zone_variant = 'daylight' - else: - zone_variant = 'standard' - else: - if zone_variant not in ('generic', 'standard', 'daylight'): - raise ValueError('Invalid zone variation') - - # Get the canonical time-zone code - zone = get_global('zone_aliases').get(zone, zone) - if return_zone: - return zone - info = locale.time_zones.get(zone, {}) - # Try explicitly translated zone names first - if width in info: - if zone_variant in info[width]: - return info[width][zone_variant] - - metazone = get_global('meta_zones').get(zone) - if metazone: - metazone_info = locale.meta_zones.get(metazone, {}) - if width in metazone_info: - name = metazone_info[width].get(zone_variant) - if width == 'short' and name == NO_INHERITANCE_MARKER: - # If the short form is marked no-inheritance, - # try to fall back to the long name instead. - name = metazone_info.get('long', {}).get(zone_variant) - if name: - return name - - # If we have a concrete datetime, we assume that the result can't be - # independent of daylight savings time, so we return the GMT offset - if dt is not None: - return get_timezone_gmt(dt, width=width, locale=locale) - - return get_timezone_location(dt_or_tzinfo, locale=locale) - - -def format_date(date=None, format='medium', locale=LC_TIME): - """Return a date formatted according to the given pattern. - - >>> d = date(2007, 4, 1) - >>> format_date(d, locale='en_US') - u'Apr 1, 2007' - >>> format_date(d, format='full', locale='de_DE') - u'Sonntag, 1. April 2007' - - If you don't want to use the locale default formats, you can specify a - custom date pattern: - - >>> format_date(d, "EEE, MMM d, ''yy", locale='en') - u"Sun, Apr 1, '07" - - :param date: the ``date`` or ``datetime`` object; if `None`, the current - date is used - :param format: one of "full", "long", "medium", or "short", or a custom - date/time pattern - :param locale: a `Locale` object or a locale identifier - """ - if date is None: - date = date_.today() - elif isinstance(date, datetime): - date = date.date() - - locale = Locale.parse(locale) - if format in ('full', 'long', 'medium', 'short'): - format = get_date_format(format, locale=locale) - pattern = parse_pattern(format) - return pattern.apply(date, locale) - - -def format_datetime(datetime=None, format='medium', tzinfo=None, - locale=LC_TIME): - r"""Return a date formatted according to the given pattern. - - >>> dt = datetime(2007, 4, 1, 15, 30) - >>> format_datetime(dt, locale='en_US') - u'Apr 1, 2007, 3:30:00 PM' - - For any pattern requiring the display of the time-zone, the third-party - ``pytz`` package is needed to explicitly specify the time-zone: - - >>> format_datetime(dt, 'full', tzinfo=get_timezone('Europe/Paris'), - ... locale='fr_FR') - u'dimanche 1 avril 2007 \xe0 17:30:00 heure d\u2019\xe9t\xe9 d\u2019Europe centrale' - >>> format_datetime(dt, "yyyy.MM.dd G 'at' HH:mm:ss zzz", - ... tzinfo=get_timezone('US/Eastern'), locale='en') - u'2007.04.01 AD at 11:30:00 EDT' - - :param datetime: the `datetime` object; if `None`, the current date and - time is used - :param format: one of "full", "long", "medium", or "short", or a custom - date/time pattern - :param tzinfo: the timezone to apply to the time for display - :param locale: a `Locale` object or a locale identifier - """ - datetime = _ensure_datetime_tzinfo(_get_datetime(datetime), tzinfo) - - locale = Locale.parse(locale) - if format in ('full', 'long', 'medium', 'short'): - return get_datetime_format(format, locale=locale) \ - .replace("'", "") \ - .replace('{0}', format_time(datetime, format, tzinfo=None, - locale=locale)) \ - .replace('{1}', format_date(datetime, format, locale=locale)) - else: - return parse_pattern(format).apply(datetime, locale) - - -def format_time(time=None, format='medium', tzinfo=None, locale=LC_TIME): - r"""Return a time formatted according to the given pattern. - - >>> t = time(15, 30) - >>> format_time(t, locale='en_US') - u'3:30:00 PM' - >>> format_time(t, format='short', locale='de_DE') - u'15:30' - - If you don't want to use the locale default formats, you can specify a - custom time pattern: - - >>> format_time(t, "hh 'o''clock' a", locale='en') - u"03 o'clock PM" - - For any pattern requiring the display of the time-zone a - timezone has to be specified explicitly: - - >>> t = datetime(2007, 4, 1, 15, 30) - >>> tzinfo = get_timezone('Europe/Paris') - >>> t = tzinfo.localize(t) - >>> format_time(t, format='full', tzinfo=tzinfo, locale='fr_FR') - u'15:30:00 heure d\u2019\xe9t\xe9 d\u2019Europe centrale' - >>> format_time(t, "hh 'o''clock' a, zzzz", tzinfo=get_timezone('US/Eastern'), - ... locale='en') - u"09 o'clock AM, Eastern Daylight Time" - - As that example shows, when this function gets passed a - ``datetime.datetime`` value, the actual time in the formatted string is - adjusted to the timezone specified by the `tzinfo` parameter. If the - ``datetime`` is "naive" (i.e. it has no associated timezone information), - it is assumed to be in UTC. - - These timezone calculations are **not** performed if the value is of type - ``datetime.time``, as without date information there's no way to determine - what a given time would translate to in a different timezone without - information about whether daylight savings time is in effect or not. This - means that time values are left as-is, and the value of the `tzinfo` - parameter is only used to display the timezone name if needed: - - >>> t = time(15, 30) - >>> format_time(t, format='full', tzinfo=get_timezone('Europe/Paris'), - ... locale='fr_FR') - u'15:30:00 heure normale d\u2019Europe centrale' - >>> format_time(t, format='full', tzinfo=get_timezone('US/Eastern'), - ... locale='en_US') - u'3:30:00 PM Eastern Standard Time' - - :param time: the ``time`` or ``datetime`` object; if `None`, the current - time in UTC is used - :param format: one of "full", "long", "medium", or "short", or a custom - date/time pattern - :param tzinfo: the time-zone to apply to the time for display - :param locale: a `Locale` object or a locale identifier - """ - time = _get_time(time, tzinfo) - - locale = Locale.parse(locale) - if format in ('full', 'long', 'medium', 'short'): - format = get_time_format(format, locale=locale) - return parse_pattern(format).apply(time, locale) - - -def format_skeleton(skeleton, datetime=None, tzinfo=None, fuzzy=True, locale=LC_TIME): - r"""Return a time and/or date formatted according to the given pattern. - - The skeletons are defined in the CLDR data and provide more flexibility - than the simple short/long/medium formats, but are a bit harder to use. - The are defined using the date/time symbols without order or punctuation - and map to a suitable format for the given locale. - - >>> t = datetime(2007, 4, 1, 15, 30) - >>> format_skeleton('MMMEd', t, locale='fr') - u'dim. 1 avr.' - >>> format_skeleton('MMMEd', t, locale='en') - u'Sun, Apr 1' - >>> format_skeleton('yMMd', t, locale='fi') # yMMd is not in the Finnish locale; yMd gets used - u'1.4.2007' - >>> format_skeleton('yMMd', t, fuzzy=False, locale='fi') # yMMd is not in the Finnish locale, an error is thrown - Traceback (most recent call last): - ... - KeyError: yMMd - - After the skeleton is resolved to a pattern `format_datetime` is called so - all timezone processing etc is the same as for that. - - :param skeleton: A date time skeleton as defined in the cldr data. - :param datetime: the ``time`` or ``datetime`` object; if `None`, the current - time in UTC is used - :param tzinfo: the time-zone to apply to the time for display - :param fuzzy: If the skeleton is not found, allow choosing a skeleton that's - close enough to it. - :param locale: a `Locale` object or a locale identifier - """ - locale = Locale.parse(locale) - if fuzzy and skeleton not in locale.datetime_skeletons: - skeleton = match_skeleton(skeleton, locale.datetime_skeletons) - format = locale.datetime_skeletons[skeleton] - return format_datetime(datetime, format, tzinfo, locale) - - -TIMEDELTA_UNITS = ( - ('year', 3600 * 24 * 365), - ('month', 3600 * 24 * 30), - ('week', 3600 * 24 * 7), - ('day', 3600 * 24), - ('hour', 3600), - ('minute', 60), - ('second', 1) -) - - -def format_timedelta(delta, granularity='second', threshold=.85, - add_direction=False, format='long', - locale=LC_TIME): - """Return a time delta according to the rules of the given locale. - - >>> format_timedelta(timedelta(weeks=12), locale='en_US') - u'3 months' - >>> format_timedelta(timedelta(seconds=1), locale='es') - u'1 segundo' - - The granularity parameter can be provided to alter the lowest unit - presented, which defaults to a second. - - >>> format_timedelta(timedelta(hours=3), granularity='day', - ... locale='en_US') - u'1 day' - - The threshold parameter can be used to determine at which value the - presentation switches to the next higher unit. A higher threshold factor - means the presentation will switch later. For example: - - >>> format_timedelta(timedelta(hours=23), threshold=0.9, locale='en_US') - u'1 day' - >>> format_timedelta(timedelta(hours=23), threshold=1.1, locale='en_US') - u'23 hours' - - In addition directional information can be provided that informs - the user if the date is in the past or in the future: - - >>> format_timedelta(timedelta(hours=1), add_direction=True, locale='en') - u'in 1 hour' - >>> format_timedelta(timedelta(hours=-1), add_direction=True, locale='en') - u'1 hour ago' - - The format parameter controls how compact or wide the presentation is: - - >>> format_timedelta(timedelta(hours=3), format='short', locale='en') - u'3 hr' - >>> format_timedelta(timedelta(hours=3), format='narrow', locale='en') - u'3h' - - :param delta: a ``timedelta`` object representing the time difference to - format, or the delta in seconds as an `int` value - :param granularity: determines the smallest unit that should be displayed, - the value can be one of "year", "month", "week", "day", - "hour", "minute" or "second" - :param threshold: factor that determines at which point the presentation - switches to the next higher unit - :param add_direction: if this flag is set to `True` the return value will - include directional information. For instance a - positive timedelta will include the information about - it being in the future, a negative will be information - about the value being in the past. - :param format: the format, can be "narrow", "short" or "long". ( - "medium" is deprecated, currently converted to "long" to - maintain compatibility) - :param locale: a `Locale` object or a locale identifier - """ - if format not in ('narrow', 'short', 'medium', 'long'): - raise TypeError('Format must be one of "narrow", "short" or "long"') - if format == 'medium': - warnings.warn('"medium" value for format param of format_timedelta' - ' is deprecated. Use "long" instead', - category=DeprecationWarning) - format = 'long' - if isinstance(delta, timedelta): - seconds = int((delta.days * 86400) + delta.seconds) - else: - seconds = delta - locale = Locale.parse(locale) - - def _iter_patterns(a_unit): - if add_direction: - unit_rel_patterns = locale._data['date_fields'][a_unit] - if seconds >= 0: - yield unit_rel_patterns['future'] - else: - yield unit_rel_patterns['past'] - a_unit = 'duration-' + a_unit - yield locale._data['unit_patterns'].get(a_unit, {}).get(format) - - for unit, secs_per_unit in TIMEDELTA_UNITS: - value = abs(seconds) / secs_per_unit - if value >= threshold or unit == granularity: - if unit == granularity and value > 0: - value = max(1, value) - value = int(round(value)) - plural_form = locale.plural_form(value) - pattern = None - for patterns in _iter_patterns(unit): - if patterns is not None: - pattern = patterns[plural_form] - break - # This really should not happen - if pattern is None: - return u'' - return pattern.replace('{0}', str(value)) - - return u'' - - -def _format_fallback_interval(start, end, skeleton, tzinfo, locale): - if skeleton in locale.datetime_skeletons: # Use the given skeleton - format = lambda dt: format_skeleton(skeleton, dt, tzinfo, locale=locale) - elif all((isinstance(d, date) and not isinstance(d, datetime)) for d in (start, end)): # Both are just dates - format = lambda dt: format_date(dt, locale=locale) - elif all((isinstance(d, time) and not isinstance(d, date)) for d in (start, end)): # Both are times - format = lambda dt: format_time(dt, tzinfo=tzinfo, locale=locale) - else: - format = lambda dt: format_datetime(dt, tzinfo=tzinfo, locale=locale) - - formatted_start = format(start) - formatted_end = format(end) - - if formatted_start == formatted_end: - return format(start) - - return ( - locale.interval_formats.get(None, "{0}-{1}"). - replace("{0}", formatted_start). - replace("{1}", formatted_end) - ) - - -def format_interval(start, end, skeleton=None, tzinfo=None, fuzzy=True, locale=LC_TIME): - """ - Format an interval between two instants according to the locale's rules. - - >>> format_interval(date(2016, 1, 15), date(2016, 1, 17), "yMd", locale="fi") - u'15.\u201317.1.2016' - - >>> format_interval(time(12, 12), time(16, 16), "Hm", locale="en_GB") - '12:12\u201316:16' - - >>> format_interval(time(5, 12), time(16, 16), "hm", locale="en_US") - '5:12 AM \u2013 4:16 PM' - - >>> format_interval(time(16, 18), time(16, 24), "Hm", locale="it") - '16:18\u201316:24' - - If the start instant equals the end instant, the interval is formatted like the instant. - - >>> format_interval(time(16, 18), time(16, 18), "Hm", locale="it") - '16:18' - - Unknown skeletons fall back to "default" formatting. - - >>> format_interval(date(2015, 1, 1), date(2017, 1, 1), "wzq", locale="ja") - '2015/01/01\uff5e2017/01/01' - - >>> format_interval(time(16, 18), time(16, 24), "xxx", locale="ja") - '16:18:00\uff5e16:24:00' - - >>> format_interval(date(2016, 1, 15), date(2016, 1, 17), "xxx", locale="de") - '15.01.2016 \u2013 17.01.2016' - - :param start: First instant (datetime/date/time) - :param end: Second instant (datetime/date/time) - :param skeleton: The "skeleton format" to use for formatting. - :param tzinfo: tzinfo to use (if none is already attached) - :param fuzzy: If the skeleton is not found, allow choosing a skeleton that's - close enough to it. - :param locale: A locale object or identifier. - :return: Formatted interval - """ - locale = Locale.parse(locale) - - # NB: The quote comments below are from the algorithm description in - # https://www.unicode.org/reports/tr35/tr35-dates.html#intervalFormats - - # > Look for the intervalFormatItem element that matches the "skeleton", - # > starting in the current locale and then following the locale fallback - # > chain up to, but not including root. - - interval_formats = locale.interval_formats - - if skeleton not in interval_formats or not skeleton: - # > If no match was found from the previous step, check what the closest - # > match is in the fallback locale chain, as in availableFormats. That - # > is, this allows for adjusting the string value field's width, - # > including adjusting between "MMM" and "MMMM", and using different - # > variants of the same field, such as 'v' and 'z'. - if skeleton and fuzzy: - skeleton = match_skeleton(skeleton, interval_formats) - else: - skeleton = None - if not skeleton: # Still no match whatsoever? - # > Otherwise, format the start and end datetime using the fallback pattern. - return _format_fallback_interval(start, end, skeleton, tzinfo, locale) - - skel_formats = interval_formats[skeleton] - - if start == end: - return format_skeleton(skeleton, start, tzinfo, fuzzy=fuzzy, locale=locale) - - start = _ensure_datetime_tzinfo(_get_datetime(start), tzinfo=tzinfo) - end = _ensure_datetime_tzinfo(_get_datetime(end), tzinfo=tzinfo) - - start_fmt = DateTimeFormat(start, locale=locale) - end_fmt = DateTimeFormat(end, locale=locale) - - # > If a match is found from previous steps, compute the calendar field - # > with the greatest difference between start and end datetime. If there - # > is no difference among any of the fields in the pattern, format as a - # > single date using availableFormats, and return. - - for field in PATTERN_CHAR_ORDER: # These are in largest-to-smallest order - if field in skel_formats: - if start_fmt.extract(field) != end_fmt.extract(field): - # > If there is a match, use the pieces of the corresponding pattern to - # > format the start and end datetime, as above. - return "".join( - parse_pattern(pattern).apply(instant, locale) - for pattern, instant - in zip(skel_formats[field], (start, end)) - ) - - # > Otherwise, format the start and end datetime using the fallback pattern. - - return _format_fallback_interval(start, end, skeleton, tzinfo, locale) - - -def get_period_id(time, tzinfo=None, type=None, locale=LC_TIME): - """ - Get the day period ID for a given time. - - This ID can be used as a key for the period name dictionary. - - >>> get_period_names(locale="de")[get_period_id(time(7, 42), locale="de")] - u'Morgen' - - :param time: The time to inspect. - :param tzinfo: The timezone for the time. See ``format_time``. - :param type: The period type to use. Either "selection" or None. - The selection type is used for selecting among phrases such as - “Your email arrived yesterday evening” or “Your email arrived last night”. - :param locale: the `Locale` object, or a locale string - :return: period ID. Something is always returned -- even if it's just "am" or "pm". - """ - time = _get_time(time, tzinfo) - seconds_past_midnight = int(time.hour * 60 * 60 + time.minute * 60 + time.second) - locale = Locale.parse(locale) - - # The LDML rules state that the rules may not overlap, so iterating in arbitrary - # order should be alright, though `at` periods should be preferred. - rulesets = locale.day_period_rules.get(type, {}).items() - - for rule_id, rules in rulesets: - for rule in rules: - if "at" in rule and rule["at"] == seconds_past_midnight: - return rule_id - - for rule_id, rules in rulesets: - for rule in rules: - start_ok = end_ok = False - - if "from" in rule and seconds_past_midnight >= rule["from"]: - start_ok = True - if "to" in rule and seconds_past_midnight <= rule["to"]: - # This rule type does not exist in the present CLDR data; - # excuse the lack of test coverage. - end_ok = True - if "before" in rule and seconds_past_midnight < rule["before"]: - end_ok = True - if "after" in rule: - raise NotImplementedError("'after' is deprecated as of CLDR 29.") - - if start_ok and end_ok: - return rule_id - - if seconds_past_midnight < 43200: - return "am" - else: - return "pm" - - -def parse_date(string, locale=LC_TIME): - """Parse a date from a string. - - This function uses the date format for the locale as a hint to determine - the order in which the date fields appear in the string. - - >>> parse_date('4/1/04', locale='en_US') - datetime.date(2004, 4, 1) - >>> parse_date('01.04.2004', locale='de_DE') - datetime.date(2004, 4, 1) - - :param string: the string containing the date - :param locale: a `Locale` object or a locale identifier - """ - # TODO: try ISO format first? - format = get_date_format(locale=locale).pattern.lower() - year_idx = format.index('y') - month_idx = format.index('m') - if month_idx < 0: - month_idx = format.index('l') - day_idx = format.index('d') - - indexes = [(year_idx, 'Y'), (month_idx, 'M'), (day_idx, 'D')] - indexes.sort() - indexes = dict([(item[1], idx) for idx, item in enumerate(indexes)]) - - # FIXME: this currently only supports numbers, but should also support month - # names, both in the requested locale, and english - - numbers = re.findall(r'(\d+)', string) - year = numbers[indexes['Y']] - if len(year) == 2: - year = 2000 + int(year) - else: - year = int(year) - month = int(numbers[indexes['M']]) - day = int(numbers[indexes['D']]) - if month > 12: - month, day = day, month - return date(year, month, day) - - -def parse_time(string, locale=LC_TIME): - """Parse a time from a string. - - This function uses the time format for the locale as a hint to determine - the order in which the time fields appear in the string. - - >>> parse_time('15:30:00', locale='en_US') - datetime.time(15, 30) - - :param string: the string containing the time - :param locale: a `Locale` object or a locale identifier - :return: the parsed time - :rtype: `time` - """ - # TODO: try ISO format first? - format = get_time_format(locale=locale).pattern.lower() - hour_idx = format.index('h') - if hour_idx < 0: - hour_idx = format.index('k') - min_idx = format.index('m') - sec_idx = format.index('s') - - indexes = [(hour_idx, 'H'), (min_idx, 'M'), (sec_idx, 'S')] - indexes.sort() - indexes = dict([(item[1], idx) for idx, item in enumerate(indexes)]) - - # FIXME: support 12 hour clock, and 0-based hour specification - # and seconds should be optional, maybe minutes too - # oh, and time-zones, of course - - numbers = re.findall(r'(\d+)', string) - hour = int(numbers[indexes['H']]) - minute = int(numbers[indexes['M']]) - second = int(numbers[indexes['S']]) - return time(hour, minute, second) - - -class DateTimePattern(object): - - def __init__(self, pattern, format): - self.pattern = pattern - self.format = format - - def __repr__(self): - return '<%s %r>' % (type(self).__name__, self.pattern) - - def __unicode__(self): - return self.pattern - - def __str__(self): - pat = self.pattern - if PY2: - pat = pat.encode('utf-8') - return pat - - def __mod__(self, other): - if type(other) is not DateTimeFormat: - return NotImplemented - return self.format % other - - def apply(self, datetime, locale): - return self % DateTimeFormat(datetime, locale) - - -class DateTimeFormat(object): - - def __init__(self, value, locale): - assert isinstance(value, (date, datetime, time)) - if isinstance(value, (datetime, time)) and value.tzinfo is None: - value = value.replace(tzinfo=UTC) - self.value = value - self.locale = Locale.parse(locale) - - def __getitem__(self, name): - char = name[0] - num = len(name) - if char == 'G': - return self.format_era(char, num) - elif char in ('y', 'Y', 'u'): - return self.format_year(char, num) - elif char in ('Q', 'q'): - return self.format_quarter(char, num) - elif char in ('M', 'L'): - return self.format_month(char, num) - elif char in ('w', 'W'): - return self.format_week(char, num) - elif char == 'd': - return self.format(self.value.day, num) - elif char == 'D': - return self.format_day_of_year(num) - elif char == 'F': - return self.format_day_of_week_in_month() - elif char in ('E', 'e', 'c'): - return self.format_weekday(char, num) - elif char == 'a': - # TODO: Add support for the rest of the period formats (a*, b*, B*) - return self.format_period(char) - elif char == 'h': - if self.value.hour % 12 == 0: - return self.format(12, num) - else: - return self.format(self.value.hour % 12, num) - elif char == 'H': - return self.format(self.value.hour, num) - elif char == 'K': - return self.format(self.value.hour % 12, num) - elif char == 'k': - if self.value.hour == 0: - return self.format(24, num) - else: - return self.format(self.value.hour, num) - elif char == 'm': - return self.format(self.value.minute, num) - elif char == 's': - return self.format(self.value.second, num) - elif char == 'S': - return self.format_frac_seconds(num) - elif char == 'A': - return self.format_milliseconds_in_day(num) - elif char in ('z', 'Z', 'v', 'V', 'x', 'X', 'O'): - return self.format_timezone(char, num) - else: - raise KeyError('Unsupported date/time field %r' % char) - - def extract(self, char): - char = str(char)[0] - if char == 'y': - return self.value.year - elif char == 'M': - return self.value.month - elif char == 'd': - return self.value.day - elif char == 'H': - return self.value.hour - elif char == 'h': - return self.value.hour % 12 or 12 - elif char == 'm': - return self.value.minute - elif char == 'a': - return int(self.value.hour >= 12) # 0 for am, 1 for pm - else: - raise NotImplementedError("Not implemented: extracting %r from %r" % (char, self.value)) - - def format_era(self, char, num): - width = {3: 'abbreviated', 4: 'wide', 5: 'narrow'}[max(3, num)] - era = int(self.value.year >= 0) - return get_era_names(width, self.locale)[era] - - def format_year(self, char, num): - value = self.value.year - if char.isupper(): - value = self.value.isocalendar()[0] - year = self.format(value, num) - if num == 2: - year = year[-2:] - return year - - def format_quarter(self, char, num): - quarter = (self.value.month - 1) // 3 + 1 - if num <= 2: - return '%0*d' % (num, quarter) - width = {3: 'abbreviated', 4: 'wide', 5: 'narrow'}[num] - context = {'Q': 'format', 'q': 'stand-alone'}[char] - return get_quarter_names(width, context, self.locale)[quarter] - - def format_month(self, char, num): - if num <= 2: - return '%0*d' % (num, self.value.month) - width = {3: 'abbreviated', 4: 'wide', 5: 'narrow'}[num] - context = {'M': 'format', 'L': 'stand-alone'}[char] - return get_month_names(width, context, self.locale)[self.value.month] - - def format_week(self, char, num): - if char.islower(): # week of year - day_of_year = self.get_day_of_year() - week = self.get_week_number(day_of_year) - if week == 0: - date = self.value - timedelta(days=day_of_year) - week = self.get_week_number(self.get_day_of_year(date), - date.weekday()) - return self.format(week, num) - else: # week of month - week = self.get_week_number(self.value.day) - if week == 0: - date = self.value - timedelta(days=self.value.day) - week = self.get_week_number(date.day, date.weekday()) - return '%d' % week - - def format_weekday(self, char='E', num=4): - """ - Return weekday from parsed datetime according to format pattern. - - >>> format = DateTimeFormat(date(2016, 2, 28), Locale.parse('en_US')) - >>> format.format_weekday() - u'Sunday' - - 'E': Day of week - Use one through three letters for the abbreviated day name, four for the full (wide) name, - five for the narrow name, or six for the short name. - >>> format.format_weekday('E',2) - u'Sun' - - 'e': Local day of week. Same as E except adds a numeric value that will depend on the local starting day of the - week, using one or two letters. For this example, Monday is the first day of the week. - >>> format.format_weekday('e',2) - '01' - - 'c': Stand-Alone local day of week - Use one letter for the local numeric value (same as 'e'), three for the - abbreviated day name, four for the full (wide) name, five for the narrow name, or six for the short name. - >>> format.format_weekday('c',1) - '1' - - :param char: pattern format character ('e','E','c') - :param num: count of format character - - """ - if num < 3: - if char.islower(): - value = 7 - self.locale.first_week_day + self.value.weekday() - return self.format(value % 7 + 1, num) - num = 3 - weekday = self.value.weekday() - width = {3: 'abbreviated', 4: 'wide', 5: 'narrow', 6: 'short'}[num] - if char == 'c': - context = 'stand-alone' - else: - context = 'format' - return get_day_names(width, context, self.locale)[weekday] - - def format_day_of_year(self, num): - return self.format(self.get_day_of_year(), num) - - def format_day_of_week_in_month(self): - return '%d' % ((self.value.day - 1) // 7 + 1) - - def format_period(self, char): - period = {0: 'am', 1: 'pm'}[int(self.value.hour >= 12)] - for width in ('wide', 'narrow', 'abbreviated'): - period_names = get_period_names(context='format', width=width, locale=self.locale) - if period in period_names: - return period_names[period] - raise ValueError('Could not format period %s in %s' % (period, self.locale)) - - def format_frac_seconds(self, num): - """ Return fractional seconds. - - Rounds the time's microseconds to the precision given by the number \ - of digits passed in. - """ - value = self.value.microsecond / 1000000 - return self.format(round(value, num) * 10**num, num) - - def format_milliseconds_in_day(self, num): - msecs = self.value.microsecond // 1000 + self.value.second * 1000 + \ - self.value.minute * 60000 + self.value.hour * 3600000 - return self.format(msecs, num) - - def format_timezone(self, char, num): - width = {3: 'short', 4: 'long', 5: 'iso8601'}[max(3, num)] - if char == 'z': - return get_timezone_name(self.value, width, locale=self.locale) - elif char == 'Z': - if num == 5: - return get_timezone_gmt(self.value, width, locale=self.locale, return_z=True) - return get_timezone_gmt(self.value, width, locale=self.locale) - elif char == 'O': - if num == 4: - return get_timezone_gmt(self.value, width, locale=self.locale) - # TODO: To add support for O:1 - elif char == 'v': - return get_timezone_name(self.value.tzinfo, width, - locale=self.locale) - elif char == 'V': - if num == 1: - return get_timezone_name(self.value.tzinfo, width, - uncommon=True, locale=self.locale) - elif num == 2: - return get_timezone_name(self.value.tzinfo, locale=self.locale, return_zone=True) - elif num == 3: - return get_timezone_location(self.value.tzinfo, locale=self.locale, return_city=True) - return get_timezone_location(self.value.tzinfo, locale=self.locale) - # Included additional elif condition to add support for 'Xx' in timezone format - elif char == 'X': - if num == 1: - return get_timezone_gmt(self.value, width='iso8601_short', locale=self.locale, - return_z=True) - elif num in (2, 4): - return get_timezone_gmt(self.value, width='short', locale=self.locale, - return_z=True) - elif num in (3, 5): - return get_timezone_gmt(self.value, width='iso8601', locale=self.locale, - return_z=True) - elif char == 'x': - if num == 1: - return get_timezone_gmt(self.value, width='iso8601_short', locale=self.locale) - elif num in (2, 4): - return get_timezone_gmt(self.value, width='short', locale=self.locale) - elif num in (3, 5): - return get_timezone_gmt(self.value, width='iso8601', locale=self.locale) - - def format(self, value, length): - return '%0*d' % (length, value) - - def get_day_of_year(self, date=None): - if date is None: - date = self.value - return (date - date.replace(month=1, day=1)).days + 1 - - def get_week_number(self, day_of_period, day_of_week=None): - """Return the number of the week of a day within a period. This may be - the week number in a year or the week number in a month. - - Usually this will return a value equal to or greater than 1, but if the - first week of the period is so short that it actually counts as the last - week of the previous period, this function will return 0. - - >>> format = DateTimeFormat(date(2006, 1, 8), Locale.parse('de_DE')) - >>> format.get_week_number(6) - 1 - - >>> format = DateTimeFormat(date(2006, 1, 8), Locale.parse('en_US')) - >>> format.get_week_number(6) - 2 - - :param day_of_period: the number of the day in the period (usually - either the day of month or the day of year) - :param day_of_week: the week day; if ommitted, the week day of the - current date is assumed - """ - if day_of_week is None: - day_of_week = self.value.weekday() - first_day = (day_of_week - self.locale.first_week_day - - day_of_period + 1) % 7 - if first_day < 0: - first_day += 7 - week_number = (day_of_period + first_day - 1) // 7 - - if 7 - first_day >= self.locale.min_week_days: - week_number += 1 - - if self.locale.first_week_day == 0: - # Correct the weeknumber in case of iso-calendar usage (first_week_day=0). - # If the weeknumber exceeds the maximum number of weeks for the given year - # we must count from zero.For example the above calculation gives week 53 - # for 2018-12-31. By iso-calender definition 2018 has a max of 52 - # weeks, thus the weeknumber must be 53-52=1. - max_weeks = date(year=self.value.year, day=28, month=12).isocalendar()[1] - if week_number > max_weeks: - week_number -= max_weeks - - return week_number - - -PATTERN_CHARS = { - 'G': [1, 2, 3, 4, 5], # era - 'y': None, 'Y': None, 'u': None, # year - 'Q': [1, 2, 3, 4, 5], 'q': [1, 2, 3, 4, 5], # quarter - 'M': [1, 2, 3, 4, 5], 'L': [1, 2, 3, 4, 5], # month - 'w': [1, 2], 'W': [1], # week - 'd': [1, 2], 'D': [1, 2, 3], 'F': [1], 'g': None, # day - 'E': [1, 2, 3, 4, 5, 6], 'e': [1, 2, 3, 4, 5, 6], 'c': [1, 3, 4, 5, 6], # week day - 'a': [1], # period - 'h': [1, 2], 'H': [1, 2], 'K': [1, 2], 'k': [1, 2], # hour - 'm': [1, 2], # minute - 's': [1, 2], 'S': None, 'A': None, # second - 'z': [1, 2, 3, 4], 'Z': [1, 2, 3, 4, 5], 'O': [1, 4], 'v': [1, 4], # zone - 'V': [1, 2, 3, 4], 'x': [1, 2, 3, 4, 5], 'X': [1, 2, 3, 4, 5] # zone -} - -#: The pattern characters declared in the Date Field Symbol Table -#: (https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table) -#: in order of decreasing magnitude. -PATTERN_CHAR_ORDER = "GyYuUQqMLlwWdDFgEecabBChHKkjJmsSAzZOvVXx" - -_pattern_cache = {} - - -def parse_pattern(pattern): - """Parse date, time, and datetime format patterns. - - >>> parse_pattern("MMMMd").format - u'%(MMMM)s%(d)s' - >>> parse_pattern("MMM d, yyyy").format - u'%(MMM)s %(d)s, %(yyyy)s' - - Pattern can contain literal strings in single quotes: - - >>> parse_pattern("H:mm' Uhr 'z").format - u'%(H)s:%(mm)s Uhr %(z)s' - - An actual single quote can be used by using two adjacent single quote - characters: - - >>> parse_pattern("hh' o''clock'").format - u"%(hh)s o'clock" - - :param pattern: the formatting pattern to parse - """ - if type(pattern) is DateTimePattern: - return pattern - - if pattern in _pattern_cache: - return _pattern_cache[pattern] - - result = [] - - for tok_type, tok_value in tokenize_pattern(pattern): - if tok_type == "chars": - result.append(tok_value.replace('%', '%%')) - elif tok_type == "field": - fieldchar, fieldnum = tok_value - limit = PATTERN_CHARS[fieldchar] - if limit and fieldnum not in limit: - raise ValueError('Invalid length for field: %r' - % (fieldchar * fieldnum)) - result.append('%%(%s)s' % (fieldchar * fieldnum)) - else: - raise NotImplementedError("Unknown token type: %s" % tok_type) - - _pattern_cache[pattern] = pat = DateTimePattern(pattern, u''.join(result)) - return pat - - -def tokenize_pattern(pattern): - """ - Tokenize date format patterns. - - Returns a list of (token_type, token_value) tuples. - - ``token_type`` may be either "chars" or "field". - - For "chars" tokens, the value is the literal value. - - For "field" tokens, the value is a tuple of (field character, repetition count). - - :param pattern: Pattern string - :type pattern: str - :rtype: list[tuple] - """ - result = [] - quotebuf = None - charbuf = [] - fieldchar = [''] - fieldnum = [0] - - def append_chars(): - result.append(('chars', ''.join(charbuf).replace('\0', "'"))) - del charbuf[:] - - def append_field(): - result.append(('field', (fieldchar[0], fieldnum[0]))) - fieldchar[0] = '' - fieldnum[0] = 0 - - for idx, char in enumerate(pattern.replace("''", '\0')): - if quotebuf is None: - if char == "'": # quote started - if fieldchar[0]: - append_field() - elif charbuf: - append_chars() - quotebuf = [] - elif char in PATTERN_CHARS: - if charbuf: - append_chars() - if char == fieldchar[0]: - fieldnum[0] += 1 - else: - if fieldchar[0]: - append_field() - fieldchar[0] = char - fieldnum[0] = 1 - else: - if fieldchar[0]: - append_field() - charbuf.append(char) - - elif quotebuf is not None: - if char == "'": # end of quote - charbuf.extend(quotebuf) - quotebuf = None - else: # inside quote - quotebuf.append(char) - - if fieldchar[0]: - append_field() - elif charbuf: - append_chars() - - return result - - -def untokenize_pattern(tokens): - """ - Turn a date format pattern token stream back into a string. - - This is the reverse operation of ``tokenize_pattern``. - - :type tokens: Iterable[tuple] - :rtype: str - """ - output = [] - for tok_type, tok_value in tokens: - if tok_type == "field": - output.append(tok_value[0] * tok_value[1]) - elif tok_type == "chars": - if not any(ch in PATTERN_CHARS for ch in tok_value): # No need to quote - output.append(tok_value) - else: - output.append("'%s'" % tok_value.replace("'", "''")) - return "".join(output) - - -def split_interval_pattern(pattern): - """ - Split an interval-describing datetime pattern into multiple pieces. - - > The pattern is then designed to be broken up into two pieces by determining the first repeating field. - - https://www.unicode.org/reports/tr35/tr35-dates.html#intervalFormats - - >>> split_interval_pattern(u'E d.M. \u2013 E d.M.') - [u'E d.M. \u2013 ', 'E d.M.'] - >>> split_interval_pattern("Y 'text' Y 'more text'") - ["Y 'text '", "Y 'more text'"] - >>> split_interval_pattern(u"E, MMM d \u2013 E") - [u'E, MMM d \u2013 ', u'E'] - >>> split_interval_pattern("MMM d") - ['MMM d'] - >>> split_interval_pattern("y G") - ['y G'] - >>> split_interval_pattern(u"MMM d \u2013 d") - [u'MMM d \u2013 ', u'd'] - - :param pattern: Interval pattern string - :return: list of "subpatterns" - """ - - seen_fields = set() - parts = [[]] - - for tok_type, tok_value in tokenize_pattern(pattern): - if tok_type == "field": - if tok_value[0] in seen_fields: # Repeated field - parts.append([]) - seen_fields.clear() - seen_fields.add(tok_value[0]) - parts[-1].append((tok_type, tok_value)) - - return [untokenize_pattern(tokens) for tokens in parts] - - -def match_skeleton(skeleton, options, allow_different_fields=False): - """ - Find the closest match for the given datetime skeleton among the options given. - - This uses the rules outlined in the TR35 document. - - >>> match_skeleton('yMMd', ('yMd', 'yMMMd')) - 'yMd' - - >>> match_skeleton('yMMd', ('jyMMd',), allow_different_fields=True) - 'jyMMd' - - >>> match_skeleton('yMMd', ('qyMMd',), allow_different_fields=False) - - >>> match_skeleton('hmz', ('hmv',)) - 'hmv' - - :param skeleton: The skeleton to match - :type skeleton: str - :param options: An iterable of other skeletons to match against - :type options: Iterable[str] - :return: The closest skeleton match, or if no match was found, None. - :rtype: str|None - """ - - # TODO: maybe implement pattern expansion? - - # Based on the implementation in - # http://source.icu-project.org/repos/icu/icu4j/trunk/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java - - # Filter out falsy values and sort for stability; when `interval_formats` is passed in, there may be a None key. - options = sorted(option for option in options if option) - - if 'z' in skeleton and not any('z' in option for option in options): - skeleton = skeleton.replace('z', 'v') - - get_input_field_width = dict(t[1] for t in tokenize_pattern(skeleton) if t[0] == "field").get - best_skeleton = None - best_distance = None - for option in options: - get_opt_field_width = dict(t[1] for t in tokenize_pattern(option) if t[0] == "field").get - distance = 0 - for field in PATTERN_CHARS: - input_width = get_input_field_width(field, 0) - opt_width = get_opt_field_width(field, 0) - if input_width == opt_width: - continue - if opt_width == 0 or input_width == 0: - if not allow_different_fields: # This one is not okay - option = None - break - distance += 0x1000 # Magic weight constant for "entirely different fields" - elif field == 'M' and ((input_width > 2 and opt_width <= 2) or (input_width <= 2 and opt_width > 2)): - distance += 0x100 # Magic weight for "text turns into a number" - else: - distance += abs(input_width - opt_width) - - if not option: # We lost the option along the way (probably due to "allow_different_fields") - continue - - if not best_skeleton or distance < best_distance: - best_skeleton = option - best_distance = distance - - if distance == 0: # Found a perfect match! - break - - return best_skeleton diff --git a/venv/lib/python3.7/site-packages/babel/global.dat b/venv/lib/python3.7/site-packages/babel/global.dat deleted file mode 100644 index 0aacd0c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/global.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/languages.py b/venv/lib/python3.7/site-packages/babel/languages.py deleted file mode 100644 index 0974367..0000000 --- a/venv/lib/python3.7/site-packages/babel/languages.py +++ /dev/null @@ -1,71 +0,0 @@ -# -- encoding: UTF-8 -- -from babel.core import get_global - - -def get_official_languages(territory, regional=False, de_facto=False): - """ - Get the official language(s) for the given territory. - - The language codes, if any are known, are returned in order of descending popularity. - - If the `regional` flag is set, then languages which are regionally official are also returned. - - If the `de_facto` flag is set, then languages which are "de facto" official are also returned. - - .. warning:: Note that the data is as up to date as the current version of the CLDR used - by Babel. If you need scientifically accurate information, use another source! - - :param territory: Territory code - :type territory: str - :param regional: Whether to return regionally official languages too - :type regional: bool - :param de_facto: Whether to return de-facto official languages too - :type de_facto: bool - :return: Tuple of language codes - :rtype: tuple[str] - """ - - territory = str(territory).upper() - allowed_stati = {"official"} - if regional: - allowed_stati.add("official_regional") - if de_facto: - allowed_stati.add("de_facto_official") - - languages = get_global("territory_languages").get(territory, {}) - pairs = [ - (info['population_percent'], language) - for language, info in languages.items() - if info.get('official_status') in allowed_stati - ] - pairs.sort(reverse=True) - return tuple(lang for _, lang in pairs) - - -def get_territory_language_info(territory): - """ - Get a dictionary of language information for a territory. - - The dictionary is keyed by language code; the values are dicts with more information. - - The following keys are currently known for the values: - - * `population_percent`: The percentage of the territory's population speaking the - language. - * `official_status`: An optional string describing the officiality status of the language. - Known values are "official", "official_regional" and "de_facto_official". - - .. warning:: Note that the data is as up to date as the current version of the CLDR used - by Babel. If you need scientifically accurate information, use another source! - - .. note:: Note that the format of the dict returned may change between Babel versions. - - See https://www.unicode.org/cldr/charts/latest/supplemental/territory_language_information.html - - :param territory: Territory code - :type territory: str - :return: Language information dictionary - :rtype: dict[str, dict] - """ - territory = str(territory).upper() - return get_global("territory_languages").get(territory, {}).copy() diff --git a/venv/lib/python3.7/site-packages/babel/lists.py b/venv/lib/python3.7/site-packages/babel/lists.py deleted file mode 100644 index ab5a24c..0000000 --- a/venv/lib/python3.7/site-packages/babel/lists.py +++ /dev/null @@ -1,87 +0,0 @@ -# -*- coding: utf-8 -*- -""" - babel.lists - ~~~~~~~~~~~ - - Locale dependent formatting of lists. - - The default locale for the functions in this module is determined by the - following environment variables, in that order: - - * ``LC_ALL``, and - * ``LANG`` - - :copyright: (c) 2015-2019 by the Babel Team. - :license: BSD, see LICENSE for more details. -""" - -from babel.core import Locale, default_locale - -DEFAULT_LOCALE = default_locale() - - -def format_list(lst, style='standard', locale=DEFAULT_LOCALE): - """ - Format the items in `lst` as a list. - - >>> format_list(['apples', 'oranges', 'pears'], locale='en') - u'apples, oranges, and pears' - >>> format_list(['apples', 'oranges', 'pears'], locale='zh') - u'apples\u3001oranges\u548cpears' - >>> format_list(['omena', 'peruna', 'aplari'], style='or', locale='fi') - u'omena, peruna tai aplari' - - These styles are defined, but not all are necessarily available in all locales. - The following text is verbatim from the Unicode TR35-49 spec [1]. - - * standard: - A typical 'and' list for arbitrary placeholders. - eg. "January, February, and March" - * standard-short: - A short version of a 'and' list, suitable for use with short or abbreviated placeholder values. - eg. "Jan., Feb., and Mar." - * or: - A typical 'or' list for arbitrary placeholders. - eg. "January, February, or March" - * or-short: - A short version of an 'or' list. - eg. "Jan., Feb., or Mar." - * unit: - A list suitable for wide units. - eg. "3 feet, 7 inches" - * unit-short: - A list suitable for short units - eg. "3 ft, 7 in" - * unit-narrow: - A list suitable for narrow units, where space on the screen is very limited. - eg. "3′ 7″" - - [1]: https://www.unicode.org/reports/tr35/tr35-49/tr35-general.html#ListPatterns - - :param lst: a sequence of items to format in to a list - :param style: the style to format the list with. See above for description. - :param locale: the locale - """ - locale = Locale.parse(locale) - if not lst: - return '' - if len(lst) == 1: - return lst[0] - - if style not in locale.list_patterns: - raise ValueError('Locale %s does not support list formatting style %r (supported are %s)' % ( - locale, - style, - list(sorted(locale.list_patterns)), - )) - patterns = locale.list_patterns[style] - - if len(lst) == 2: - return patterns['2'].format(*lst) - - result = patterns['start'].format(lst[0], lst[1]) - for elem in lst[2:-1]: - result = patterns['middle'].format(result, elem) - result = patterns['end'].format(result, lst[-1]) - - return result diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/af.dat b/venv/lib/python3.7/site-packages/babel/locale-data/af.dat deleted file mode 100644 index 0eb67c0..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/af.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/af_NA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/af_NA.dat deleted file mode 100644 index 45eb700..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/af_NA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/af_ZA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/af_ZA.dat deleted file mode 100644 index bcaba27..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/af_ZA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/agq.dat b/venv/lib/python3.7/site-packages/babel/locale-data/agq.dat deleted file mode 100644 index 24d86c6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/agq.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/agq_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/agq_CM.dat deleted file mode 100644 index 8a4fb33..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/agq_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ak.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ak.dat deleted file mode 100644 index eff91f6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ak.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ak_GH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ak_GH.dat deleted file mode 100644 index 32ad02e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ak_GH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/am.dat b/venv/lib/python3.7/site-packages/babel/locale-data/am.dat deleted file mode 100644 index 57ebfb5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/am.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/am_ET.dat b/venv/lib/python3.7/site-packages/babel/locale-data/am_ET.dat deleted file mode 100644 index 5547b3f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/am_ET.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar.dat deleted file mode 100644 index 1c043c6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_001.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_001.dat deleted file mode 100644 index 06d8d9a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_001.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_AE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_AE.dat deleted file mode 100644 index ec26fce..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_AE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_BH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_BH.dat deleted file mode 100644 index 260feeb..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_BH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_DJ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_DJ.dat deleted file mode 100644 index b88b543..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_DJ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_DZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_DZ.dat deleted file mode 100644 index ec9f484..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_DZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_EG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_EG.dat deleted file mode 100644 index e014345..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_EG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_EH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_EH.dat deleted file mode 100644 index b437ea5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_EH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_ER.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_ER.dat deleted file mode 100644 index 4501c04..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_ER.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_IL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_IL.dat deleted file mode 100644 index b47223f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_IL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_IQ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_IQ.dat deleted file mode 100644 index 9b74704..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_IQ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_JO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_JO.dat deleted file mode 100644 index 50d6283..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_JO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_KM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_KM.dat deleted file mode 100644 index 5208248..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_KM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_KW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_KW.dat deleted file mode 100644 index 8acdabb..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_KW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_LB.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_LB.dat deleted file mode 100644 index 01253c0..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_LB.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_LY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_LY.dat deleted file mode 100644 index 9b51122..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_LY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_MA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_MA.dat deleted file mode 100644 index 7980e3a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_MA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_MR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_MR.dat deleted file mode 100644 index d6d57a7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_MR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_OM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_OM.dat deleted file mode 100644 index 7082022..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_OM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_PS.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_PS.dat deleted file mode 100644 index 0f2f4a1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_PS.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_QA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_QA.dat deleted file mode 100644 index 6695b65..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_QA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_SA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_SA.dat deleted file mode 100644 index 11dc6cb..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_SA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_SD.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_SD.dat deleted file mode 100644 index d9d68c6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_SD.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_SO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_SO.dat deleted file mode 100644 index 984a8d2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_SO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_SS.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_SS.dat deleted file mode 100644 index 03ef013..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_SS.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_SY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_SY.dat deleted file mode 100644 index 9864dcd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_SY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_TD.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_TD.dat deleted file mode 100644 index ef80380..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_TD.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_TN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_TN.dat deleted file mode 100644 index d2b12cf..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_TN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ar_YE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ar_YE.dat deleted file mode 100644 index 6c7115e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ar_YE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/as.dat b/venv/lib/python3.7/site-packages/babel/locale-data/as.dat deleted file mode 100644 index d1edaef..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/as.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/as_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/as_IN.dat deleted file mode 100644 index 160978d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/as_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/asa.dat b/venv/lib/python3.7/site-packages/babel/locale-data/asa.dat deleted file mode 100644 index e165a46..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/asa.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/asa_TZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/asa_TZ.dat deleted file mode 100644 index bf2654b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/asa_TZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ast.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ast.dat deleted file mode 100644 index f630964..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ast.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ast_ES.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ast_ES.dat deleted file mode 100644 index 4172567..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ast_ES.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/az.dat b/venv/lib/python3.7/site-packages/babel/locale-data/az.dat deleted file mode 100644 index d11610c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/az.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/az_Cyrl.dat b/venv/lib/python3.7/site-packages/babel/locale-data/az_Cyrl.dat deleted file mode 100644 index 038294c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/az_Cyrl.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/az_Cyrl_AZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/az_Cyrl_AZ.dat deleted file mode 100644 index 29b119f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/az_Cyrl_AZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/az_Latn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/az_Latn.dat deleted file mode 100644 index 8ab69ea..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/az_Latn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/az_Latn_AZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/az_Latn_AZ.dat deleted file mode 100644 index c052389..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/az_Latn_AZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bas.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bas.dat deleted file mode 100644 index 0054afe..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bas.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bas_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bas_CM.dat deleted file mode 100644 index fd79663..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bas_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/be.dat b/venv/lib/python3.7/site-packages/babel/locale-data/be.dat deleted file mode 100644 index b4435ee..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/be.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/be_BY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/be_BY.dat deleted file mode 100644 index e5d4f1a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/be_BY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bem.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bem.dat deleted file mode 100644 index 695bde0..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bem.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bem_ZM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bem_ZM.dat deleted file mode 100644 index ca2a5e0..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bem_ZM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bez.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bez.dat deleted file mode 100644 index 13ebb7c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bez.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bez_TZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bez_TZ.dat deleted file mode 100644 index 0a7a38b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bez_TZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bg.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bg.dat deleted file mode 100644 index bf15bb3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bg.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bg_BG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bg_BG.dat deleted file mode 100644 index 393e3fe..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bg_BG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bm.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bm.dat deleted file mode 100644 index 70a9bf8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bm.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bm_ML.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bm_ML.dat deleted file mode 100644 index 911b47d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bm_ML.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bn.dat deleted file mode 100644 index eed644a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bn_BD.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bn_BD.dat deleted file mode 100644 index 47cfcc4..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bn_BD.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bn_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bn_IN.dat deleted file mode 100644 index c60196a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bn_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bo.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bo.dat deleted file mode 100644 index 029e676..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bo.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bo_CN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bo_CN.dat deleted file mode 100644 index 3d8dc23..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bo_CN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bo_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bo_IN.dat deleted file mode 100644 index 83c1459..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bo_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/br.dat b/venv/lib/python3.7/site-packages/babel/locale-data/br.dat deleted file mode 100644 index 5fbc18e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/br.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/br_FR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/br_FR.dat deleted file mode 100644 index 5ad6ff3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/br_FR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/brx.dat b/venv/lib/python3.7/site-packages/babel/locale-data/brx.dat deleted file mode 100644 index d5dcde9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/brx.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/brx_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/brx_IN.dat deleted file mode 100644 index 323f024..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/brx_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bs.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bs.dat deleted file mode 100644 index 62eefa8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bs.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bs_Cyrl.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bs_Cyrl.dat deleted file mode 100644 index 666a315..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bs_Cyrl.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bs_Cyrl_BA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bs_Cyrl_BA.dat deleted file mode 100644 index edcd425..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bs_Cyrl_BA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bs_Latn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bs_Latn.dat deleted file mode 100644 index f3bec0b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bs_Latn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/bs_Latn_BA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/bs_Latn_BA.dat deleted file mode 100644 index 6526e91..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/bs_Latn_BA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ca.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ca.dat deleted file mode 100644 index 703aad3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ca.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ca_AD.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ca_AD.dat deleted file mode 100644 index 1d18b5d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ca_AD.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ca_ES.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ca_ES.dat deleted file mode 100644 index b9c9d64..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ca_ES.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ca_ES_VALENCIA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ca_ES_VALENCIA.dat deleted file mode 100644 index cd8c58a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ca_ES_VALENCIA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ca_FR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ca_FR.dat deleted file mode 100644 index aff8bdd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ca_FR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ca_IT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ca_IT.dat deleted file mode 100644 index c91a107..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ca_IT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ccp.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ccp.dat deleted file mode 100644 index 93bb577..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ccp.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ccp_BD.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ccp_BD.dat deleted file mode 100644 index efa33cb..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ccp_BD.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ccp_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ccp_IN.dat deleted file mode 100644 index 20a79ba..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ccp_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ce.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ce.dat deleted file mode 100644 index 71ba69c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ce.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ce_RU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ce_RU.dat deleted file mode 100644 index c0bebf7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ce_RU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ceb.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ceb.dat deleted file mode 100644 index 580874c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ceb.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ceb_PH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ceb_PH.dat deleted file mode 100644 index 7adeb3e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ceb_PH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/cgg.dat b/venv/lib/python3.7/site-packages/babel/locale-data/cgg.dat deleted file mode 100644 index 907ac76..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/cgg.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/cgg_UG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/cgg_UG.dat deleted file mode 100644 index e77c0f1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/cgg_UG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/chr.dat b/venv/lib/python3.7/site-packages/babel/locale-data/chr.dat deleted file mode 100644 index 38bd9ff..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/chr.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/chr_US.dat b/venv/lib/python3.7/site-packages/babel/locale-data/chr_US.dat deleted file mode 100644 index 46d00bd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/chr_US.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ckb.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ckb.dat deleted file mode 100644 index 5e84bb1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ckb.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ckb_IQ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ckb_IQ.dat deleted file mode 100644 index 42e6831..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ckb_IQ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ckb_IR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ckb_IR.dat deleted file mode 100644 index 1762f65..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ckb_IR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/cs.dat b/venv/lib/python3.7/site-packages/babel/locale-data/cs.dat deleted file mode 100644 index 60ae66e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/cs.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/cs_CZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/cs_CZ.dat deleted file mode 100644 index 9fecf77..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/cs_CZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/cu.dat b/venv/lib/python3.7/site-packages/babel/locale-data/cu.dat deleted file mode 100644 index 8b2586b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/cu.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/cu_RU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/cu_RU.dat deleted file mode 100644 index 7d555a1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/cu_RU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/cy.dat b/venv/lib/python3.7/site-packages/babel/locale-data/cy.dat deleted file mode 100644 index ba997da..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/cy.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/cy_GB.dat b/venv/lib/python3.7/site-packages/babel/locale-data/cy_GB.dat deleted file mode 100644 index ef87db4..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/cy_GB.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/da.dat b/venv/lib/python3.7/site-packages/babel/locale-data/da.dat deleted file mode 100644 index b1ecfe8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/da.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/da_DK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/da_DK.dat deleted file mode 100644 index ad8acec..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/da_DK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/da_GL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/da_GL.dat deleted file mode 100644 index d9ae841..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/da_GL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/dav.dat b/venv/lib/python3.7/site-packages/babel/locale-data/dav.dat deleted file mode 100644 index bc1aec1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/dav.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/dav_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/dav_KE.dat deleted file mode 100644 index 4a4a6b9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/dav_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/de.dat b/venv/lib/python3.7/site-packages/babel/locale-data/de.dat deleted file mode 100644 index 356fe0d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/de.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/de_AT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/de_AT.dat deleted file mode 100644 index b587360..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/de_AT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/de_BE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/de_BE.dat deleted file mode 100644 index d26dbf2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/de_BE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/de_CH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/de_CH.dat deleted file mode 100644 index b1fce92..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/de_CH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/de_DE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/de_DE.dat deleted file mode 100644 index cd40ebf..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/de_DE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/de_IT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/de_IT.dat deleted file mode 100644 index 5479547..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/de_IT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/de_LI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/de_LI.dat deleted file mode 100644 index 34b29a7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/de_LI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/de_LU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/de_LU.dat deleted file mode 100644 index 70c9a6d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/de_LU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/dje.dat b/venv/lib/python3.7/site-packages/babel/locale-data/dje.dat deleted file mode 100644 index cf2eaec..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/dje.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/dje_NE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/dje_NE.dat deleted file mode 100644 index 8b255fc..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/dje_NE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/dsb.dat b/venv/lib/python3.7/site-packages/babel/locale-data/dsb.dat deleted file mode 100644 index c6c6c49..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/dsb.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/dsb_DE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/dsb_DE.dat deleted file mode 100644 index 67b9d22..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/dsb_DE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/dua.dat b/venv/lib/python3.7/site-packages/babel/locale-data/dua.dat deleted file mode 100644 index 0c645ce..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/dua.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/dua_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/dua_CM.dat deleted file mode 100644 index ce07e0f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/dua_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/dyo.dat b/venv/lib/python3.7/site-packages/babel/locale-data/dyo.dat deleted file mode 100644 index 6ba4f40..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/dyo.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/dyo_SN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/dyo_SN.dat deleted file mode 100644 index e6a0ff5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/dyo_SN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/dz.dat b/venv/lib/python3.7/site-packages/babel/locale-data/dz.dat deleted file mode 100644 index 5cd9e2c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/dz.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/dz_BT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/dz_BT.dat deleted file mode 100644 index d6bdb7a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/dz_BT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ebu.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ebu.dat deleted file mode 100644 index 8926af1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ebu.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ebu_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ebu_KE.dat deleted file mode 100644 index 4b58339..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ebu_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ee.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ee.dat deleted file mode 100644 index 087d173..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ee.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ee_GH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ee_GH.dat deleted file mode 100644 index 5d3418a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ee_GH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ee_TG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ee_TG.dat deleted file mode 100644 index 8b6854e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ee_TG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/el.dat b/venv/lib/python3.7/site-packages/babel/locale-data/el.dat deleted file mode 100644 index a7e51a4..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/el.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/el_CY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/el_CY.dat deleted file mode 100644 index 30eceff..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/el_CY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/el_GR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/el_GR.dat deleted file mode 100644 index 032670c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/el_GR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en.dat deleted file mode 100644 index 0d7b5b5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_001.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_001.dat deleted file mode 100644 index 38df118..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_001.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_150.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_150.dat deleted file mode 100644 index 31160ab..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_150.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_AE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_AE.dat deleted file mode 100644 index ac1a116..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_AE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_AG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_AG.dat deleted file mode 100644 index 5231bd8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_AG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_AI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_AI.dat deleted file mode 100644 index 53a35e7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_AI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_AS.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_AS.dat deleted file mode 100644 index 8839670..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_AS.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_AT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_AT.dat deleted file mode 100644 index b280528..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_AT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_AU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_AU.dat deleted file mode 100644 index f90aff4..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_AU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_BB.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_BB.dat deleted file mode 100644 index d389c5f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_BB.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_BE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_BE.dat deleted file mode 100644 index 12fa413..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_BE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_BI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_BI.dat deleted file mode 100644 index 267a159..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_BI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_BM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_BM.dat deleted file mode 100644 index af89bac..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_BM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_BS.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_BS.dat deleted file mode 100644 index f17bed5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_BS.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_BW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_BW.dat deleted file mode 100644 index 0215479..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_BW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_BZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_BZ.dat deleted file mode 100644 index 8992335..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_BZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_CA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_CA.dat deleted file mode 100644 index 9e5796b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_CA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_CC.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_CC.dat deleted file mode 100644 index 90adcb7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_CC.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_CH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_CH.dat deleted file mode 100644 index d62a921..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_CH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_CK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_CK.dat deleted file mode 100644 index 12b3ac0..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_CK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_CM.dat deleted file mode 100644 index 66fcd2f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_CX.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_CX.dat deleted file mode 100644 index 16eb67c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_CX.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_CY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_CY.dat deleted file mode 100644 index b26b0f7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_CY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_DE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_DE.dat deleted file mode 100644 index e0cff88..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_DE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_DG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_DG.dat deleted file mode 100644 index f33a878..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_DG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_DK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_DK.dat deleted file mode 100644 index 16ad3c3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_DK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_DM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_DM.dat deleted file mode 100644 index 0ae776e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_DM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_ER.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_ER.dat deleted file mode 100644 index b3eb16e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_ER.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_FI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_FI.dat deleted file mode 100644 index 65612ed..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_FI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_FJ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_FJ.dat deleted file mode 100644 index bec18db..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_FJ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_FK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_FK.dat deleted file mode 100644 index e9f6b58..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_FK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_FM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_FM.dat deleted file mode 100644 index d2f5004..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_FM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_GB.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_GB.dat deleted file mode 100644 index 4fcfc9b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_GB.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_GD.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_GD.dat deleted file mode 100644 index 54dd15b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_GD.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_GG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_GG.dat deleted file mode 100644 index 4a941d5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_GG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_GH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_GH.dat deleted file mode 100644 index a9d6c3d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_GH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_GI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_GI.dat deleted file mode 100644 index aad3782..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_GI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_GM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_GM.dat deleted file mode 100644 index 0dbf7a3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_GM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_GU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_GU.dat deleted file mode 100644 index 03db580..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_GU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_GY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_GY.dat deleted file mode 100644 index 517f8e6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_GY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_HK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_HK.dat deleted file mode 100644 index fb40e30..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_HK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_IE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_IE.dat deleted file mode 100644 index 5eb5cd5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_IE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_IL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_IL.dat deleted file mode 100644 index a6dac39..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_IL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_IM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_IM.dat deleted file mode 100644 index 3ce8869..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_IM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_IN.dat deleted file mode 100644 index 3ab1236..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_IO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_IO.dat deleted file mode 100644 index a72abe3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_IO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_JE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_JE.dat deleted file mode 100644 index f9957b2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_JE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_JM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_JM.dat deleted file mode 100644 index 3a92d6f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_JM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_KE.dat deleted file mode 100644 index eff74ad..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_KI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_KI.dat deleted file mode 100644 index 02803c6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_KI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_KN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_KN.dat deleted file mode 100644 index 8d84bd1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_KN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_KY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_KY.dat deleted file mode 100644 index 90298e3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_KY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_LC.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_LC.dat deleted file mode 100644 index 6a28838..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_LC.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_LR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_LR.dat deleted file mode 100644 index 1b2d6d9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_LR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_LS.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_LS.dat deleted file mode 100644 index 4796dac..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_LS.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_MG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_MG.dat deleted file mode 100644 index 2a38161..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_MG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_MH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_MH.dat deleted file mode 100644 index 169d2f1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_MH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_MO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_MO.dat deleted file mode 100644 index 27de6e6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_MO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_MP.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_MP.dat deleted file mode 100644 index 1997b03..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_MP.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_MS.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_MS.dat deleted file mode 100644 index 428b5b2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_MS.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_MT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_MT.dat deleted file mode 100644 index 310e4f5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_MT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_MU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_MU.dat deleted file mode 100644 index e0cd935..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_MU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_MW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_MW.dat deleted file mode 100644 index f86d860..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_MW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_MY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_MY.dat deleted file mode 100644 index 2729f6d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_MY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_NA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_NA.dat deleted file mode 100644 index 0c9c648..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_NA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_NF.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_NF.dat deleted file mode 100644 index 508283e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_NF.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_NG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_NG.dat deleted file mode 100644 index f67e6dc..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_NG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_NL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_NL.dat deleted file mode 100644 index 54a2a82..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_NL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_NR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_NR.dat deleted file mode 100644 index abca973..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_NR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_NU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_NU.dat deleted file mode 100644 index 110fff6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_NU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_NZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_NZ.dat deleted file mode 100644 index 8f448c4..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_NZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_PG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_PG.dat deleted file mode 100644 index 1b9984a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_PG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_PH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_PH.dat deleted file mode 100644 index 8683a6e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_PH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_PK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_PK.dat deleted file mode 100644 index fb75795..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_PK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_PN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_PN.dat deleted file mode 100644 index c486195..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_PN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_PR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_PR.dat deleted file mode 100644 index 920c34b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_PR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_PW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_PW.dat deleted file mode 100644 index facc40b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_PW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_RW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_RW.dat deleted file mode 100644 index db326f8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_RW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_SB.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_SB.dat deleted file mode 100644 index 0d16e7b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_SB.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_SC.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_SC.dat deleted file mode 100644 index 4f69d26..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_SC.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_SD.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_SD.dat deleted file mode 100644 index 66262e5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_SD.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_SE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_SE.dat deleted file mode 100644 index 4014fcd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_SE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_SG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_SG.dat deleted file mode 100644 index c51408e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_SG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_SH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_SH.dat deleted file mode 100644 index a67341d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_SH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_SI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_SI.dat deleted file mode 100644 index 38289d0..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_SI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_SL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_SL.dat deleted file mode 100644 index a1b7ae7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_SL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_SS.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_SS.dat deleted file mode 100644 index 1be4f7c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_SS.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_SX.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_SX.dat deleted file mode 100644 index 28063b7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_SX.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_SZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_SZ.dat deleted file mode 100644 index e4652ab..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_SZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_TC.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_TC.dat deleted file mode 100644 index 267e905..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_TC.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_TK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_TK.dat deleted file mode 100644 index 17537bd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_TK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_TO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_TO.dat deleted file mode 100644 index 237c61a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_TO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_TT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_TT.dat deleted file mode 100644 index dc4c5be..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_TT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_TV.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_TV.dat deleted file mode 100644 index 3f5748c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_TV.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_TZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_TZ.dat deleted file mode 100644 index 9d95b24..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_TZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_UG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_UG.dat deleted file mode 100644 index 7cf7e83..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_UG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_UM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_UM.dat deleted file mode 100644 index 9e44a91..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_UM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_US.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_US.dat deleted file mode 100644 index 44da6eb..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_US.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_US_POSIX.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_US_POSIX.dat deleted file mode 100644 index 4cb19e9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_US_POSIX.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_VC.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_VC.dat deleted file mode 100644 index 6f4ee8b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_VC.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_VG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_VG.dat deleted file mode 100644 index c3993a9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_VG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_VI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_VI.dat deleted file mode 100644 index 79ca768..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_VI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_VU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_VU.dat deleted file mode 100644 index 41c3989..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_VU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_WS.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_WS.dat deleted file mode 100644 index beefe8a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_WS.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_ZA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_ZA.dat deleted file mode 100644 index cbd504a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_ZA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_ZM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_ZM.dat deleted file mode 100644 index 6758d42..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_ZM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/en_ZW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/en_ZW.dat deleted file mode 100644 index e839b84..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/en_ZW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/eo.dat b/venv/lib/python3.7/site-packages/babel/locale-data/eo.dat deleted file mode 100644 index 0fcaeaa..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/eo.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/eo_001.dat b/venv/lib/python3.7/site-packages/babel/locale-data/eo_001.dat deleted file mode 100644 index e99757b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/eo_001.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es.dat deleted file mode 100644 index 58a77bc..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_419.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_419.dat deleted file mode 100644 index 7204598..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_419.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_AR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_AR.dat deleted file mode 100644 index 143f8a4..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_AR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_BO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_BO.dat deleted file mode 100644 index abe5980..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_BO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_BR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_BR.dat deleted file mode 100644 index 4e297a8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_BR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_BZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_BZ.dat deleted file mode 100644 index 9a32867..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_BZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_CL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_CL.dat deleted file mode 100644 index 11c5045..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_CL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_CO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_CO.dat deleted file mode 100644 index 6a66cf7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_CO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_CR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_CR.dat deleted file mode 100644 index c74cc85..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_CR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_CU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_CU.dat deleted file mode 100644 index 5260748..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_CU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_DO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_DO.dat deleted file mode 100644 index 0e24759..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_DO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_EA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_EA.dat deleted file mode 100644 index 87d6112..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_EA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_EC.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_EC.dat deleted file mode 100644 index cf07249..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_EC.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_ES.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_ES.dat deleted file mode 100644 index eac20c7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_ES.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_GQ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_GQ.dat deleted file mode 100644 index ac92c66..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_GQ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_GT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_GT.dat deleted file mode 100644 index fbf7e3a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_GT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_HN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_HN.dat deleted file mode 100644 index 936f30e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_HN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_IC.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_IC.dat deleted file mode 100644 index d7c402a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_IC.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_MX.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_MX.dat deleted file mode 100644 index 2623c03..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_MX.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_NI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_NI.dat deleted file mode 100644 index 9188ea9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_NI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_PA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_PA.dat deleted file mode 100644 index df98db7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_PA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_PE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_PE.dat deleted file mode 100644 index e758105..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_PE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_PH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_PH.dat deleted file mode 100644 index 0d0a835..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_PH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_PR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_PR.dat deleted file mode 100644 index 65806f2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_PR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_PY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_PY.dat deleted file mode 100644 index b3cc49e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_PY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_SV.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_SV.dat deleted file mode 100644 index cbeeaf3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_SV.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_US.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_US.dat deleted file mode 100644 index 0695183..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_US.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_UY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_UY.dat deleted file mode 100644 index 7ddaccd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_UY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/es_VE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/es_VE.dat deleted file mode 100644 index 1849ae6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/es_VE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/et.dat b/venv/lib/python3.7/site-packages/babel/locale-data/et.dat deleted file mode 100644 index 74256af..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/et.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/et_EE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/et_EE.dat deleted file mode 100644 index 788f6b9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/et_EE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/eu.dat b/venv/lib/python3.7/site-packages/babel/locale-data/eu.dat deleted file mode 100644 index ed142f0..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/eu.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/eu_ES.dat b/venv/lib/python3.7/site-packages/babel/locale-data/eu_ES.dat deleted file mode 100644 index 6337623..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/eu_ES.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ewo.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ewo.dat deleted file mode 100644 index c325827..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ewo.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ewo_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ewo_CM.dat deleted file mode 100644 index ae02897..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ewo_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fa.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fa.dat deleted file mode 100644 index dee5777..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fa.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fa_AF.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fa_AF.dat deleted file mode 100644 index 388d608..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fa_AF.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fa_IR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fa_IR.dat deleted file mode 100644 index 21c8849..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fa_IR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ff.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ff.dat deleted file mode 100644 index 275ff9e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ff.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn.dat deleted file mode 100644 index 8244228..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_BF.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_BF.dat deleted file mode 100644 index 2c80ac4..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_BF.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_CM.dat deleted file mode 100644 index 0ffce7d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_GH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_GH.dat deleted file mode 100644 index 6f403fb..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_GH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_GM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_GM.dat deleted file mode 100644 index 2ef732a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_GM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_GN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_GN.dat deleted file mode 100644 index af65220..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_GN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_GW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_GW.dat deleted file mode 100644 index cf96314..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_GW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_LR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_LR.dat deleted file mode 100644 index 8ca28bf..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_LR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_MR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_MR.dat deleted file mode 100644 index 712c716..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_MR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_NE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_NE.dat deleted file mode 100644 index d65b9e6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_NE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_NG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_NG.dat deleted file mode 100644 index aca62bd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_NG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_SL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_SL.dat deleted file mode 100644 index bd2c886..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_SL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_SN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_SN.dat deleted file mode 100644 index 5c0fd21..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ff_Latn_SN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fi.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fi.dat deleted file mode 100644 index 7ecae21..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fi.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fi_FI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fi_FI.dat deleted file mode 100644 index f70deae..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fi_FI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fil.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fil.dat deleted file mode 100644 index 4995b20..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fil.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fil_PH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fil_PH.dat deleted file mode 100644 index c2931e1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fil_PH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fo.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fo.dat deleted file mode 100644 index 310852d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fo.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fo_DK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fo_DK.dat deleted file mode 100644 index 0dcb324..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fo_DK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fo_FO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fo_FO.dat deleted file mode 100644 index a1e117a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fo_FO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr.dat deleted file mode 100644 index a75fc2b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_BE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_BE.dat deleted file mode 100644 index a5e77c6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_BE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_BF.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_BF.dat deleted file mode 100644 index 7f9435b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_BF.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_BI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_BI.dat deleted file mode 100644 index 03dbb03..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_BI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_BJ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_BJ.dat deleted file mode 100644 index a0376e8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_BJ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_BL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_BL.dat deleted file mode 100644 index b3cbdb2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_BL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_CA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_CA.dat deleted file mode 100644 index 35eb9f5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_CA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_CD.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_CD.dat deleted file mode 100644 index 34b82fe..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_CD.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_CF.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_CF.dat deleted file mode 100644 index 092805a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_CF.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_CG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_CG.dat deleted file mode 100644 index e9ba5b2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_CG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_CH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_CH.dat deleted file mode 100644 index 4f9d13a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_CH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_CI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_CI.dat deleted file mode 100644 index 1aa517c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_CI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_CM.dat deleted file mode 100644 index 01753c7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_DJ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_DJ.dat deleted file mode 100644 index 557274e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_DJ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_DZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_DZ.dat deleted file mode 100644 index b7e865c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_DZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_FR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_FR.dat deleted file mode 100644 index df56c01..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_FR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_GA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_GA.dat deleted file mode 100644 index 2782178..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_GA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_GF.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_GF.dat deleted file mode 100644 index 35321f2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_GF.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_GN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_GN.dat deleted file mode 100644 index e78c8ab..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_GN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_GP.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_GP.dat deleted file mode 100644 index 95913af..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_GP.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_GQ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_GQ.dat deleted file mode 100644 index 4723823..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_GQ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_HT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_HT.dat deleted file mode 100644 index 0c66f7b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_HT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_KM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_KM.dat deleted file mode 100644 index df08334..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_KM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_LU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_LU.dat deleted file mode 100644 index f2cc9c9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_LU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_MA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_MA.dat deleted file mode 100644 index c34484e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_MA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_MC.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_MC.dat deleted file mode 100644 index 8fc3cac..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_MC.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_MF.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_MF.dat deleted file mode 100644 index d455ea3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_MF.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_MG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_MG.dat deleted file mode 100644 index 1ec218e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_MG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_ML.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_ML.dat deleted file mode 100644 index aec1c29..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_ML.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_MQ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_MQ.dat deleted file mode 100644 index 67d699e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_MQ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_MR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_MR.dat deleted file mode 100644 index a1f5735..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_MR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_MU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_MU.dat deleted file mode 100644 index 1dd1253..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_MU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_NC.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_NC.dat deleted file mode 100644 index 0aef0bb..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_NC.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_NE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_NE.dat deleted file mode 100644 index ff1457f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_NE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_PF.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_PF.dat deleted file mode 100644 index e076480..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_PF.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_PM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_PM.dat deleted file mode 100644 index 78297da..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_PM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_RE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_RE.dat deleted file mode 100644 index e9444e9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_RE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_RW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_RW.dat deleted file mode 100644 index 67828ab..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_RW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_SC.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_SC.dat deleted file mode 100644 index 73c73de..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_SC.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_SN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_SN.dat deleted file mode 100644 index 8d906a2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_SN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_SY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_SY.dat deleted file mode 100644 index 65c5f4a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_SY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_TD.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_TD.dat deleted file mode 100644 index 62d8839..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_TD.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_TG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_TG.dat deleted file mode 100644 index b4db50c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_TG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_TN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_TN.dat deleted file mode 100644 index 8f5939f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_TN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_VU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_VU.dat deleted file mode 100644 index b59eb2a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_VU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_WF.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_WF.dat deleted file mode 100644 index ab4bd64..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_WF.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fr_YT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fr_YT.dat deleted file mode 100644 index be6a752..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fr_YT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fur.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fur.dat deleted file mode 100644 index 8344a47..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fur.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fur_IT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fur_IT.dat deleted file mode 100644 index 76dbd68..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fur_IT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fy.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fy.dat deleted file mode 100644 index dcecf47..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fy.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/fy_NL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/fy_NL.dat deleted file mode 100644 index 80465be..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/fy_NL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ga.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ga.dat deleted file mode 100644 index 4699dca..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ga.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ga_IE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ga_IE.dat deleted file mode 100644 index 6f60d19..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ga_IE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/gd.dat b/venv/lib/python3.7/site-packages/babel/locale-data/gd.dat deleted file mode 100644 index 28c65a2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/gd.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/gd_GB.dat b/venv/lib/python3.7/site-packages/babel/locale-data/gd_GB.dat deleted file mode 100644 index 7ac06e2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/gd_GB.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/gl.dat b/venv/lib/python3.7/site-packages/babel/locale-data/gl.dat deleted file mode 100644 index 4bdb5a6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/gl.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/gl_ES.dat b/venv/lib/python3.7/site-packages/babel/locale-data/gl_ES.dat deleted file mode 100644 index 8e4e537..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/gl_ES.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/gsw.dat b/venv/lib/python3.7/site-packages/babel/locale-data/gsw.dat deleted file mode 100644 index 58fd9dc..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/gsw.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/gsw_CH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/gsw_CH.dat deleted file mode 100644 index 0266ea2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/gsw_CH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/gsw_FR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/gsw_FR.dat deleted file mode 100644 index 16c8f85..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/gsw_FR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/gsw_LI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/gsw_LI.dat deleted file mode 100644 index 1688e16..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/gsw_LI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/gu.dat b/venv/lib/python3.7/site-packages/babel/locale-data/gu.dat deleted file mode 100644 index 2e04077..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/gu.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/gu_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/gu_IN.dat deleted file mode 100644 index f9b4ce3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/gu_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/guz.dat b/venv/lib/python3.7/site-packages/babel/locale-data/guz.dat deleted file mode 100644 index e082835..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/guz.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/guz_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/guz_KE.dat deleted file mode 100644 index 867742b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/guz_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/gv.dat b/venv/lib/python3.7/site-packages/babel/locale-data/gv.dat deleted file mode 100644 index 8047b86..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/gv.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/gv_IM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/gv_IM.dat deleted file mode 100644 index 306a5ac..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/gv_IM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ha.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ha.dat deleted file mode 100644 index 0cb81ad..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ha.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ha_GH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ha_GH.dat deleted file mode 100644 index f811720..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ha_GH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ha_NE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ha_NE.dat deleted file mode 100644 index a5df628..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ha_NE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ha_NG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ha_NG.dat deleted file mode 100644 index 2df3466..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ha_NG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/haw.dat b/venv/lib/python3.7/site-packages/babel/locale-data/haw.dat deleted file mode 100644 index 08064a9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/haw.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/haw_US.dat b/venv/lib/python3.7/site-packages/babel/locale-data/haw_US.dat deleted file mode 100644 index 0431b61..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/haw_US.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/he.dat b/venv/lib/python3.7/site-packages/babel/locale-data/he.dat deleted file mode 100644 index 25aaebd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/he.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/he_IL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/he_IL.dat deleted file mode 100644 index a35b0aa..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/he_IL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/hi.dat b/venv/lib/python3.7/site-packages/babel/locale-data/hi.dat deleted file mode 100644 index dc5d40d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/hi.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/hi_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/hi_IN.dat deleted file mode 100644 index d3db5bc..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/hi_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/hr.dat b/venv/lib/python3.7/site-packages/babel/locale-data/hr.dat deleted file mode 100644 index ae45629..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/hr.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/hr_BA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/hr_BA.dat deleted file mode 100644 index 97652f3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/hr_BA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/hr_HR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/hr_HR.dat deleted file mode 100644 index 6da5b24..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/hr_HR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/hsb.dat b/venv/lib/python3.7/site-packages/babel/locale-data/hsb.dat deleted file mode 100644 index a2b39e0..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/hsb.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/hsb_DE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/hsb_DE.dat deleted file mode 100644 index 2198923..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/hsb_DE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/hu.dat b/venv/lib/python3.7/site-packages/babel/locale-data/hu.dat deleted file mode 100644 index 64e8ada..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/hu.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/hu_HU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/hu_HU.dat deleted file mode 100644 index 6eb3be1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/hu_HU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/hy.dat b/venv/lib/python3.7/site-packages/babel/locale-data/hy.dat deleted file mode 100644 index 5f35ea9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/hy.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/hy_AM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/hy_AM.dat deleted file mode 100644 index edfdbdf..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/hy_AM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ia.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ia.dat deleted file mode 100644 index 606198e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ia.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ia_001.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ia_001.dat deleted file mode 100644 index 58ffad5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ia_001.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/id.dat b/venv/lib/python3.7/site-packages/babel/locale-data/id.dat deleted file mode 100644 index e0414a7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/id.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/id_ID.dat b/venv/lib/python3.7/site-packages/babel/locale-data/id_ID.dat deleted file mode 100644 index 0341a16..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/id_ID.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ig.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ig.dat deleted file mode 100644 index 8cfcfc2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ig.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ig_NG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ig_NG.dat deleted file mode 100644 index a8f2e1e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ig_NG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ii.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ii.dat deleted file mode 100644 index 7dcbadc..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ii.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ii_CN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ii_CN.dat deleted file mode 100644 index e36c92f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ii_CN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/is.dat b/venv/lib/python3.7/site-packages/babel/locale-data/is.dat deleted file mode 100644 index 79c813a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/is.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/is_IS.dat b/venv/lib/python3.7/site-packages/babel/locale-data/is_IS.dat deleted file mode 100644 index d67238a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/is_IS.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/it.dat b/venv/lib/python3.7/site-packages/babel/locale-data/it.dat deleted file mode 100644 index c1f9b3a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/it.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/it_CH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/it_CH.dat deleted file mode 100644 index c1420c8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/it_CH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/it_IT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/it_IT.dat deleted file mode 100644 index 14bd7ba..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/it_IT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/it_SM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/it_SM.dat deleted file mode 100644 index 05aeb4a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/it_SM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/it_VA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/it_VA.dat deleted file mode 100644 index a2eddcd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/it_VA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ja.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ja.dat deleted file mode 100644 index 85badc8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ja.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ja_JP.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ja_JP.dat deleted file mode 100644 index cdc05d9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ja_JP.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/jgo.dat b/venv/lib/python3.7/site-packages/babel/locale-data/jgo.dat deleted file mode 100644 index 95db38d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/jgo.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/jgo_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/jgo_CM.dat deleted file mode 100644 index ae2e49c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/jgo_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/jmc.dat b/venv/lib/python3.7/site-packages/babel/locale-data/jmc.dat deleted file mode 100644 index 76671bc..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/jmc.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/jmc_TZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/jmc_TZ.dat deleted file mode 100644 index d928798..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/jmc_TZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/jv.dat b/venv/lib/python3.7/site-packages/babel/locale-data/jv.dat deleted file mode 100644 index 71a9b98..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/jv.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/jv_ID.dat b/venv/lib/python3.7/site-packages/babel/locale-data/jv_ID.dat deleted file mode 100644 index 047a0e6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/jv_ID.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ka.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ka.dat deleted file mode 100644 index 1257781..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ka.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ka_GE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ka_GE.dat deleted file mode 100644 index 5c22f8d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ka_GE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kab.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kab.dat deleted file mode 100644 index 9f47600..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kab.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kab_DZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kab_DZ.dat deleted file mode 100644 index e2b2897..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kab_DZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kam.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kam.dat deleted file mode 100644 index b9cd452..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kam.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kam_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kam_KE.dat deleted file mode 100644 index 1943086..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kam_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kde.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kde.dat deleted file mode 100644 index 3ecb1ca..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kde.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kde_TZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kde_TZ.dat deleted file mode 100644 index d846f2f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kde_TZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kea.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kea.dat deleted file mode 100644 index 838bcd1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kea.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kea_CV.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kea_CV.dat deleted file mode 100644 index 555a0c6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kea_CV.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/khq.dat b/venv/lib/python3.7/site-packages/babel/locale-data/khq.dat deleted file mode 100644 index 15a66eb..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/khq.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/khq_ML.dat b/venv/lib/python3.7/site-packages/babel/locale-data/khq_ML.dat deleted file mode 100644 index 148aabd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/khq_ML.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ki.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ki.dat deleted file mode 100644 index 77ebee9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ki.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ki_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ki_KE.dat deleted file mode 100644 index dea0308..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ki_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kk.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kk.dat deleted file mode 100644 index ba71b13..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kk.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kk_KZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kk_KZ.dat deleted file mode 100644 index ef71e9e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kk_KZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kkj.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kkj.dat deleted file mode 100644 index b7252d7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kkj.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kkj_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kkj_CM.dat deleted file mode 100644 index b5706c6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kkj_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kl.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kl.dat deleted file mode 100644 index a1c45cc..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kl.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kl_GL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kl_GL.dat deleted file mode 100644 index 9ce15b1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kl_GL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kln.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kln.dat deleted file mode 100644 index 9dc3811..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kln.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kln_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kln_KE.dat deleted file mode 100644 index 9cf346f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kln_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/km.dat b/venv/lib/python3.7/site-packages/babel/locale-data/km.dat deleted file mode 100644 index 58f167f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/km.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/km_KH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/km_KH.dat deleted file mode 100644 index f63fbb3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/km_KH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kn.dat deleted file mode 100644 index d5a0f23..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kn_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kn_IN.dat deleted file mode 100644 index 765bcdf..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kn_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ko.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ko.dat deleted file mode 100644 index a9b6115..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ko.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ko_KP.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ko_KP.dat deleted file mode 100644 index eca1743..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ko_KP.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ko_KR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ko_KR.dat deleted file mode 100644 index 2ad65d1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ko_KR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kok.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kok.dat deleted file mode 100644 index 8d6c7f1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kok.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kok_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kok_IN.dat deleted file mode 100644 index 89c2a11..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kok_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ks.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ks.dat deleted file mode 100644 index 5ec89a9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ks.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ks_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ks_IN.dat deleted file mode 100644 index 333fb48..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ks_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ksb.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ksb.dat deleted file mode 100644 index 39ca1f7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ksb.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ksb_TZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ksb_TZ.dat deleted file mode 100644 index 30c4c72..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ksb_TZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ksf.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ksf.dat deleted file mode 100644 index b9a865d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ksf.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ksf_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ksf_CM.dat deleted file mode 100644 index 29e42a2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ksf_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ksh.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ksh.dat deleted file mode 100644 index 947bd07..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ksh.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ksh_DE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ksh_DE.dat deleted file mode 100644 index 46e7985..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ksh_DE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ku.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ku.dat deleted file mode 100644 index 2362a69..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ku.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ku_TR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ku_TR.dat deleted file mode 100644 index 7011391..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ku_TR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kw.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kw.dat deleted file mode 100644 index 31066f5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kw.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/kw_GB.dat b/venv/lib/python3.7/site-packages/babel/locale-data/kw_GB.dat deleted file mode 100644 index 1a9261c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/kw_GB.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ky.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ky.dat deleted file mode 100644 index 2d32c0c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ky.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ky_KG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ky_KG.dat deleted file mode 100644 index e8f789d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ky_KG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lag.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lag.dat deleted file mode 100644 index 627cefe..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lag.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lag_TZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lag_TZ.dat deleted file mode 100644 index 3d64c8f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lag_TZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lb.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lb.dat deleted file mode 100644 index c2e1036..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lb.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lb_LU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lb_LU.dat deleted file mode 100644 index c1f3fd6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lb_LU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lg.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lg.dat deleted file mode 100644 index 24aedfb..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lg.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lg_UG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lg_UG.dat deleted file mode 100644 index 155b632..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lg_UG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lkt.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lkt.dat deleted file mode 100644 index 6fb496c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lkt.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lkt_US.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lkt_US.dat deleted file mode 100644 index e131aa4..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lkt_US.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ln.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ln.dat deleted file mode 100644 index 9cfac75..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ln.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ln_AO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ln_AO.dat deleted file mode 100644 index 7e50779..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ln_AO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ln_CD.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ln_CD.dat deleted file mode 100644 index 21691e1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ln_CD.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ln_CF.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ln_CF.dat deleted file mode 100644 index 2fcb15b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ln_CF.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ln_CG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ln_CG.dat deleted file mode 100644 index 88e8a2e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ln_CG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lo.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lo.dat deleted file mode 100644 index a8ebb47..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lo.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lo_LA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lo_LA.dat deleted file mode 100644 index af0becd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lo_LA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lrc.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lrc.dat deleted file mode 100644 index 265420c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lrc.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lrc_IQ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lrc_IQ.dat deleted file mode 100644 index 55f1a8b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lrc_IQ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lrc_IR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lrc_IR.dat deleted file mode 100644 index 3318856..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lrc_IR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lt.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lt.dat deleted file mode 100644 index 8454f3b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lt.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lt_LT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lt_LT.dat deleted file mode 100644 index 3040fe9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lt_LT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lu.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lu.dat deleted file mode 100644 index 621da12..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lu.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lu_CD.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lu_CD.dat deleted file mode 100644 index 542c60b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lu_CD.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/luo.dat b/venv/lib/python3.7/site-packages/babel/locale-data/luo.dat deleted file mode 100644 index 1ca9e4b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/luo.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/luo_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/luo_KE.dat deleted file mode 100644 index 4f438dd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/luo_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/luy.dat b/venv/lib/python3.7/site-packages/babel/locale-data/luy.dat deleted file mode 100644 index 105d642..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/luy.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/luy_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/luy_KE.dat deleted file mode 100644 index 12e8896..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/luy_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lv.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lv.dat deleted file mode 100644 index c0155aa..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lv.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/lv_LV.dat b/venv/lib/python3.7/site-packages/babel/locale-data/lv_LV.dat deleted file mode 100644 index 83e04ec..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/lv_LV.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mas.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mas.dat deleted file mode 100644 index ae30ae7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mas.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mas_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mas_KE.dat deleted file mode 100644 index e7e9c93..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mas_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mas_TZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mas_TZ.dat deleted file mode 100644 index ddd16e8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mas_TZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mer.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mer.dat deleted file mode 100644 index 44ddeed..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mer.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mer_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mer_KE.dat deleted file mode 100644 index 1d4cec8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mer_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mfe.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mfe.dat deleted file mode 100644 index c3fc17f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mfe.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mfe_MU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mfe_MU.dat deleted file mode 100644 index d87e3ea..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mfe_MU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mg.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mg.dat deleted file mode 100644 index 7263726..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mg.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mg_MG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mg_MG.dat deleted file mode 100644 index 3b38771..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mg_MG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mgh.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mgh.dat deleted file mode 100644 index 56fb62f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mgh.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mgh_MZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mgh_MZ.dat deleted file mode 100644 index 525e6d1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mgh_MZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mgo.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mgo.dat deleted file mode 100644 index d206caf..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mgo.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mgo_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mgo_CM.dat deleted file mode 100644 index f9269a3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mgo_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mi.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mi.dat deleted file mode 100644 index 62204c8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mi.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mi_NZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mi_NZ.dat deleted file mode 100644 index 33ba8d1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mi_NZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mk.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mk.dat deleted file mode 100644 index 3d5e33d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mk.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mk_MK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mk_MK.dat deleted file mode 100644 index 974a3b7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mk_MK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ml.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ml.dat deleted file mode 100644 index 8f4cfc9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ml.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ml_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ml_IN.dat deleted file mode 100644 index 925c10d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ml_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mn.dat deleted file mode 100644 index 9027f83..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mn_MN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mn_MN.dat deleted file mode 100644 index c34265b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mn_MN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mr.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mr.dat deleted file mode 100644 index efa1ded..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mr.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mr_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mr_IN.dat deleted file mode 100644 index cd6a8cf..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mr_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ms.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ms.dat deleted file mode 100644 index 9f2f02d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ms.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ms_BN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ms_BN.dat deleted file mode 100644 index 72f48bd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ms_BN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ms_MY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ms_MY.dat deleted file mode 100644 index a95be5b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ms_MY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ms_SG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ms_SG.dat deleted file mode 100644 index 9517ef3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ms_SG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mt.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mt.dat deleted file mode 100644 index 8c7fe45..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mt.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mt_MT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mt_MT.dat deleted file mode 100644 index d17b1e4..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mt_MT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mua.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mua.dat deleted file mode 100644 index 12bf4e1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mua.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mua_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mua_CM.dat deleted file mode 100644 index 6ab7981..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mua_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/my.dat b/venv/lib/python3.7/site-packages/babel/locale-data/my.dat deleted file mode 100644 index bda667c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/my.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/my_MM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/my_MM.dat deleted file mode 100644 index 90e8b26..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/my_MM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mzn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mzn.dat deleted file mode 100644 index 7184c6c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mzn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/mzn_IR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/mzn_IR.dat deleted file mode 100644 index 05b93cb..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/mzn_IR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/naq.dat b/venv/lib/python3.7/site-packages/babel/locale-data/naq.dat deleted file mode 100644 index 8392db3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/naq.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/naq_NA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/naq_NA.dat deleted file mode 100644 index fbc77b9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/naq_NA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nb.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nb.dat deleted file mode 100644 index 7c1f69e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nb.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nb_NO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nb_NO.dat deleted file mode 100644 index 30ed114..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nb_NO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nb_SJ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nb_SJ.dat deleted file mode 100644 index 69fda37..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nb_SJ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nd.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nd.dat deleted file mode 100644 index 50a0c31..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nd.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nd_ZW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nd_ZW.dat deleted file mode 100644 index 30156c5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nd_ZW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nds.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nds.dat deleted file mode 100644 index 603c807..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nds.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nds_DE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nds_DE.dat deleted file mode 100644 index 37ae225..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nds_DE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nds_NL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nds_NL.dat deleted file mode 100644 index d0d48d7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nds_NL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ne.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ne.dat deleted file mode 100644 index 59c014e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ne.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ne_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ne_IN.dat deleted file mode 100644 index ff01846..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ne_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ne_NP.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ne_NP.dat deleted file mode 100644 index 27abb65..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ne_NP.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nl.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nl.dat deleted file mode 100644 index fddf6f3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nl.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nl_AW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nl_AW.dat deleted file mode 100644 index 6c9635e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nl_AW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nl_BE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nl_BE.dat deleted file mode 100644 index a102b92..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nl_BE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nl_BQ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nl_BQ.dat deleted file mode 100644 index 0385169..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nl_BQ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nl_CW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nl_CW.dat deleted file mode 100644 index 4db3854..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nl_CW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nl_NL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nl_NL.dat deleted file mode 100644 index 9772695..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nl_NL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nl_SR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nl_SR.dat deleted file mode 100644 index 8b3a239..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nl_SR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nl_SX.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nl_SX.dat deleted file mode 100644 index 3269133..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nl_SX.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nmg.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nmg.dat deleted file mode 100644 index 60c7bb3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nmg.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nmg_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nmg_CM.dat deleted file mode 100644 index 39e7af6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nmg_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nn.dat deleted file mode 100644 index ce89472..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nn_NO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nn_NO.dat deleted file mode 100644 index 4730a30..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nn_NO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nnh.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nnh.dat deleted file mode 100644 index 2b437d2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nnh.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nnh_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nnh_CM.dat deleted file mode 100644 index 80b5c73..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nnh_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nus.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nus.dat deleted file mode 100644 index 280ec1a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nus.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nus_SS.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nus_SS.dat deleted file mode 100644 index a0845c5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nus_SS.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nyn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nyn.dat deleted file mode 100644 index ef5bda0..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nyn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/nyn_UG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/nyn_UG.dat deleted file mode 100644 index 4ada4dc..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/nyn_UG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/om.dat b/venv/lib/python3.7/site-packages/babel/locale-data/om.dat deleted file mode 100644 index b275cff..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/om.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/om_ET.dat b/venv/lib/python3.7/site-packages/babel/locale-data/om_ET.dat deleted file mode 100644 index 7e0a1b2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/om_ET.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/om_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/om_KE.dat deleted file mode 100644 index 3cd023d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/om_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/or.dat b/venv/lib/python3.7/site-packages/babel/locale-data/or.dat deleted file mode 100644 index f361df2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/or.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/or_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/or_IN.dat deleted file mode 100644 index 041e5ca..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/or_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/os.dat b/venv/lib/python3.7/site-packages/babel/locale-data/os.dat deleted file mode 100644 index e1485e1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/os.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/os_GE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/os_GE.dat deleted file mode 100644 index d806181..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/os_GE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/os_RU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/os_RU.dat deleted file mode 100644 index c70bee3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/os_RU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pa.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pa.dat deleted file mode 100644 index 97f13f9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pa.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pa_Arab.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pa_Arab.dat deleted file mode 100644 index b12d4ba..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pa_Arab.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pa_Arab_PK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pa_Arab_PK.dat deleted file mode 100644 index 81dd396..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pa_Arab_PK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pa_Guru.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pa_Guru.dat deleted file mode 100644 index e431375..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pa_Guru.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pa_Guru_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pa_Guru_IN.dat deleted file mode 100644 index a780474..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pa_Guru_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pl.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pl.dat deleted file mode 100644 index 9c7109d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pl.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pl_PL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pl_PL.dat deleted file mode 100644 index a2f42c7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pl_PL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/prg.dat b/venv/lib/python3.7/site-packages/babel/locale-data/prg.dat deleted file mode 100644 index 44d3ebd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/prg.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/prg_001.dat b/venv/lib/python3.7/site-packages/babel/locale-data/prg_001.dat deleted file mode 100644 index 3fdc635..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/prg_001.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ps.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ps.dat deleted file mode 100644 index 1ea7469..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ps.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ps_AF.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ps_AF.dat deleted file mode 100644 index 192bcab..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ps_AF.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ps_PK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ps_PK.dat deleted file mode 100644 index 2ffc83f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ps_PK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pt.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pt.dat deleted file mode 100644 index 329295d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pt.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pt_AO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pt_AO.dat deleted file mode 100644 index 3b22b4a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pt_AO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pt_BR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pt_BR.dat deleted file mode 100644 index 55a1f4f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pt_BR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pt_CH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pt_CH.dat deleted file mode 100644 index abd0a97..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pt_CH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pt_CV.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pt_CV.dat deleted file mode 100644 index b245776..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pt_CV.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pt_GQ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pt_GQ.dat deleted file mode 100644 index c98db41..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pt_GQ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pt_GW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pt_GW.dat deleted file mode 100644 index 96d9a46..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pt_GW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pt_LU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pt_LU.dat deleted file mode 100644 index 14ef983..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pt_LU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pt_MO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pt_MO.dat deleted file mode 100644 index 955dae0..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pt_MO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pt_MZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pt_MZ.dat deleted file mode 100644 index 82125fa..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pt_MZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pt_PT.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pt_PT.dat deleted file mode 100644 index 0cc9fb2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pt_PT.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pt_ST.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pt_ST.dat deleted file mode 100644 index 03340e1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pt_ST.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/pt_TL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/pt_TL.dat deleted file mode 100644 index f6a45d2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/pt_TL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/qu.dat b/venv/lib/python3.7/site-packages/babel/locale-data/qu.dat deleted file mode 100644 index 96acf0b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/qu.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/qu_BO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/qu_BO.dat deleted file mode 100644 index 396b216..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/qu_BO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/qu_EC.dat b/venv/lib/python3.7/site-packages/babel/locale-data/qu_EC.dat deleted file mode 100644 index 77eca95..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/qu_EC.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/qu_PE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/qu_PE.dat deleted file mode 100644 index 76fd711..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/qu_PE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/rm.dat b/venv/lib/python3.7/site-packages/babel/locale-data/rm.dat deleted file mode 100644 index d8060af..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/rm.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/rm_CH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/rm_CH.dat deleted file mode 100644 index c46c2c4..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/rm_CH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/rn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/rn.dat deleted file mode 100644 index 3ed9f85..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/rn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/rn_BI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/rn_BI.dat deleted file mode 100644 index 1d649da..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/rn_BI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ro.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ro.dat deleted file mode 100644 index 68dff87..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ro.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ro_MD.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ro_MD.dat deleted file mode 100644 index e745f00..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ro_MD.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ro_RO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ro_RO.dat deleted file mode 100644 index 44dd2b2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ro_RO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/rof.dat b/venv/lib/python3.7/site-packages/babel/locale-data/rof.dat deleted file mode 100644 index 1f515a3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/rof.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/rof_TZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/rof_TZ.dat deleted file mode 100644 index 13bc7f4..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/rof_TZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/root.dat b/venv/lib/python3.7/site-packages/babel/locale-data/root.dat deleted file mode 100644 index 5263281..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/root.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ru.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ru.dat deleted file mode 100644 index fee711c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ru.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ru_BY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ru_BY.dat deleted file mode 100644 index 36c6314..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ru_BY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ru_KG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ru_KG.dat deleted file mode 100644 index 50204a8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ru_KG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ru_KZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ru_KZ.dat deleted file mode 100644 index ae30bc0..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ru_KZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ru_MD.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ru_MD.dat deleted file mode 100644 index 62ee52d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ru_MD.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ru_RU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ru_RU.dat deleted file mode 100644 index 89fdbf7..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ru_RU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ru_UA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ru_UA.dat deleted file mode 100644 index 9293d91..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ru_UA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/rw.dat b/venv/lib/python3.7/site-packages/babel/locale-data/rw.dat deleted file mode 100644 index 2448e16..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/rw.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/rw_RW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/rw_RW.dat deleted file mode 100644 index 5d715f2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/rw_RW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/rwk.dat b/venv/lib/python3.7/site-packages/babel/locale-data/rwk.dat deleted file mode 100644 index b710240..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/rwk.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/rwk_TZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/rwk_TZ.dat deleted file mode 100644 index dd017ce..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/rwk_TZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sah.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sah.dat deleted file mode 100644 index 3a33e76..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sah.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sah_RU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sah_RU.dat deleted file mode 100644 index 99b9342..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sah_RU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/saq.dat b/venv/lib/python3.7/site-packages/babel/locale-data/saq.dat deleted file mode 100644 index 7a42541..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/saq.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/saq_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/saq_KE.dat deleted file mode 100644 index 9a255bd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/saq_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sbp.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sbp.dat deleted file mode 100644 index 85ed51c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sbp.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sbp_TZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sbp_TZ.dat deleted file mode 100644 index 117fcb6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sbp_TZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sd.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sd.dat deleted file mode 100644 index f2d90f9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sd.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sd_PK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sd_PK.dat deleted file mode 100644 index 1edc415..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sd_PK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/se.dat b/venv/lib/python3.7/site-packages/babel/locale-data/se.dat deleted file mode 100644 index a79afe6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/se.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/se_FI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/se_FI.dat deleted file mode 100644 index 7b2969c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/se_FI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/se_NO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/se_NO.dat deleted file mode 100644 index 2de0d30..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/se_NO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/se_SE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/se_SE.dat deleted file mode 100644 index ab91dbd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/se_SE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/seh.dat b/venv/lib/python3.7/site-packages/babel/locale-data/seh.dat deleted file mode 100644 index 0083bc3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/seh.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/seh_MZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/seh_MZ.dat deleted file mode 100644 index 53442ff..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/seh_MZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ses.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ses.dat deleted file mode 100644 index 645e848..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ses.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ses_ML.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ses_ML.dat deleted file mode 100644 index ff4e931..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ses_ML.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sg.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sg.dat deleted file mode 100644 index 1277aca..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sg.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sg_CF.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sg_CF.dat deleted file mode 100644 index ade3002..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sg_CF.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/shi.dat b/venv/lib/python3.7/site-packages/babel/locale-data/shi.dat deleted file mode 100644 index b5694cc..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/shi.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/shi_Latn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/shi_Latn.dat deleted file mode 100644 index f65cf80..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/shi_Latn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/shi_Latn_MA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/shi_Latn_MA.dat deleted file mode 100644 index 1073962..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/shi_Latn_MA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/shi_Tfng.dat b/venv/lib/python3.7/site-packages/babel/locale-data/shi_Tfng.dat deleted file mode 100644 index 4c0a643..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/shi_Tfng.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/shi_Tfng_MA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/shi_Tfng_MA.dat deleted file mode 100644 index 1073962..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/shi_Tfng_MA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/si.dat b/venv/lib/python3.7/site-packages/babel/locale-data/si.dat deleted file mode 100644 index deaafdd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/si.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/si_LK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/si_LK.dat deleted file mode 100644 index 4a18b92..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/si_LK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sk.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sk.dat deleted file mode 100644 index c437fab..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sk.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sk_SK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sk_SK.dat deleted file mode 100644 index ec93bbc..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sk_SK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sl.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sl.dat deleted file mode 100644 index 22fff79..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sl.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sl_SI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sl_SI.dat deleted file mode 100644 index 6986634..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sl_SI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/smn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/smn.dat deleted file mode 100644 index 28a8336..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/smn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/smn_FI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/smn_FI.dat deleted file mode 100644 index e862633..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/smn_FI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sn.dat deleted file mode 100644 index 69d33a1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sn_ZW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sn_ZW.dat deleted file mode 100644 index 4b32b69..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sn_ZW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/so.dat b/venv/lib/python3.7/site-packages/babel/locale-data/so.dat deleted file mode 100644 index 010107f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/so.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/so_DJ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/so_DJ.dat deleted file mode 100644 index f4700b6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/so_DJ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/so_ET.dat b/venv/lib/python3.7/site-packages/babel/locale-data/so_ET.dat deleted file mode 100644 index acef668..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/so_ET.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/so_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/so_KE.dat deleted file mode 100644 index 9122f91..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/so_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/so_SO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/so_SO.dat deleted file mode 100644 index 4191a6a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/so_SO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sq.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sq.dat deleted file mode 100644 index f32f612..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sq.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sq_AL.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sq_AL.dat deleted file mode 100644 index c0680b3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sq_AL.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sq_MK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sq_MK.dat deleted file mode 100644 index 3ae7f80..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sq_MK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sq_XK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sq_XK.dat deleted file mode 100644 index 236227c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sq_XK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sr.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sr.dat deleted file mode 100644 index 62cabfb..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sr.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl.dat deleted file mode 100644 index b810cd9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl_BA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl_BA.dat deleted file mode 100644 index f51e54e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl_BA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl_ME.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl_ME.dat deleted file mode 100644 index aee3988..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl_ME.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl_RS.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl_RS.dat deleted file mode 100644 index 53395f2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl_RS.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl_XK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl_XK.dat deleted file mode 100644 index 3448206..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Cyrl_XK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn.dat deleted file mode 100644 index bd64672..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn_BA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn_BA.dat deleted file mode 100644 index 606a2fa..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn_BA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn_ME.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn_ME.dat deleted file mode 100644 index 00c6540..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn_ME.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn_RS.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn_RS.dat deleted file mode 100644 index 66a9852..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn_RS.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn_XK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn_XK.dat deleted file mode 100644 index 66e6371..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sr_Latn_XK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sv.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sv.dat deleted file mode 100644 index 6a04b1f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sv.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sv_AX.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sv_AX.dat deleted file mode 100644 index 3ea06d1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sv_AX.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sv_FI.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sv_FI.dat deleted file mode 100644 index 1dd845f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sv_FI.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sv_SE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sv_SE.dat deleted file mode 100644 index d9bd8b8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sv_SE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sw.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sw.dat deleted file mode 100644 index 104e054..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sw.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sw_CD.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sw_CD.dat deleted file mode 100644 index 81e4ac1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sw_CD.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sw_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sw_KE.dat deleted file mode 100644 index 188aa0e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sw_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sw_TZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sw_TZ.dat deleted file mode 100644 index 738d2f9..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sw_TZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/sw_UG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/sw_UG.dat deleted file mode 100644 index e910e3f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/sw_UG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ta.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ta.dat deleted file mode 100644 index 62b5df0..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ta.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ta_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ta_IN.dat deleted file mode 100644 index b49727e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ta_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ta_LK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ta_LK.dat deleted file mode 100644 index 8311aad..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ta_LK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ta_MY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ta_MY.dat deleted file mode 100644 index 94526ca..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ta_MY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ta_SG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ta_SG.dat deleted file mode 100644 index c960f96..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ta_SG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/te.dat b/venv/lib/python3.7/site-packages/babel/locale-data/te.dat deleted file mode 100644 index 0dfd39c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/te.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/te_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/te_IN.dat deleted file mode 100644 index 4277eda..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/te_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/teo.dat b/venv/lib/python3.7/site-packages/babel/locale-data/teo.dat deleted file mode 100644 index 0a78a12..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/teo.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/teo_KE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/teo_KE.dat deleted file mode 100644 index e2cae34..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/teo_KE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/teo_UG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/teo_UG.dat deleted file mode 100644 index 4aca272..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/teo_UG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/tg.dat b/venv/lib/python3.7/site-packages/babel/locale-data/tg.dat deleted file mode 100644 index c183809..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/tg.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/tg_TJ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/tg_TJ.dat deleted file mode 100644 index 723c733..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/tg_TJ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/th.dat b/venv/lib/python3.7/site-packages/babel/locale-data/th.dat deleted file mode 100644 index 6622d40..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/th.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/th_TH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/th_TH.dat deleted file mode 100644 index e67481e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/th_TH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ti.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ti.dat deleted file mode 100644 index 59b4979..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ti.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ti_ER.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ti_ER.dat deleted file mode 100644 index b35a22b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ti_ER.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ti_ET.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ti_ET.dat deleted file mode 100644 index ee1ced6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ti_ET.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/tk.dat b/venv/lib/python3.7/site-packages/babel/locale-data/tk.dat deleted file mode 100644 index a7a0487..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/tk.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/tk_TM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/tk_TM.dat deleted file mode 100644 index 33f97d1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/tk_TM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/to.dat b/venv/lib/python3.7/site-packages/babel/locale-data/to.dat deleted file mode 100644 index 9cf0b4f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/to.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/to_TO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/to_TO.dat deleted file mode 100644 index 8910e7c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/to_TO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/tr.dat b/venv/lib/python3.7/site-packages/babel/locale-data/tr.dat deleted file mode 100644 index 71d193f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/tr.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/tr_CY.dat b/venv/lib/python3.7/site-packages/babel/locale-data/tr_CY.dat deleted file mode 100644 index 7c40942..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/tr_CY.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/tr_TR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/tr_TR.dat deleted file mode 100644 index 569d59c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/tr_TR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/tt.dat b/venv/lib/python3.7/site-packages/babel/locale-data/tt.dat deleted file mode 100644 index db348ac..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/tt.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/tt_RU.dat b/venv/lib/python3.7/site-packages/babel/locale-data/tt_RU.dat deleted file mode 100644 index bd626ad..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/tt_RU.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/twq.dat b/venv/lib/python3.7/site-packages/babel/locale-data/twq.dat deleted file mode 100644 index e403edd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/twq.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/twq_NE.dat b/venv/lib/python3.7/site-packages/babel/locale-data/twq_NE.dat deleted file mode 100644 index 1f5c4f6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/twq_NE.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/tzm.dat b/venv/lib/python3.7/site-packages/babel/locale-data/tzm.dat deleted file mode 100644 index 0d1538a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/tzm.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/tzm_MA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/tzm_MA.dat deleted file mode 100644 index 55b3d11..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/tzm_MA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ug.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ug.dat deleted file mode 100644 index 135279d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ug.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ug_CN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ug_CN.dat deleted file mode 100644 index 69a52a6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ug_CN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/uk.dat b/venv/lib/python3.7/site-packages/babel/locale-data/uk.dat deleted file mode 100644 index 2ed70f6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/uk.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/uk_UA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/uk_UA.dat deleted file mode 100644 index 9d19348..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/uk_UA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ur.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ur.dat deleted file mode 100644 index 6c1bee3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ur.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ur_IN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ur_IN.dat deleted file mode 100644 index db7a827..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ur_IN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/ur_PK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/ur_PK.dat deleted file mode 100644 index d0a15e0..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/ur_PK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/uz.dat b/venv/lib/python3.7/site-packages/babel/locale-data/uz.dat deleted file mode 100644 index 65cc8fb..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/uz.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/uz_Arab.dat b/venv/lib/python3.7/site-packages/babel/locale-data/uz_Arab.dat deleted file mode 100644 index da46271..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/uz_Arab.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/uz_Arab_AF.dat b/venv/lib/python3.7/site-packages/babel/locale-data/uz_Arab_AF.dat deleted file mode 100644 index d87c70a..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/uz_Arab_AF.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/uz_Cyrl.dat b/venv/lib/python3.7/site-packages/babel/locale-data/uz_Cyrl.dat deleted file mode 100644 index ff9341e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/uz_Cyrl.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/uz_Cyrl_UZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/uz_Cyrl_UZ.dat deleted file mode 100644 index ec69b3b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/uz_Cyrl_UZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/uz_Latn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/uz_Latn.dat deleted file mode 100644 index 25c6f44..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/uz_Latn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/uz_Latn_UZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/uz_Latn_UZ.dat deleted file mode 100644 index 9a501d5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/uz_Latn_UZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/vai.dat b/venv/lib/python3.7/site-packages/babel/locale-data/vai.dat deleted file mode 100644 index e0742aa..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/vai.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/vai_Latn.dat b/venv/lib/python3.7/site-packages/babel/locale-data/vai_Latn.dat deleted file mode 100644 index 0c066f2..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/vai_Latn.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/vai_Latn_LR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/vai_Latn_LR.dat deleted file mode 100644 index 711221d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/vai_Latn_LR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/vai_Vaii.dat b/venv/lib/python3.7/site-packages/babel/locale-data/vai_Vaii.dat deleted file mode 100644 index 2bcd9ff..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/vai_Vaii.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/vai_Vaii_LR.dat b/venv/lib/python3.7/site-packages/babel/locale-data/vai_Vaii_LR.dat deleted file mode 100644 index 711221d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/vai_Vaii_LR.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/vi.dat b/venv/lib/python3.7/site-packages/babel/locale-data/vi.dat deleted file mode 100644 index 9d17320..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/vi.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/vi_VN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/vi_VN.dat deleted file mode 100644 index bbb27ca..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/vi_VN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/vo.dat b/venv/lib/python3.7/site-packages/babel/locale-data/vo.dat deleted file mode 100644 index b49b93f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/vo.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/vo_001.dat b/venv/lib/python3.7/site-packages/babel/locale-data/vo_001.dat deleted file mode 100644 index d4d189d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/vo_001.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/vun.dat b/venv/lib/python3.7/site-packages/babel/locale-data/vun.dat deleted file mode 100644 index 68621b3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/vun.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/vun_TZ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/vun_TZ.dat deleted file mode 100644 index dbdd1f1..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/vun_TZ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/wae.dat b/venv/lib/python3.7/site-packages/babel/locale-data/wae.dat deleted file mode 100644 index 0b00667..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/wae.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/wae_CH.dat b/venv/lib/python3.7/site-packages/babel/locale-data/wae_CH.dat deleted file mode 100644 index dd61695..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/wae_CH.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/wo.dat b/venv/lib/python3.7/site-packages/babel/locale-data/wo.dat deleted file mode 100644 index 0e76352..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/wo.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/wo_SN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/wo_SN.dat deleted file mode 100644 index 790f0d6..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/wo_SN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/xh.dat b/venv/lib/python3.7/site-packages/babel/locale-data/xh.dat deleted file mode 100644 index 8066241..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/xh.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/xh_ZA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/xh_ZA.dat deleted file mode 100644 index f2654e8..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/xh_ZA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/xog.dat b/venv/lib/python3.7/site-packages/babel/locale-data/xog.dat deleted file mode 100644 index 982a413..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/xog.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/xog_UG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/xog_UG.dat deleted file mode 100644 index d445f5d..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/xog_UG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/yav.dat b/venv/lib/python3.7/site-packages/babel/locale-data/yav.dat deleted file mode 100644 index 900801c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/yav.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/yav_CM.dat b/venv/lib/python3.7/site-packages/babel/locale-data/yav_CM.dat deleted file mode 100644 index f651603..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/yav_CM.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/yi.dat b/venv/lib/python3.7/site-packages/babel/locale-data/yi.dat deleted file mode 100644 index 21dfbbe..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/yi.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/yi_001.dat b/venv/lib/python3.7/site-packages/babel/locale-data/yi_001.dat deleted file mode 100644 index e708489..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/yi_001.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/yo.dat b/venv/lib/python3.7/site-packages/babel/locale-data/yo.dat deleted file mode 100644 index 925ed4c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/yo.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/yo_BJ.dat b/venv/lib/python3.7/site-packages/babel/locale-data/yo_BJ.dat deleted file mode 100644 index b2dfb94..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/yo_BJ.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/yo_NG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/yo_NG.dat deleted file mode 100644 index 33d975c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/yo_NG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/yue.dat b/venv/lib/python3.7/site-packages/babel/locale-data/yue.dat deleted file mode 100644 index 0145d26..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/yue.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/yue_Hans.dat b/venv/lib/python3.7/site-packages/babel/locale-data/yue_Hans.dat deleted file mode 100644 index 218c19b..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/yue_Hans.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/yue_Hans_CN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/yue_Hans_CN.dat deleted file mode 100644 index d21bf88..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/yue_Hans_CN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/yue_Hant.dat b/venv/lib/python3.7/site-packages/babel/locale-data/yue_Hant.dat deleted file mode 100644 index 5cbcda5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/yue_Hant.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/yue_Hant_HK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/yue_Hant_HK.dat deleted file mode 100644 index 97333e3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/yue_Hant_HK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/zgh.dat b/venv/lib/python3.7/site-packages/babel/locale-data/zgh.dat deleted file mode 100644 index 963ba8f..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/zgh.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/zgh_MA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/zgh_MA.dat deleted file mode 100644 index cee3f29..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/zgh_MA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/zh.dat b/venv/lib/python3.7/site-packages/babel/locale-data/zh.dat deleted file mode 100644 index cb52d1e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/zh.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans.dat b/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans.dat deleted file mode 100644 index 51ccaae..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans_CN.dat b/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans_CN.dat deleted file mode 100644 index e7ea9ee..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans_CN.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans_HK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans_HK.dat deleted file mode 100644 index dcca9b3..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans_HK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans_MO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans_MO.dat deleted file mode 100644 index 743f987..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans_MO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans_SG.dat b/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans_SG.dat deleted file mode 100644 index 91d72c5..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hans_SG.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hant.dat b/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hant.dat deleted file mode 100644 index 63f3b72..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hant.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hant_HK.dat b/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hant_HK.dat deleted file mode 100644 index 2b6ae0c..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hant_HK.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hant_MO.dat b/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hant_MO.dat deleted file mode 100644 index ce036cd..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hant_MO.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hant_TW.dat b/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hant_TW.dat deleted file mode 100644 index be9cd1e..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/zh_Hant_TW.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/zu.dat b/venv/lib/python3.7/site-packages/babel/locale-data/zu.dat deleted file mode 100644 index 24a8517..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/zu.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/locale-data/zu_ZA.dat b/venv/lib/python3.7/site-packages/babel/locale-data/zu_ZA.dat deleted file mode 100644 index 70bc467..0000000 Binary files a/venv/lib/python3.7/site-packages/babel/locale-data/zu_ZA.dat and /dev/null differ diff --git a/venv/lib/python3.7/site-packages/babel/localedata.py b/venv/lib/python3.7/site-packages/babel/localedata.py deleted file mode 100644 index e012abb..0000000 --- a/venv/lib/python3.7/site-packages/babel/localedata.py +++ /dev/null @@ -1,238 +0,0 @@ -# -*- coding: utf-8 -*- -""" - babel.localedata - ~~~~~~~~~~~~~~~~ - - Low-level locale data access. - - :note: The `Locale` class, which uses this module under the hood, provides a - more convenient interface for accessing the locale data. - - :copyright: (c) 2013-2019 by the Babel Team. - :license: BSD, see LICENSE for more details. -""" - -import os -import threading -from itertools import chain - -from babel._compat import pickle, string_types, abc - - -_cache = {} -_cache_lock = threading.RLock() -_dirname = os.path.join(os.path.dirname(__file__), 'locale-data') - - -def normalize_locale(name): - """Normalize a locale ID by stripping spaces and apply proper casing. - - Returns the normalized locale ID string or `None` if the ID is not - recognized. - """ - if not name or not isinstance(name, string_types): - return None - name = name.strip().lower() - for locale_id in chain.from_iterable([_cache, locale_identifiers()]): - if name == locale_id.lower(): - return locale_id - - -def exists(name): - """Check whether locale data is available for the given locale. - - Returns `True` if it exists, `False` otherwise. - - :param name: the locale identifier string - """ - if not name or not isinstance(name, string_types): - return False - if name in _cache: - return True - file_found = os.path.exists(os.path.join(_dirname, '%s.dat' % name)) - return True if file_found else bool(normalize_locale(name)) - - -def locale_identifiers(): - """Return a list of all locale identifiers for which locale data is - available. - - This data is cached after the first invocation in `locale_identifiers.cache`. - - Removing the `locale_identifiers.cache` attribute or setting it to `None` - will cause this function to re-read the list from disk. - - .. versionadded:: 0.8.1 - - :return: a list of locale identifiers (strings) - """ - data = getattr(locale_identifiers, 'cache', None) - if data is None: - locale_identifiers.cache = data = [ - stem - for stem, extension in - (os.path.splitext(filename) for filename in os.listdir(_dirname)) - if extension == '.dat' and stem != 'root' - ] - return data - - -def load(name, merge_inherited=True): - """Load the locale data for the given locale. - - The locale data is a dictionary that contains much of the data defined by - the Common Locale Data Repository (CLDR). This data is stored as a - collection of pickle files inside the ``babel`` package. - - >>> d = load('en_US') - >>> d['languages']['sv'] - u'Swedish' - - Note that the results are cached, and subsequent requests for the same - locale return the same dictionary: - - >>> d1 = load('en_US') - >>> d2 = load('en_US') - >>> d1 is d2 - True - - :param name: the locale identifier string (or "root") - :param merge_inherited: whether the inherited data should be merged into - the data of the requested locale - :raise `IOError`: if no locale data file is found for the given locale - identifer, or one of the locales it inherits from - """ - _cache_lock.acquire() - try: - data = _cache.get(name) - if not data: - # Load inherited data - if name == 'root' or not merge_inherited: - data = {} - else: - from babel.core import get_global - parent = get_global('parent_exceptions').get(name) - if not parent: - parts = name.split('_') - if len(parts) == 1: - parent = 'root' - else: - parent = '_'.join(parts[:-1]) - data = load(parent).copy() - filename = os.path.join(_dirname, '%s.dat' % name) - with open(filename, 'rb') as fileobj: - if name != 'root' and merge_inherited: - merge(data, pickle.load(fileobj)) - else: - data = pickle.load(fileobj) - _cache[name] = data - return data - finally: - _cache_lock.release() - - -def merge(dict1, dict2): - """Merge the data from `dict2` into the `dict1` dictionary, making copies - of nested dictionaries. - - >>> d = {1: 'foo', 3: 'baz'} - >>> merge(d, {1: 'Foo', 2: 'Bar'}) - >>> sorted(d.items()) - [(1, 'Foo'), (2, 'Bar'), (3, 'baz')] - - :param dict1: the dictionary to merge into - :param dict2: the dictionary containing the data that should be merged - """ - for key, val2 in dict2.items(): - if val2 is not None: - val1 = dict1.get(key) - if isinstance(val2, dict): - if val1 is None: - val1 = {} - if isinstance(val1, Alias): - val1 = (val1, val2) - elif isinstance(val1, tuple): - alias, others = val1 - others = others.copy() - merge(others, val2) - val1 = (alias, others) - else: - val1 = val1.copy() - merge(val1, val2) - else: - val1 = val2 - dict1[key] = val1 - - -class Alias(object): - """Representation of an alias in the locale data. - - An alias is a value that refers to some other part of the locale data, - as specified by the `keys`. - """ - - def __init__(self, keys): - self.keys = tuple(keys) - - def __repr__(self): - return '<%s %r>' % (type(self).__name__, self.keys) - - def resolve(self, data): - """Resolve the alias based on the given data. - - This is done recursively, so if one alias resolves to a second alias, - that second alias will also be resolved. - - :param data: the locale data - :type data: `dict` - """ - base = data - for key in self.keys: - data = data[key] - if isinstance(data, Alias): - data = data.resolve(base) - elif isinstance(data, tuple): - alias, others = data - data = alias.resolve(base) - return data - - -class LocaleDataDict(abc.MutableMapping): - """Dictionary wrapper that automatically resolves aliases to the actual - values. - """ - - def __init__(self, data, base=None): - self._data = data - if base is None: - base = data - self.base = base - - def __len__(self): - return len(self._data) - - def __iter__(self): - return iter(self._data) - - def __getitem__(self, key): - orig = val = self._data[key] - if isinstance(val, Alias): # resolve an alias - val = val.resolve(self.base) - if isinstance(val, tuple): # Merge a partial dict with an alias - alias, others = val - val = alias.resolve(self.base).copy() - merge(val, others) - if type(val) is dict: # Return a nested alias-resolving dict - val = LocaleDataDict(val, base=self.base) - if val is not orig: - self._data[key] = val - return val - - def __setitem__(self, key, value): - self._data[key] = value - - def __delitem__(self, key): - del self._data[key] - - def copy(self): - return LocaleDataDict(self._data.copy(), base=self.base) diff --git a/venv/lib/python3.7/site-packages/babel/localtime/__init__.py b/venv/lib/python3.7/site-packages/babel/localtime/__init__.py deleted file mode 100644 index aefd8a3..0000000 --- a/venv/lib/python3.7/site-packages/babel/localtime/__init__.py +++ /dev/null @@ -1,76 +0,0 @@ -# -*- coding: utf-8 -*- -""" - babel.localtime - ~~~~~~~~~~~~~~~ - - Babel specific fork of tzlocal to determine the local timezone - of the system. - - :copyright: (c) 2013-2019 by the Babel Team. - :license: BSD, see LICENSE for more details. -""" - -import sys -import pytz -import time -from datetime import timedelta -from datetime import tzinfo -from threading import RLock - -if sys.platform == 'win32': - from babel.localtime._win32 import _get_localzone -else: - from babel.localtime._unix import _get_localzone - - -_cached_tz = None -_cache_lock = RLock() - -STDOFFSET = timedelta(seconds=-time.timezone) -if time.daylight: - DSTOFFSET = timedelta(seconds=-time.altzone) -else: - DSTOFFSET = STDOFFSET - -DSTDIFF = DSTOFFSET - STDOFFSET -ZERO = timedelta(0) - - -class _FallbackLocalTimezone(tzinfo): - - def utcoffset(self, dt): - if self._isdst(dt): - return DSTOFFSET - else: - return STDOFFSET - - def dst(self, dt): - if self._isdst(dt): - return DSTDIFF - else: - return ZERO - - def tzname(self, dt): - return time.tzname[self._isdst(dt)] - - def _isdst(self, dt): - tt = (dt.year, dt.month, dt.day, - dt.hour, dt.minute, dt.second, - dt.weekday(), 0, -1) - stamp = time.mktime(tt) - tt = time.localtime(stamp) - return tt.tm_isdst > 0 - - -def get_localzone(): - """Returns the current underlying local timezone object. - Generally this function does not need to be used, it's a - better idea to use the :data:`LOCALTZ` singleton instead. - """ - return _get_localzone() - - -try: - LOCALTZ = get_localzone() -except pytz.UnknownTimeZoneError: - LOCALTZ = _FallbackLocalTimezone() diff --git a/venv/lib/python3.7/site-packages/babel/localtime/_unix.py b/venv/lib/python3.7/site-packages/babel/localtime/_unix.py deleted file mode 100644 index c219469..0000000 --- a/venv/lib/python3.7/site-packages/babel/localtime/_unix.py +++ /dev/null @@ -1,128 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import with_statement -import os -import re -import sys -import pytz -import subprocess - -_systemconfig_tz = re.compile(r'^Time Zone: (.*)$', re.MULTILINE) - - -def _tz_from_env(tzenv): - if tzenv[0] == ':': - tzenv = tzenv[1:] - - # TZ specifies a file - if os.path.exists(tzenv): - with open(tzenv, 'rb') as tzfile: - return pytz.tzfile.build_tzinfo('local', tzfile) - - # TZ specifies a zoneinfo zone. - try: - tz = pytz.timezone(tzenv) - # That worked, so we return this: - return tz - except pytz.UnknownTimeZoneError: - raise pytz.UnknownTimeZoneError( - "tzlocal() does not support non-zoneinfo timezones like %s. \n" - "Please use a timezone in the form of Continent/City") - - -def _get_localzone(_root='/'): - """Tries to find the local timezone configuration. - This method prefers finding the timezone name and passing that to pytz, - over passing in the localtime file, as in the later case the zoneinfo - name is unknown. - The parameter _root makes the function look for files like /etc/localtime - beneath the _root directory. This is primarily used by the tests. - In normal usage you call the function without parameters. - """ - - tzenv = os.environ.get('TZ') - if tzenv: - return _tz_from_env(tzenv) - - # This is actually a pretty reliable way to test for the local time - # zone on operating systems like OS X. On OS X especially this is the - # only one that actually works. - try: - link_dst = os.readlink('/etc/localtime') - except OSError: - pass - else: - pos = link_dst.find('/zoneinfo/') - if pos >= 0: - zone_name = link_dst[pos + 10:] - try: - return pytz.timezone(zone_name) - except pytz.UnknownTimeZoneError: - pass - - # If we are on OS X now we are pretty sure that the rest of the - # code will fail and just fall through until it hits the reading - # of /etc/localtime and using it without name. At this point we - # can invoke systemconfig which internally invokes ICU. ICU itself - # does the same thing we do (readlink + compare file contents) but - # since it knows where the zone files are that should be a bit - # better than reimplementing the logic here. - if sys.platform == 'darwin': - c = subprocess.Popen(['systemsetup', '-gettimezone'], - stdout=subprocess.PIPE) - sys_result = c.communicate()[0] - c.wait() - tz_match = _systemconfig_tz.search(sys_result) - if tz_match is not None: - zone_name = tz_match.group(1) - try: - return pytz.timezone(zone_name) - except pytz.UnknownTimeZoneError: - pass - - # Now look for distribution specific configuration files - # that contain the timezone name. - tzpath = os.path.join(_root, 'etc/timezone') - if os.path.exists(tzpath): - with open(tzpath, 'rb') as tzfile: - data = tzfile.read() - - # Issue #3 in tzlocal was that /etc/timezone was a zoneinfo file. - # That's a misconfiguration, but we need to handle it gracefully: - if data[:5] != b'TZif2': - etctz = data.strip().decode() - # Get rid of host definitions and comments: - if ' ' in etctz: - etctz, dummy = etctz.split(' ', 1) - if '#' in etctz: - etctz, dummy = etctz.split('#', 1) - return pytz.timezone(etctz.replace(' ', '_')) - - # CentOS has a ZONE setting in /etc/sysconfig/clock, - # OpenSUSE has a TIMEZONE setting in /etc/sysconfig/clock and - # Gentoo has a TIMEZONE setting in /etc/conf.d/clock - # We look through these files for a timezone: - timezone_re = re.compile(r'\s*(TIME)?ZONE\s*=\s*"(?P.+)"') - - for filename in ('etc/sysconfig/clock', 'etc/conf.d/clock'): - tzpath = os.path.join(_root, filename) - if not os.path.exists(tzpath): - continue - with open(tzpath, 'rt') as tzfile: - for line in tzfile: - match = timezone_re.match(line) - if match is not None: - # We found a timezone - etctz = match.group("etctz") - return pytz.timezone(etctz.replace(' ', '_')) - - # No explicit setting existed. Use localtime - for filename in ('etc/localtime', 'usr/local/etc/localtime'): - tzpath = os.path.join(_root, filename) - - if not os.path.exists(tzpath): - continue - - with open(tzpath, 'rb') as tzfile: - return pytz.tzfile.build_tzinfo('local', tzfile) - - raise pytz.UnknownTimeZoneError('Can not find any timezone configuration') diff --git a/venv/lib/python3.7/site-packages/babel/localtime/_win32.py b/venv/lib/python3.7/site-packages/babel/localtime/_win32.py deleted file mode 100644 index 65cc088..0000000 --- a/venv/lib/python3.7/site-packages/babel/localtime/_win32.py +++ /dev/null @@ -1,96 +0,0 @@ -try: - import _winreg as winreg -except ImportError: - try: - import winreg - except ImportError: - winreg = None - -from babel.core import get_global -import pytz - - -# When building the cldr data on windows this module gets imported. -# Because at that point there is no global.dat yet this call will -# fail. We want to catch it down in that case then and just assume -# the mapping was empty. -try: - tz_names = get_global('windows_zone_mapping') -except RuntimeError: - tz_names = {} - - -def valuestodict(key): - """Convert a registry key's values to a dictionary.""" - dict = {} - size = winreg.QueryInfoKey(key)[1] - for i in range(size): - data = winreg.EnumValue(key, i) - dict[data[0]] = data[1] - return dict - - -def get_localzone_name(): - # Windows is special. It has unique time zone names (in several - # meanings of the word) available, but unfortunately, they can be - # translated to the language of the operating system, so we need to - # do a backwards lookup, by going through all time zones and see which - # one matches. - handle = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) - - TZLOCALKEYNAME = r'SYSTEM\CurrentControlSet\Control\TimeZoneInformation' - localtz = winreg.OpenKey(handle, TZLOCALKEYNAME) - keyvalues = valuestodict(localtz) - localtz.Close() - if 'TimeZoneKeyName' in keyvalues: - # Windows 7 (and Vista?) - - # For some reason this returns a string with loads of NUL bytes at - # least on some systems. I don't know if this is a bug somewhere, I - # just work around it. - tzkeyname = keyvalues['TimeZoneKeyName'].split('\x00', 1)[0] - else: - # Windows 2000 or XP - - # This is the localized name: - tzwin = keyvalues['StandardName'] - - # Open the list of timezones to look up the real name: - TZKEYNAME = r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones' - tzkey = winreg.OpenKey(handle, TZKEYNAME) - - # Now, match this value to Time Zone information - tzkeyname = None - for i in range(winreg.QueryInfoKey(tzkey)[0]): - subkey = winreg.EnumKey(tzkey, i) - sub = winreg.OpenKey(tzkey, subkey) - data = valuestodict(sub) - sub.Close() - if data.get('Std', None) == tzwin: - tzkeyname = subkey - break - - tzkey.Close() - handle.Close() - - if tzkeyname is None: - raise LookupError('Can not find Windows timezone configuration') - - timezone = tz_names.get(tzkeyname) - if timezone is None: - # Nope, that didn't work. Try adding 'Standard Time', - # it seems to work a lot of times: - timezone = tz_names.get(tzkeyname + ' Standard Time') - - # Return what we have. - if timezone is None: - raise pytz.UnknownTimeZoneError('Can not find timezone ' + tzkeyname) - - return timezone - - -def _get_localzone(): - if winreg is None: - raise pytz.UnknownTimeZoneError( - 'Runtime support not available') - return pytz.timezone(get_localzone_name()) diff --git a/venv/lib/python3.7/site-packages/babel/messages/__init__.py b/venv/lib/python3.7/site-packages/babel/messages/__init__.py deleted file mode 100644 index 5b69675..0000000 --- a/venv/lib/python3.7/site-packages/babel/messages/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# -*- coding: utf-8 -*- -""" - babel.messages - ~~~~~~~~~~~~~~ - - Support for ``gettext`` message catalogs. - - :copyright: (c) 2013-2019 by the Babel Team. - :license: BSD, see LICENSE for more details. -""" - -from babel.messages.catalog import * diff --git a/venv/lib/python3.7/site-packages/babel/messages/catalog.py b/venv/lib/python3.7/site-packages/babel/messages/catalog.py deleted file mode 100644 index 2fcb461..0000000 --- a/venv/lib/python3.7/site-packages/babel/messages/catalog.py +++ /dev/null @@ -1,851 +0,0 @@ -# -*- coding: utf-8 -*- -""" - babel.messages.catalog - ~~~~~~~~~~~~~~~~~~~~~~ - - Data structures for message catalogs. - - :copyright: (c) 2013-2019 by the Babel Team. - :license: BSD, see LICENSE for more details. -""" - -import re -import time - -from cgi import parse_header -from collections import OrderedDict -from datetime import datetime, time as time_ -from difflib import get_close_matches -from email import message_from_string -from copy import copy - -from babel import __version__ as VERSION -from babel.core import Locale, UnknownLocaleError -from babel.dates import format_datetime -from babel.messages.plurals import get_plural -from babel.util import distinct, LOCALTZ, FixedOffsetTimezone -from babel._compat import string_types, number_types, PY2, cmp, text_type, force_text - -__all__ = ['Message', 'Catalog', 'TranslationError'] - - -PYTHON_FORMAT = re.compile(r''' - \% - (?:\(([\w]*)\))? - ( - [-#0\ +]?(?:\*|[\d]+)? - (?:\.(?:\*|[\d]+))? - [hlL]? - ) - ([diouxXeEfFgGcrs%]) -''', re.VERBOSE) - - -def _parse_datetime_header(value): - match = re.match(r'^(?P.*?)(?P[+-]\d{4})?$', value) - - tt = time.strptime(match.group('datetime'), '%Y-%m-%d %H:%M') - ts = time.mktime(tt) - dt = datetime.fromtimestamp(ts) - - # Separate the offset into a sign component, hours, and # minutes - tzoffset = match.group('tzoffset') - if tzoffset is not None: - plus_minus_s, rest = tzoffset[0], tzoffset[1:] - hours_offset_s, mins_offset_s = rest[:2], rest[2:] - - # Make them all integers - plus_minus = int(plus_minus_s + '1') - hours_offset = int(hours_offset_s) - mins_offset = int(mins_offset_s) - - # Calculate net offset - net_mins_offset = hours_offset * 60 - net_mins_offset += mins_offset - net_mins_offset *= plus_minus - - # Create an offset object - tzoffset = FixedOffsetTimezone(net_mins_offset) - - # Store the offset in a datetime object - dt = dt.replace(tzinfo=tzoffset) - - return dt - - -class Message(object): - """Representation of a single message in a catalog.""" - - def __init__(self, id, string=u'', locations=(), flags=(), auto_comments=(), - user_comments=(), previous_id=(), lineno=None, context=None): - """Create the message object. - - :param id: the message ID, or a ``(singular, plural)`` tuple for - pluralizable messages - :param string: the translated message string, or a - ``(singular, plural)`` tuple for pluralizable messages - :param locations: a sequence of ``(filename, lineno)`` tuples - :param flags: a set or sequence of flags - :param auto_comments: a sequence of automatic comments for the message - :param user_comments: a sequence of user comments for the message - :param previous_id: the previous message ID, or a ``(singular, plural)`` - tuple for pluralizable messages - :param lineno: the line number on which the msgid line was found in the - PO file, if any - :param context: the message context - """ - self.id = id - if not string and self.pluralizable: - string = (u'', u'') - self.string = string - self.locations = list(distinct(locations)) - self.flags = set(flags) - if id and self.python_format: - self.flags.add('python-format') - else: - self.flags.discard('python-format') - self.auto_comments = list(distinct(auto_comments)) - self.user_comments = list(distinct(user_comments)) - if isinstance(previous_id, string_types): - self.previous_id = [previous_id] - else: - self.previous_id = list(previous_id) - self.lineno = lineno - self.context = context - - def __repr__(self): - return '<%s %r (flags: %r)>' % (type(self).__name__, self.id, - list(self.flags)) - - def __cmp__(self, other): - """Compare Messages, taking into account plural ids""" - def values_to_compare(obj): - if isinstance(obj, Message) and obj.pluralizable: - return obj.id[0], obj.context or '' - return obj.id, obj.context or '' - return cmp(values_to_compare(self), values_to_compare(other)) - - def __gt__(self, other): - return self.__cmp__(other) > 0 - - def __lt__(self, other): - return self.__cmp__(other) < 0 - - def __ge__(self, other): - return self.__cmp__(other) >= 0 - - def __le__(self, other): - return self.__cmp__(other) <= 0 - - def __eq__(self, other): - return self.__cmp__(other) == 0 - - def __ne__(self, other): - return self.__cmp__(other) != 0 - - def clone(self): - return Message(*map(copy, (self.id, self.string, self.locations, - self.flags, self.auto_comments, - self.user_comments, self.previous_id, - self.lineno, self.context))) - - def check(self, catalog=None): - """Run various validation checks on the message. Some validations - are only performed if the catalog is provided. This method returns - a sequence of `TranslationError` objects. - - :rtype: ``iterator`` - :param catalog: A catalog instance that is passed to the checkers - :see: `Catalog.check` for a way to perform checks for all messages - in a catalog. - """ - from babel.messages.checkers import checkers - errors = [] - for checker in checkers: - try: - checker(catalog, self) - except TranslationError as e: - errors.append(e) - return errors - - @property - def fuzzy(self): - """Whether the translation is fuzzy. - - >>> Message('foo').fuzzy - False - >>> msg = Message('foo', 'foo', flags=['fuzzy']) - >>> msg.fuzzy - True - >>> msg - - - :type: `bool`""" - return 'fuzzy' in self.flags - - @property - def pluralizable(self): - """Whether the message is plurizable. - - >>> Message('foo').pluralizable - False - >>> Message(('foo', 'bar')).pluralizable - True - - :type: `bool`""" - return isinstance(self.id, (list, tuple)) - - @property - def python_format(self): - """Whether the message contains Python-style parameters. - - >>> Message('foo %(name)s bar').python_format - True - >>> Message(('foo %(name)s', 'foo %(name)s')).python_format - True - - :type: `bool`""" - ids = self.id - if not isinstance(ids, (list, tuple)): - ids = [ids] - return any(PYTHON_FORMAT.search(id) for id in ids) - - -class TranslationError(Exception): - """Exception thrown by translation checkers when invalid message - translations are encountered.""" - - -DEFAULT_HEADER = u"""\ -# Translations template for PROJECT. -# Copyright (C) YEAR ORGANIZATION -# This file is distributed under the same license as the PROJECT project. -# FIRST AUTHOR , YEAR. -#""" - - -if PY2: - def _parse_header(header_string): - # message_from_string only works for str, not for unicode - headers = message_from_string(header_string.encode('utf8')) - decoded_headers = {} - for name, value in headers.items(): - name = name.decode('utf8') - value = value.decode('utf8') - decoded_headers[name] = value - return decoded_headers - -else: - _parse_header = message_from_string - - -class Catalog(object): - """Representation of a message catalog.""" - - def __init__(self, locale=None, domain=None, header_comment=DEFAULT_HEADER, - project=None, version=None, copyright_holder=None, - msgid_bugs_address=None, creation_date=None, - revision_date=None, last_translator=None, language_team=None, - charset=None, fuzzy=True): - """Initialize the catalog object. - - :param locale: the locale identifier or `Locale` object, or `None` - if the catalog is not bound to a locale (which basically - means it's a template) - :param domain: the message domain - :param header_comment: the header comment as string, or `None` for the - default header - :param project: the project's name - :param version: the project's version - :param copyright_holder: the copyright holder of the catalog - :param msgid_bugs_address: the email address or URL to submit bug - reports to - :param creation_date: the date the catalog was created - :param revision_date: the date the catalog was revised - :param last_translator: the name and email of the last translator - :param language_team: the name and email of the language team - :param charset: the encoding to use in the output (defaults to utf-8) - :param fuzzy: the fuzzy bit on the catalog header - """ - self.domain = domain - self.locale = locale - self._header_comment = header_comment - self._messages = OrderedDict() - - self.project = project or 'PROJECT' - self.version = version or 'VERSION' - self.copyright_holder = copyright_holder or 'ORGANIZATION' - self.msgid_bugs_address = msgid_bugs_address or 'EMAIL@ADDRESS' - - self.last_translator = last_translator or 'FULL NAME ' - """Name and email address of the last translator.""" - self.language_team = language_team or 'LANGUAGE ' - """Name and email address of the language team.""" - - self.charset = charset or 'utf-8' - - if creation_date is None: - creation_date = datetime.now(LOCALTZ) - elif isinstance(creation_date, datetime) and not creation_date.tzinfo: - creation_date = creation_date.replace(tzinfo=LOCALTZ) - self.creation_date = creation_date - if revision_date is None: - revision_date = 'YEAR-MO-DA HO:MI+ZONE' - elif isinstance(revision_date, datetime) and not revision_date.tzinfo: - revision_date = revision_date.replace(tzinfo=LOCALTZ) - self.revision_date = revision_date - self.fuzzy = fuzzy - - self.obsolete = OrderedDict() # Dictionary of obsolete messages - self._num_plurals = None - self._plural_expr = None - - def _set_locale(self, locale): - if locale is None: - self._locale_identifier = None - self._locale = None - return - - if isinstance(locale, Locale): - self._locale_identifier = text_type(locale) - self._locale = locale - return - - if isinstance(locale, string_types): - self._locale_identifier = text_type(locale) - try: - self._locale = Locale.parse(locale) - except UnknownLocaleError: - self._locale = None - return - - raise TypeError('`locale` must be a Locale, a locale identifier string, or None; got %r' % locale) - - def _get_locale(self): - return self._locale - - def _get_locale_identifier(self): - return self._locale_identifier - - locale = property(_get_locale, _set_locale) - locale_identifier = property(_get_locale_identifier) - - def _get_header_comment(self): - comment = self._header_comment - year = datetime.now(LOCALTZ).strftime('%Y') - if hasattr(self.revision_date, 'strftime'): - year = self.revision_date.strftime('%Y') - comment = comment.replace('PROJECT', self.project) \ - .replace('VERSION', self.version) \ - .replace('YEAR', year) \ - .replace('ORGANIZATION', self.copyright_holder) - locale_name = (self.locale.english_name if self.locale else self.locale_identifier) - if locale_name: - comment = comment.replace('Translations template', '%s translations' % locale_name) - return comment - - def _set_header_comment(self, string): - self._header_comment = string - - header_comment = property(_get_header_comment, _set_header_comment, doc="""\ - The header comment for the catalog. - - >>> catalog = Catalog(project='Foobar', version='1.0', - ... copyright_holder='Foo Company') - >>> print(catalog.header_comment) #doctest: +ELLIPSIS - # Translations template for Foobar. - # Copyright (C) ... Foo Company - # This file is distributed under the same license as the Foobar project. - # FIRST AUTHOR , .... - # - - The header can also be set from a string. Any known upper-case variables - will be replaced when the header is retrieved again: - - >>> catalog = Catalog(project='Foobar', version='1.0', - ... copyright_holder='Foo Company') - >>> catalog.header_comment = '''\\ - ... # The POT for my really cool PROJECT project. - ... # Copyright (C) 1990-2003 ORGANIZATION - ... # This file is distributed under the same license as the PROJECT - ... # project. - ... #''' - >>> print(catalog.header_comment) - # The POT for my really cool Foobar project. - # Copyright (C) 1990-2003 Foo Company - # This file is distributed under the same license as the Foobar - # project. - # - - :type: `unicode` - """) - - def _get_mime_headers(self): - headers = [] - headers.append(('Project-Id-Version', - '%s %s' % (self.project, self.version))) - headers.append(('Report-Msgid-Bugs-To', self.msgid_bugs_address)) - headers.append(('POT-Creation-Date', - format_datetime(self.creation_date, 'yyyy-MM-dd HH:mmZ', - locale='en'))) - if isinstance(self.revision_date, (datetime, time_) + number_types): - headers.append(('PO-Revision-Date', - format_datetime(self.revision_date, - 'yyyy-MM-dd HH:mmZ', locale='en'))) - else: - headers.append(('PO-Revision-Date', self.revision_date)) - headers.append(('Last-Translator', self.last_translator)) - if self.locale_identifier: - headers.append(('Language', str(self.locale_identifier))) - if self.locale_identifier and ('LANGUAGE' in self.language_team): - headers.append(('Language-Team', - self.language_team.replace('LANGUAGE', - str(self.locale_identifier)))) - else: - headers.append(('Language-Team', self.language_team)) - if self.locale is not None: - headers.append(('Plural-Forms', self.plural_forms)) - headers.append(('MIME-Version', '1.0')) - headers.append(('Content-Type', - 'text/plain; charset=%s' % self.charset)) - headers.append(('Content-Transfer-Encoding', '8bit')) - headers.append(('Generated-By', 'Babel %s\n' % VERSION)) - return headers - - def _set_mime_headers(self, headers): - for name, value in headers: - name = force_text(name.lower(), encoding=self.charset) - value = force_text(value, encoding=self.charset) - if name == 'project-id-version': - parts = value.split(' ') - self.project = u' '.join(parts[:-1]) - self.version = parts[-1] - elif name == 'report-msgid-bugs-to': - self.msgid_bugs_address = value - elif name == 'last-translator': - self.last_translator = value - elif name == 'language': - value = value.replace('-', '_') - self._set_locale(value) - elif name == 'language-team': - self.language_team = value - elif name == 'content-type': - mimetype, params = parse_header(value) - if 'charset' in params: - self.charset = params['charset'].lower() - elif name == 'plural-forms': - _, params = parse_header(' ;' + value) - self._num_plurals = int(params.get('nplurals', 2)) - self._plural_expr = params.get('plural', '(n != 1)') - elif name == 'pot-creation-date': - self.creation_date = _parse_datetime_header(value) - elif name == 'po-revision-date': - # Keep the value if it's not the default one - if 'YEAR' not in value: - self.revision_date = _parse_datetime_header(value) - - mime_headers = property(_get_mime_headers, _set_mime_headers, doc="""\ - The MIME headers of the catalog, used for the special ``msgid ""`` entry. - - The behavior of this property changes slightly depending on whether a locale - is set or not, the latter indicating that the catalog is actually a template - for actual translations. - - Here's an example of the output for such a catalog template: - - >>> from babel.dates import UTC - >>> created = datetime(1990, 4, 1, 15, 30, tzinfo=UTC) - >>> catalog = Catalog(project='Foobar', version='1.0', - ... creation_date=created) - >>> for name, value in catalog.mime_headers: - ... print('%s: %s' % (name, value)) - Project-Id-Version: Foobar 1.0 - Report-Msgid-Bugs-To: EMAIL@ADDRESS - POT-Creation-Date: 1990-04-01 15:30+0000 - PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE - Last-Translator: FULL NAME - Language-Team: LANGUAGE - MIME-Version: 1.0 - Content-Type: text/plain; charset=utf-8 - Content-Transfer-Encoding: 8bit - Generated-By: Babel ... - - And here's an example of the output when the locale is set: - - >>> revised = datetime(1990, 8, 3, 12, 0, tzinfo=UTC) - >>> catalog = Catalog(locale='de_DE', project='Foobar', version='1.0', - ... creation_date=created, revision_date=revised, - ... last_translator='John Doe ', - ... language_team='de_DE ') - >>> for name, value in catalog.mime_headers: - ... print('%s: %s' % (name, value)) - Project-Id-Version: Foobar 1.0 - Report-Msgid-Bugs-To: EMAIL@ADDRESS - POT-Creation-Date: 1990-04-01 15:30+0000 - PO-Revision-Date: 1990-08-03 12:00+0000 - Last-Translator: John Doe - Language: de_DE - Language-Team: de_DE - Plural-Forms: nplurals=2; plural=(n != 1) - MIME-Version: 1.0 - Content-Type: text/plain; charset=utf-8 - Content-Transfer-Encoding: 8bit - Generated-By: Babel ... - - :type: `list` - """) - - @property - def num_plurals(self): - """The number of plurals used by the catalog or locale. - - >>> Catalog(locale='en').num_plurals - 2 - >>> Catalog(locale='ga').num_plurals - 5 - - :type: `int`""" - if self._num_plurals is None: - num = 2 - if self.locale: - num = get_plural(self.locale)[0] - self._num_plurals = num - return self._num_plurals - - @property - def plural_expr(self): - """The plural expression used by the catalog or locale. - - >>> Catalog(locale='en').plural_expr - '(n != 1)' - >>> Catalog(locale='ga').plural_expr - '(n==1 ? 0 : n==2 ? 1 : n>=3 && n<=6 ? 2 : n>=7 && n<=10 ? 3 : 4)' - >>> Catalog(locale='ding').plural_expr # unknown locale - '(n != 1)' - - :type: `string_types`""" - if self._plural_expr is None: - expr = '(n != 1)' - if self.locale: - expr = get_plural(self.locale)[1] - self._plural_expr = expr - return self._plural_expr - - @property - def plural_forms(self): - """Return the plural forms declaration for the locale. - - >>> Catalog(locale='en').plural_forms - 'nplurals=2; plural=(n != 1)' - >>> Catalog(locale='pt_BR').plural_forms - 'nplurals=2; plural=(n > 1)' - - :type: `str`""" - return 'nplurals=%s; plural=%s' % (self.num_plurals, self.plural_expr) - - def __contains__(self, id): - """Return whether the catalog has a message with the specified ID.""" - return self._key_for(id) in self._messages - - def __len__(self): - """The number of messages in the catalog. - - This does not include the special ``msgid ""`` entry.""" - return len(self._messages) - - def __iter__(self): - """Iterates through all the entries in the catalog, in the order they - were added, yielding a `Message` object for every entry. - - :rtype: ``iterator``""" - buf = [] - for name, value in self.mime_headers: - buf.append('%s: %s' % (name, value)) - flags = set() - if self.fuzzy: - flags |= {'fuzzy'} - yield Message(u'', '\n'.join(buf), flags=flags) - for key in self._messages: - yield self._messages[key] - - def __repr__(self): - locale = '' - if self.locale: - locale = ' %s' % self.locale - return '<%s %r%s>' % (type(self).__name__, self.domain, locale) - - def __delitem__(self, id): - """Delete the message with the specified ID.""" - self.delete(id) - - def __getitem__(self, id): - """Return the message with the specified ID. - - :param id: the message ID - """ - return self.get(id) - - def __setitem__(self, id, message): - """Add or update the message with the specified ID. - - >>> catalog = Catalog() - >>> catalog[u'foo'] = Message(u'foo') - >>> catalog[u'foo'] - - - If a message with that ID is already in the catalog, it is updated - to include the locations and flags of the new message. - - >>> catalog = Catalog() - >>> catalog[u'foo'] = Message(u'foo', locations=[('main.py', 1)]) - >>> catalog[u'foo'].locations - [('main.py', 1)] - >>> catalog[u'foo'] = Message(u'foo', locations=[('utils.py', 5)]) - >>> catalog[u'foo'].locations - [('main.py', 1), ('utils.py', 5)] - - :param id: the message ID - :param message: the `Message` object - """ - assert isinstance(message, Message), 'expected a Message object' - key = self._key_for(id, message.context) - current = self._messages.get(key) - if current: - if message.pluralizable and not current.pluralizable: - # The new message adds pluralization - current.id = message.id - current.string = message.string - current.locations = list(distinct(current.locations + - message.locations)) - current.auto_comments = list(distinct(current.auto_comments + - message.auto_comments)) - current.user_comments = list(distinct(current.user_comments + - message.user_comments)) - current.flags |= message.flags - message = current - elif id == '': - # special treatment for the header message - self.mime_headers = _parse_header(message.string).items() - self.header_comment = '\n'.join([('# %s' % c).rstrip() for c - in message.user_comments]) - self.fuzzy = message.fuzzy - else: - if isinstance(id, (list, tuple)): - assert isinstance(message.string, (list, tuple)), \ - 'Expected sequence but got %s' % type(message.string) - self._messages[key] = message - - def add(self, id, string=None, locations=(), flags=(), auto_comments=(), - user_comments=(), previous_id=(), lineno=None, context=None): - """Add or update the message with the specified ID. - - >>> catalog = Catalog() - >>> catalog.add(u'foo') - - >>> catalog[u'foo'] - - - This method simply constructs a `Message` object with the given - arguments and invokes `__setitem__` with that object. - - :param id: the message ID, or a ``(singular, plural)`` tuple for - pluralizable messages - :param string: the translated message string, or a - ``(singular, plural)`` tuple for pluralizable messages - :param locations: a sequence of ``(filename, lineno)`` tuples - :param flags: a set or sequence of flags - :param auto_comments: a sequence of automatic comments - :param user_comments: a sequence of user comments - :param previous_id: the previous message ID, or a ``(singular, plural)`` - tuple for pluralizable messages - :param lineno: the line number on which the msgid line was found in the - PO file, if any - :param context: the message context - """ - message = Message(id, string, list(locations), flags, auto_comments, - user_comments, previous_id, lineno=lineno, - context=context) - self[id] = message - return message - - def check(self): - """Run various validation checks on the translations in the catalog. - - For every message which fails validation, this method yield a - ``(message, errors)`` tuple, where ``message`` is the `Message` object - and ``errors`` is a sequence of `TranslationError` objects. - - :rtype: ``iterator`` - """ - for message in self._messages.values(): - errors = message.check(catalog=self) - if errors: - yield message, errors - - def get(self, id, context=None): - """Return the message with the specified ID and context. - - :param id: the message ID - :param context: the message context, or ``None`` for no context - """ - return self._messages.get(self._key_for(id, context)) - - def delete(self, id, context=None): - """Delete the message with the specified ID and context. - - :param id: the message ID - :param context: the message context, or ``None`` for no context - """ - key = self._key_for(id, context) - if key in self._messages: - del self._messages[key] - - def update(self, template, no_fuzzy_matching=False, update_header_comment=False, keep_user_comments=True): - """Update the catalog based on the given template catalog. - - >>> from babel.messages import Catalog - >>> template = Catalog() - >>> template.add('green', locations=[('main.py', 99)]) - - >>> template.add('blue', locations=[('main.py', 100)]) - - >>> template.add(('salad', 'salads'), locations=[('util.py', 42)]) - - >>> catalog = Catalog(locale='de_DE') - >>> catalog.add('blue', u'blau', locations=[('main.py', 98)]) - - >>> catalog.add('head', u'Kopf', locations=[('util.py', 33)]) - - >>> catalog.add(('salad', 'salads'), (u'Salat', u'Salate'), - ... locations=[('util.py', 38)]) - - - >>> catalog.update(template) - >>> len(catalog) - 3 - - >>> msg1 = catalog['green'] - >>> msg1.string - >>> msg1.locations - [('main.py', 99)] - - >>> msg2 = catalog['blue'] - >>> msg2.string - u'blau' - >>> msg2.locations - [('main.py', 100)] - - >>> msg3 = catalog['salad'] - >>> msg3.string - (u'Salat', u'Salate') - >>> msg3.locations - [('util.py', 42)] - - Messages that are in the catalog but not in the template are removed - from the main collection, but can still be accessed via the `obsolete` - member: - - >>> 'head' in catalog - False - >>> list(catalog.obsolete.values()) - [] - - :param template: the reference catalog, usually read from a POT file - :param no_fuzzy_matching: whether to use fuzzy matching of message IDs - """ - messages = self._messages - remaining = messages.copy() - self._messages = OrderedDict() - - # Prepare for fuzzy matching - fuzzy_candidates = [] - if not no_fuzzy_matching: - fuzzy_candidates = dict([ - (self._key_for(msgid), messages[msgid].context) - for msgid in messages if msgid and messages[msgid].string - ]) - fuzzy_matches = set() - - def _merge(message, oldkey, newkey): - message = message.clone() - fuzzy = False - if oldkey != newkey: - fuzzy = True - fuzzy_matches.add(oldkey) - oldmsg = messages.get(oldkey) - if isinstance(oldmsg.id, string_types): - message.previous_id = [oldmsg.id] - else: - message.previous_id = list(oldmsg.id) - else: - oldmsg = remaining.pop(oldkey, None) - message.string = oldmsg.string - - if keep_user_comments: - message.user_comments = list(distinct(oldmsg.user_comments)) - - if isinstance(message.id, (list, tuple)): - if not isinstance(message.string, (list, tuple)): - fuzzy = True - message.string = tuple( - [message.string] + ([u''] * (len(message.id) - 1)) - ) - elif len(message.string) != self.num_plurals: - fuzzy = True - message.string = tuple(message.string[:len(oldmsg.string)]) - elif isinstance(message.string, (list, tuple)): - fuzzy = True - message.string = message.string[0] - message.flags |= oldmsg.flags - if fuzzy: - message.flags |= {u'fuzzy'} - self[message.id] = message - - for message in template: - if message.id: - key = self._key_for(message.id, message.context) - if key in messages: - _merge(message, key, key) - else: - if no_fuzzy_matching is False: - # do some fuzzy matching with difflib - if isinstance(key, tuple): - matchkey = key[0] # just the msgid, no context - else: - matchkey = key - matches = get_close_matches(matchkey.lower().strip(), - fuzzy_candidates.keys(), 1) - if matches: - newkey = matches[0] - newctxt = fuzzy_candidates[newkey] - if newctxt is not None: - newkey = newkey, newctxt - _merge(message, newkey, key) - continue - - self[message.id] = message - - for msgid in remaining: - if no_fuzzy_matching or msgid not in fuzzy_matches: - self.obsolete[msgid] = remaining[msgid] - - if update_header_comment: - # Allow the updated catalog's header to be rewritten based on the - # template's header - self.header_comment = template.header_comment - - # Make updated catalog's POT-Creation-Date equal to the template - # used to update the catalog - self.creation_date = template.creation_date - - def _key_for(self, id, context=None): - """The key for a message is just the singular ID even for pluralizable - messages, but is a ``(msgid, msgctxt)`` tuple for context-specific - messages. - """ - key = id - if isinstance(key, (list, tuple)): - key = id[0] - if context is not None: - key = (key, context) - return key diff --git a/venv/lib/python3.7/site-packages/babel/messages/checkers.py b/venv/lib/python3.7/site-packages/babel/messages/checkers.py deleted file mode 100644 index 8c1effa..0000000 --- a/venv/lib/python3.7/site-packages/babel/messages/checkers.py +++ /dev/null @@ -1,173 +0,0 @@ -# -*- coding: utf-8 -*- -""" - babel.messages.checkers - ~~~~~~~~~~~~~~~~~~~~~~~ - - Various routines that help with validation of translations. - - :since: version 0.9 - - :copyright: (c) 2013-2019 by the Babel Team. - :license: BSD, see LICENSE for more details. -""" - -from babel.messages.catalog import TranslationError, PYTHON_FORMAT -from babel._compat import string_types, izip - - -#: list of format chars that are compatible to each other -_string_format_compatibilities = [ - {'i', 'd', 'u'}, - {'x', 'X'}, - {'f', 'F', 'g', 'G'} -] - - -def num_plurals(catalog, message): - """Verify the number of plurals in the translation.""" - if not message.pluralizable: - if not isinstance(message.string, string_types): - raise TranslationError("Found plural forms for non-pluralizable " - "message") - return - - # skip further tests if no catalog is provided. - elif catalog is None: - return - - msgstrs = message.string - if not isinstance(msgstrs, (list, tuple)): - msgstrs = (msgstrs,) - if len(msgstrs) != catalog.num_plurals: - raise TranslationError("Wrong number of plural forms (expected %d)" % - catalog.num_plurals) - - -def python_format(catalog, message): - """Verify the format string placeholders in the translation.""" - if 'python-format' not in message.flags: - return - msgids = message.id - if not isinstance(msgids, (list, tuple)): - msgids = (msgids,) - msgstrs = message.string - if not isinstance(msgstrs, (list, tuple)): - msgstrs = (msgstrs,) - - for msgid, msgstr in izip(msgids, msgstrs): - if msgstr: - _validate_format(msgid, msgstr) - - -def _validate_format(format, alternative): - """Test format string `alternative` against `format`. `format` can be the - msgid of a message and `alternative` one of the `msgstr`\\s. The two - arguments are not interchangeable as `alternative` may contain less - placeholders if `format` uses named placeholders. - - The behavior of this function is undefined if the string does not use - string formattings. - - If the string formatting of `alternative` is compatible to `format` the - function returns `None`, otherwise a `TranslationError` is raised. - - Examples for compatible format strings: - - >>> _validate_format('Hello %s!', 'Hallo %s!') - >>> _validate_format('Hello %i!', 'Hallo %d!') - - Example for an incompatible format strings: - - >>> _validate_format('Hello %(name)s!', 'Hallo %s!') - Traceback (most recent call last): - ... - TranslationError: the format strings are of different kinds - - This function is used by the `python_format` checker. - - :param format: The original format string - :param alternative: The alternative format string that should be checked - against format - :raises TranslationError: on formatting errors - """ - - def _parse(string): - result = [] - for match in PYTHON_FORMAT.finditer(string): - name, format, typechar = match.groups() - if typechar == '%' and name is None: - continue - result.append((name, str(typechar))) - return result - - def _compatible(a, b): - if a == b: - return True - for set in _string_format_compatibilities: - if a in set and b in set: - return True - return False - - def _check_positional(results): - positional = None - for name, char in results: - if positional is None: - positional = name is None - else: - if (name is None) != positional: - raise TranslationError('format string mixes positional ' - 'and named placeholders') - return bool(positional) - - a, b = map(_parse, (format, alternative)) - - # now check if both strings are positional or named - a_positional, b_positional = map(_check_positional, (a, b)) - if a_positional and not b_positional and not b: - raise TranslationError('placeholders are incompatible') - elif a_positional != b_positional: - raise TranslationError('the format strings are of different kinds') - - # if we are operating on positional strings both must have the - # same number of format chars and those must be compatible - if a_positional: - if len(a) != len(b): - raise TranslationError('positional format placeholders are ' - 'unbalanced') - for idx, ((_, first), (_, second)) in enumerate(izip(a, b)): - if not _compatible(first, second): - raise TranslationError('incompatible format for placeholder ' - '%d: %r and %r are not compatible' % - (idx + 1, first, second)) - - # otherwise the second string must not have names the first one - # doesn't have and the types of those included must be compatible - else: - type_map = dict(a) - for name, typechar in b: - if name not in type_map: - raise TranslationError('unknown named placeholder %r' % name) - elif not _compatible(typechar, type_map[name]): - raise TranslationError('incompatible format for ' - 'placeholder %r: ' - '%r and %r are not compatible' % - (name, typechar, type_map[name])) - - -def _find_checkers(): - checkers = [] - try: - from pkg_resources import working_set - except ImportError: - pass - else: - for entry_point in working_set.iter_entry_points('babel.checkers'): - checkers.append(entry_point.load()) - if len(checkers) == 0: - # if pkg_resources is not available or no usable egg-info was found - # (see #230), just resort to hard-coded checkers - return [num_plurals, python_format] - return checkers - - -checkers = _find_checkers() diff --git a/venv/lib/python3.7/site-packages/babel/messages/extract.py b/venv/lib/python3.7/site-packages/babel/messages/extract.py deleted file mode 100644 index db429b2..0000000 --- a/venv/lib/python3.7/site-packages/babel/messages/extract.py +++ /dev/null @@ -1,642 +0,0 @@ -# -*- coding: utf-8 -*- -""" - babel.messages.extract - ~~~~~~~~~~~~~~~~~~~~~~ - - Basic infrastructure for extracting localizable messages from source files. - - This module defines an extensible system for collecting localizable message - strings from a variety of sources. A native extractor for Python source - files is builtin, extractors for other sources can be added using very - simple plugins. - - The main entry points into the extraction functionality are the functions - `extract_from_dir` and `extract_from_file`. - - :copyright: (c) 2013-2019 by the Babel Team. - :license: BSD, see LICENSE for more details. -""" - -import os -from os.path import relpath -import sys -from tokenize import generate_tokens, COMMENT, NAME, OP, STRING - -from babel.util import parse_encoding, parse_future_flags, pathmatch -from babel._compat import PY2, text_type -from textwrap import dedent - - -GROUP_NAME = 'babel.extractors' - -DEFAULT_KEYWORDS = { - '_': None, - 'gettext': None, - 'ngettext': (1, 2), - 'ugettext': None, - 'ungettext': (1, 2), - 'dgettext': (2,), - 'dngettext': (2, 3), - 'N_': None, - 'pgettext': ((1, 'c'), 2), - 'npgettext': ((1, 'c'), 2, 3) -} - -DEFAULT_MAPPING = [('**.py', 'python')] - -empty_msgid_warning = ( - '%s: warning: Empty msgid. It is reserved by GNU gettext: gettext("") ' - 'returns the header entry with meta information, not the empty string.') - - -def _strip_comment_tags(comments, tags): - """Helper function for `extract` that strips comment tags from strings - in a list of comment lines. This functions operates in-place. - """ - def _strip(line): - for tag in tags: - if line.startswith(tag): - return line[len(tag):].strip() - return line - comments[:] = map(_strip, comments) - - -def extract_from_dir(dirname=None, method_map=DEFAULT_MAPPING, - options_map=None, keywords=DEFAULT_KEYWORDS, - comment_tags=(), callback=None, strip_comment_tags=False): - """Extract messages from any source files found in the given directory. - - This function generates tuples of the form ``(filename, lineno, message, - comments, context)``. - - Which extraction method is used per file is determined by the `method_map` - parameter, which maps extended glob patterns to extraction method names. - For example, the following is the default mapping: - - >>> method_map = [ - ... ('**.py', 'python') - ... ] - - This basically says that files with the filename extension ".py" at any - level inside the directory should be processed by the "python" extraction - method. Files that don't match any of the mapping patterns are ignored. See - the documentation of the `pathmatch` function for details on the pattern - syntax. - - The following extended mapping would also use the "genshi" extraction - method on any file in "templates" subdirectory: - - >>> method_map = [ - ... ('**/templates/**.*', 'genshi'), - ... ('**.py', 'python') - ... ] - - The dictionary provided by the optional `options_map` parameter augments - these mappings. It uses extended glob patterns as keys, and the values are - dictionaries mapping options names to option values (both strings). - - The glob patterns of the `options_map` do not necessarily need to be the - same as those used in the method mapping. For example, while all files in - the ``templates`` folders in an application may be Genshi applications, the - options for those files may differ based on extension: - - >>> options_map = { - ... '**/templates/**.txt': { - ... 'template_class': 'genshi.template:TextTemplate', - ... 'encoding': 'latin-1' - ... }, - ... '**/templates/**.html': { - ... 'include_attrs': '' - ... } - ... } - - :param dirname: the path to the directory to extract messages from. If - not given the current working directory is used. - :param method_map: a list of ``(pattern, method)`` tuples that maps of - extraction method names to extended glob patterns - :param options_map: a dictionary of additional options (optional) - :param keywords: a dictionary mapping keywords (i.e. names of functions - that should be recognized as translation functions) to - tuples that specify which of their arguments contain - localizable strings - :param comment_tags: a list of tags of translator comments to search for - and include in the results - :param callback: a function that is called for every file that message are - extracted from, just before the extraction itself is - performed; the function is passed the filename, the name - of the extraction method and and the options dictionary as - positional arguments, in that order - :param strip_comment_tags: a flag that if set to `True` causes all comment - tags to be removed from the collected comments. - :see: `pathmatch` - """ - if dirname is None: - dirname = os.getcwd() - if options_map is None: - options_map = {} - - absname = os.path.abspath(dirname) - for root, dirnames, filenames in os.walk(absname): - dirnames[:] = [ - subdir for subdir in dirnames - if not (subdir.startswith('.') or subdir.startswith('_')) - ] - dirnames.sort() - filenames.sort() - for filename in filenames: - filepath = os.path.join(root, filename).replace(os.sep, '/') - - for message_tuple in check_and_call_extract_file( - filepath, - method_map, - options_map, - callback, - keywords, - comment_tags, - strip_comment_tags, - dirpath=absname, - ): - yield message_tuple - - -def check_and_call_extract_file(filepath, method_map, options_map, - callback, keywords, comment_tags, - strip_comment_tags, dirpath=None): - """Checks if the given file matches an extraction method mapping, and if so, calls extract_from_file. - - Note that the extraction method mappings are based relative to dirpath. - So, given an absolute path to a file `filepath`, we want to check using - just the relative path from `dirpath` to `filepath`. - - Yields 5-tuples (filename, lineno, messages, comments, context). - - :param filepath: An absolute path to a file that exists. - :param method_map: a list of ``(pattern, method)`` tuples that maps of - extraction method names to extended glob patterns - :param options_map: a dictionary of additional options (optional) - :param callback: a function that is called for every file that message are - extracted from, just before the extraction itself is - performed; the function is passed the filename, the name - of the extraction method and and the options dictionary as - positional arguments, in that order - :param keywords: a dictionary mapping keywords (i.e. names of functions - that should be recognized as translation functions) to - tuples that specify which of their arguments contain - localizable strings - :param comment_tags: a list of tags of translator comments to search for - and include in the results - :param strip_comment_tags: a flag that if set to `True` causes all comment - tags to be removed from the collected comments. - :param dirpath: the path to the directory to extract messages from. - :return: iterable of 5-tuples (filename, lineno, messages, comments, context) - :rtype: Iterable[tuple[str, int, str|tuple[str], list[str], str|None] - """ - # filename is the relative path from dirpath to the actual file - filename = relpath(filepath, dirpath) - - for pattern, method in method_map: - if not pathmatch(pattern, filename): - continue - - options = {} - for opattern, odict in options_map.items(): - if pathmatch(opattern, filename): - options = odict - if callback: - callback(filename, method, options) - for message_tuple in extract_from_file( - method, filepath, - keywords=keywords, - comment_tags=comment_tags, - options=options, - strip_comment_tags=strip_comment_tags - ): - yield (filename, ) + message_tuple - - break - - -def extract_from_file(method, filename, keywords=DEFAULT_KEYWORDS, - comment_tags=(), options=None, strip_comment_tags=False): - """Extract messages from a specific file. - - This function returns a list of tuples of the form ``(lineno, message, comments, context)``. - - :param filename: the path to the file to extract messages from - :param method: a string specifying the extraction method (.e.g. "python") - :param keywords: a dictionary mapping keywords (i.e. names of functions - that should be recognized as translation functions) to - tuples that specify which of their arguments contain - localizable strings - :param comment_tags: a list of translator tags to search for and include - in the results - :param strip_comment_tags: a flag that if set to `True` causes all comment - tags to be removed from the collected comments. - :param options: a dictionary of additional options (optional) - :returns: list of tuples of the form ``(lineno, message, comments, context)`` - :rtype: list[tuple[int, str|tuple[str], list[str], str|None] - """ - with open(filename, 'rb') as fileobj: - return list(extract(method, fileobj, keywords, comment_tags, options, - strip_comment_tags)) - - -def extract(method, fileobj, keywords=DEFAULT_KEYWORDS, comment_tags=(), - options=None, strip_comment_tags=False): - """Extract messages from the given file-like object using the specified - extraction method. - - This function returns tuples of the form ``(lineno, message, comments, context)``. - - The implementation dispatches the actual extraction to plugins, based on the - value of the ``method`` parameter. - - >>> source = b'''# foo module - ... def run(argv): - ... print(_('Hello, world!')) - ... ''' - - >>> from babel._compat import BytesIO - >>> for message in extract('python', BytesIO(source)): - ... print(message) - (3, u'Hello, world!', [], None) - - :param method: an extraction method (a callable), or - a string specifying the extraction method (.e.g. "python"); - if this is a simple name, the extraction function will be - looked up by entry point; if it is an explicit reference - to a function (of the form ``package.module:funcname`` or - ``package.module.funcname``), the corresponding function - will be imported and used - :param fileobj: the file-like object the messages should be extracted from - :param keywords: a dictionary mapping keywords (i.e. names of functions - that should be recognized as translation functions) to - tuples that specify which of their arguments contain - localizable strings - :param comment_tags: a list of translator tags to search for and include - in the results - :param options: a dictionary of additional options (optional) - :param strip_comment_tags: a flag that if set to `True` causes all comment - tags to be removed from the collected comments. - :raise ValueError: if the extraction method is not registered - :returns: iterable of tuples of the form ``(lineno, message, comments, context)`` - :rtype: Iterable[tuple[int, str|tuple[str], list[str], str|None] - """ - func = None - if callable(method): - func = method - elif ':' in method or '.' in method: - if ':' not in method: - lastdot = method.rfind('.') - module, attrname = method[:lastdot], method[lastdot + 1:] - else: - module, attrname = method.split(':', 1) - func = getattr(__import__(module, {}, {}, [attrname]), attrname) - else: - try: - from pkg_resources import working_set - except ImportError: - pass - else: - for entry_point in working_set.iter_entry_points(GROUP_NAME, - method): - func = entry_point.load(require=True) - break - if func is None: - # if pkg_resources is not available or no usable egg-info was found - # (see #230), we resort to looking up the builtin extractors - # directly - builtin = { - 'ignore': extract_nothing, - 'python': extract_python, - 'javascript': extract_javascript - } - func = builtin.get(method) - - if func is None: - raise ValueError('Unknown extraction method %r' % method) - - results = func(fileobj, keywords.keys(), comment_tags, - options=options or {}) - - for lineno, funcname, messages, comments in results: - if funcname: - spec = keywords[funcname] or (1,) - else: - spec = (1,) - if not isinstance(messages, (list, tuple)): - messages = [messages] - if not messages: - continue - - # Validate the messages against the keyword's specification - context = None - msgs = [] - invalid = False - # last_index is 1 based like the keyword spec - last_index = len(messages) - for index in spec: - if isinstance(index, tuple): - context = messages[index[0] - 1] - continue - if last_index < index: - # Not enough arguments - invalid = True - break - message = messages[index - 1] - if message is None: - invalid = True - break - msgs.append(message) - if invalid: - continue - - # keyword spec indexes are 1 based, therefore '-1' - if isinstance(spec[0], tuple): - # context-aware *gettext method - first_msg_index = spec[1] - 1 - else: - first_msg_index = spec[0] - 1 - if not messages[first_msg_index]: - # An empty string msgid isn't valid, emit a warning - where = '%s:%i' % (hasattr(fileobj, 'name') and - fileobj.name or '(unknown)', lineno) - sys.stderr.write((empty_msgid_warning % where) + '\n') - continue - - messages = tuple(msgs) - if len(messages) == 1: - messages = messages[0] - - if strip_comment_tags: - _strip_comment_tags(comments, comment_tags) - yield lineno, messages, comments, context - - -def extract_nothing(fileobj, keywords, comment_tags, options): - """Pseudo extractor that does not actually extract anything, but simply - returns an empty list. - """ - return [] - - -def extract_python(fileobj, keywords, comment_tags, options): - """Extract messages from Python source code. - - It returns an iterator yielding tuples in the following form ``(lineno, - funcname, message, comments)``. - - :param fileobj: the seekable, file-like object the messages should be - extracted from - :param keywords: a list of keywords (i.e. function names) that should be - recognized as translation functions - :param comment_tags: a list of translator tags to search for and include - in the results - :param options: a dictionary of additional options (optional) - :rtype: ``iterator`` - """ - funcname = lineno = message_lineno = None - call_stack = -1 - buf = [] - messages = [] - translator_comments = [] - in_def = in_translator_comments = False - comment_tag = None - - encoding = parse_encoding(fileobj) or options.get('encoding', 'UTF-8') - future_flags = parse_future_flags(fileobj, encoding) - - if PY2: - next_line = fileobj.readline - else: - next_line = lambda: fileobj.readline().decode(encoding) - - tokens = generate_tokens(next_line) - for tok, value, (lineno, _), _, _ in tokens: - if call_stack == -1 and tok == NAME and value in ('def', 'class'): - in_def = True - elif tok == OP and value == '(': - if in_def: - # Avoid false positives for declarations such as: - # def gettext(arg='message'): - in_def = False - continue - if funcname: - message_lineno = lineno - call_stack += 1 - elif in_def and tok == OP and value == ':': - # End of a class definition without parens - in_def = False - continue - elif call_stack == -1 and tok == COMMENT: - # Strip the comment token from the line - if PY2: - value = value.decode(encoding) - value = value[1:].strip() - if in_translator_comments and \ - translator_comments[-1][0] == lineno - 1: - # We're already inside a translator comment, continue appending - translator_comments.append((lineno, value)) - continue - # If execution reaches this point, let's see if comment line - # starts with one of the comment tags - for comment_tag in comment_tags: - if value.startswith(comment_tag): - in_translator_comments = True - translator_comments.append((lineno, value)) - break - elif funcname and call_stack == 0: - nested = (tok == NAME and value in keywords) - if (tok == OP and value == ')') or nested: - if buf: - messages.append(''.join(buf)) - del buf[:] - else: - messages.append(None) - - if len(messages) > 1: - messages = tuple(messages) - else: - messages = messages[0] - # Comments don't apply unless they immediately preceed the - # message - if translator_comments and \ - translator_comments[-1][0] < message_lineno - 1: - translator_comments = [] - - yield (message_lineno, funcname, messages, - [comment[1] for comment in translator_comments]) - - funcname = lineno = message_lineno = None - call_stack = -1 - messages = [] - translator_comments = [] - in_translator_comments = False - if nested: - funcname = value - elif tok == STRING: - # Unwrap quotes in a safe manner, maintaining the string's - # encoding - # https://sourceforge.net/tracker/?func=detail&atid=355470& - # aid=617979&group_id=5470 - code = compile('# coding=%s\n%s' % (str(encoding), value), - '', 'eval', future_flags) - value = eval(code, {'__builtins__': {}}, {}) - if PY2 and not isinstance(value, text_type): - value = value.decode(encoding) - buf.append(value) - elif tok == OP and value == ',': - if buf: - messages.append(''.join(buf)) - del buf[:] - else: - messages.append(None) - if translator_comments: - # We have translator comments, and since we're on a - # comma(,) user is allowed to break into a new line - # Let's increase the last comment's lineno in order - # for the comment to still be a valid one - old_lineno, old_comment = translator_comments.pop() - translator_comments.append((old_lineno + 1, old_comment)) - elif call_stack > 0 and tok == OP and value == ')': - call_stack -= 1 - elif funcname and call_stack == -1: - funcname = None - elif tok == NAME and value in keywords: - funcname = value - - -def extract_javascript(fileobj, keywords, comment_tags, options): - """Extract messages from JavaScript source code. - - :param fileobj: the seekable, file-like object the messages should be - extracted from - :param keywords: a list of keywords (i.e. function names) that should be - recognized as translation functions - :param comment_tags: a list of translator tags to search for and include - in the results - :param options: a dictionary of additional options (optional) - Supported options are: - * `jsx` -- set to false to disable JSX/E4X support. - * `template_string` -- set to false to disable ES6 - template string support. - """ - from babel.messages.jslexer import Token, tokenize, unquote_string - funcname = message_lineno = None - messages = [] - last_argument = None - translator_comments = [] - concatenate_next = False - encoding = options.get('encoding', 'utf-8') - last_token = None - call_stack = -1 - dotted = any('.' in kw for kw in keywords) - - for token in tokenize( - fileobj.read().decode(encoding), - jsx=options.get("jsx", True), - template_string=options.get("template_string", True), - dotted=dotted - ): - if ( # Turn keyword`foo` expressions into keyword("foo") calls: - funcname and # have a keyword... - (last_token and last_token.type == 'name') and # we've seen nothing after the keyword... - token.type == 'template_string' # this is a template string - ): - message_lineno = token.lineno - messages = [unquote_string(token.value)] - call_stack = 0 - token = Token('operator', ')', token.lineno) - - if token.type == 'operator' and token.value == '(': - if funcname: - message_lineno = token.lineno - call_stack += 1 - - elif call_stack == -1 and token.type == 'linecomment': - value = token.value[2:].strip() - if translator_comments and \ - translator_comments[-1][0] == token.lineno - 1: - translator_comments.append((token.lineno, value)) - continue - - for comment_tag in comment_tags: - if value.startswith(comment_tag): - translator_comments.append((token.lineno, value.strip())) - break - - elif token.type == 'multilinecomment': - # only one multi-line comment may preceed a translation - translator_comments = [] - value = token.value[2:-2].strip() - for comment_tag in comment_tags: - if value.startswith(comment_tag): - lines = value.splitlines() - if lines: - lines[0] = lines[0].strip() - lines[1:] = dedent('\n'.join(lines[1:])).splitlines() - for offset, line in enumerate(lines): - translator_comments.append((token.lineno + offset, - line)) - break - - elif funcname and call_stack == 0: - if token.type == 'operator' and token.value == ')': - if last_argument is not None: - messages.append(last_argument) - if len(messages) > 1: - messages = tuple(messages) - elif messages: - messages = messages[0] - else: - messages = None - - # Comments don't apply unless they immediately precede the - # message - if translator_comments and \ - translator_comments[-1][0] < message_lineno - 1: - translator_comments = [] - - if messages is not None: - yield (message_lineno, funcname, messages, - [comment[1] for comment in translator_comments]) - - funcname = message_lineno = last_argument = None - concatenate_next = False - translator_comments = [] - messages = [] - call_stack = -1 - - elif token.type in ('string', 'template_string'): - new_value = unquote_string(token.value) - if concatenate_next: - last_argument = (last_argument or '') + new_value - concatenate_next = False - else: - last_argument = new_value - - elif token.type == 'operator': - if token.value == ',': - if last_argument is not None: - messages.append(last_argument) - last_argument = None - else: - messages.append(None) - concatenate_next = False - elif token.value == '+': - concatenate_next = True - - elif call_stack > 0 and token.type == 'operator' \ - and token.value == ')': - call_stack -= 1 - - elif funcname and call_stack == -1: - funcname = None - - elif call_stack == -1 and token.type == 'name' and \ - token.value in keywords and \ - (last_token is None or last_token.type != 'name' or - last_token.value != 'function'): - funcname = token.value - - last_token = token diff --git a/venv/lib/python3.7/site-packages/babel/messages/frontend.py b/venv/lib/python3.7/site-packages/babel/messages/frontend.py deleted file mode 100644 index 4756055..0000000 --- a/venv/lib/python3.7/site-packages/babel/messages/frontend.py +++ /dev/null @@ -1,1041 +0,0 @@ -# -*- coding: utf-8 -*- -""" - babel.messages.frontend - ~~~~~~~~~~~~~~~~~~~~~~~ - - Frontends for the message extraction functionality. - - :copyright: (c) 2013-2019 by the Babel Team. - :license: BSD, see LICENSE for more details. -""" -from __future__ import print_function - -import logging -import optparse -import os -import re -import shutil -import sys -import tempfile -from collections import OrderedDict -from datetime import datetime -from locale import getpreferredencoding - -from babel import __version__ as VERSION -from babel import Locale, localedata -from babel._compat import StringIO, string_types, text_type, PY2 -from babel.core import UnknownLocaleError -from babel.messages.catalog import Catalog -from babel.messages.extract import DEFAULT_KEYWORDS, DEFAULT_MAPPING, check_and_call_extract_file, extract_from_dir -from babel.messages.mofile import write_mo -from babel.messages.pofile import read_po, write_po -from babel.util import LOCALTZ -from distutils import log as distutils_log -from distutils.cmd import Command as _Command -from distutils.errors import DistutilsOptionError, DistutilsSetupError - -try: - from ConfigParser import RawConfigParser -except ImportError: - from configparser import RawConfigParser - - -po_file_read_mode = ('rU' if PY2 else 'r') - - -def listify_value(arg, split=None): - """ - Make a list out of an argument. - - Values from `distutils` argument parsing are always single strings; - values from `optparse` parsing may be lists of strings that may need - to be further split. - - No matter the input, this function returns a flat list of whitespace-trimmed - strings, with `None` values filtered out. - - >>> listify_value("foo bar") - ['foo', 'bar'] - >>> listify_value(["foo bar"]) - ['foo', 'bar'] - >>> listify_value([["foo"], "bar"]) - ['foo', 'bar'] - >>> listify_value([["foo"], ["bar", None, "foo"]]) - ['foo', 'bar', 'foo'] - >>> listify_value("foo, bar, quux", ",") - ['foo', 'bar', 'quux'] - - :param arg: A string or a list of strings - :param split: The argument to pass to `str.split()`. - :return: - """ - out = [] - - if not isinstance(arg, (list, tuple)): - arg = [arg] - - for val in arg: - if val is None: - continue - if isinstance(val, (list, tuple)): - out.extend(listify_value(val, split=split)) - continue - out.extend(s.strip() for s in text_type(val).split(split)) - assert all(isinstance(val, string_types) for val in out) - return out - - -class Command(_Command): - # This class is a small shim between Distutils commands and - # optparse option parsing in the frontend command line. - - #: Option name to be input as `args` on the script command line. - as_args = None - - #: Options which allow multiple values. - #: This is used by the `optparse` transmogrification code. - multiple_value_options = () - - #: Options which are booleans. - #: This is used by the `optparse` transmogrification code. - # (This is actually used by distutils code too, but is never - # declared in the base class.) - boolean_options = () - - #: Option aliases, to retain standalone command compatibility. - #: Distutils does not support option aliases, but optparse does. - #: This maps the distutils argument name to an iterable of aliases - #: that are usable with optparse. - option_aliases = {} - - #: Choices for options that needed to be restricted to specific - #: list of choices. - option_choices = {} - - #: Log object. To allow replacement in the script command line runner. - log = distutils_log - - def __init__(self, dist=None): - # A less strict version of distutils' `__init__`. - self.distribution = dist - self.initialize_options() - self._dry_run = None - self.verbose = False - self.force = None - self.help = 0 - self.finalized = 0 - - -class compile_catalog(Command): - """Catalog compilation command for use in ``setup.py`` scripts. - - If correctly installed, this command is available to Setuptools-using - setup scripts automatically. For projects using plain old ``distutils``, - the command needs to be registered explicitly in ``setup.py``:: - - from babel.messages.frontend import compile_catalog - - setup( - ... - cmdclass = {'compile_catalog': compile_catalog} - ) - - .. versionadded:: 0.9 - """ - - description = 'compile message catalogs to binary MO files' - user_options = [ - ('domain=', 'D', - "domains of PO files (space separated list, default 'messages')"), - ('directory=', 'd', - 'path to base directory containing the catalogs'), - ('input-file=', 'i', - 'name of the input file'), - ('output-file=', 'o', - "name of the output file (default " - "'//LC_MESSAGES/.mo')"), - ('locale=', 'l', - 'locale of the catalog to compile'), - ('use-fuzzy', 'f', - 'also include fuzzy translations'), - ('statistics', None, - 'print statistics about translations') - ] - boolean_options = ['use-fuzzy', 'statistics'] - - def initialize_options(self): - self.domain = 'messages' - self.directory = None - self.input_file = None - self.output_file = None - self.locale = None - self.use_fuzzy = False - self.statistics = False - - def finalize_options(self): - self.domain = listify_value(self.domain) - if not self.input_file and not self.directory: - raise DistutilsOptionError('you must specify either the input file ' - 'or the base directory') - if not self.output_file and not self.directory: - raise DistutilsOptionError('you must specify either the output file ' - 'or the base directory') - - def run(self): - n_errors = 0 - for domain in self.domain: - for catalog, errors in self._run_domain(domain).items(): - n_errors += len(errors) - if n_errors: - self.log.error('%d errors encountered.' % n_errors) - return (1 if n_errors else 0) - - def _run_domain(self, domain): - po_files = [] - mo_files = [] - - if not self.input_file: - if self.locale: - po_files.append((self.locale, - os.path.join(self.directory, self.locale, - 'LC_MESSAGES', - domain + '.po'))) - mo_files.append(os.path.join(self.directory, self.locale, - 'LC_MESSAGES', - domain + '.mo')) - else: - for locale in os.listdir(self.directory): - po_file = os.path.join(self.directory, locale, - 'LC_MESSAGES', domain + '.po') - if os.path.exists(po_file): - po_files.append((locale, po_file)) - mo_files.append(os.path.join(self.directory, locale, - 'LC_MESSAGES', - domain + '.mo')) - else: - po_files.append((self.locale, self.input_file)) - if self.output_file: - mo_files.append(self.output_file) - else: - mo_files.append(os.path.join(self.directory, self.locale, - 'LC_MESSAGES', - domain + '.mo')) - - if not po_files: - raise DistutilsOptionError('no message catalogs found') - - catalogs_and_errors = {} - - for idx, (locale, po_file) in enumerate(po_files): - mo_file = mo_files[idx] - with open(po_file, 'rb') as infile: - catalog = read_po(infile, locale) - - if self.statistics: - translated = 0 - for message in list(catalog)[1:]: - if message.string: - translated += 1 - percentage = 0 - if len(catalog): - percentage = translated * 100 // len(catalog) - self.log.info( - '%d of %d messages (%d%%) translated in %s', - translated, len(catalog), percentage, po_file - ) - - if catalog.fuzzy and not self.use_fuzzy: - self.log.info('catalog %s is marked as fuzzy, skipping', po_file) - continue - - catalogs_and_errors[catalog] = catalog_errors = list(catalog.check()) - for message, errors in catalog_errors: - for error in errors: - self.log.error( - 'error: %s:%d: %s', po_file, message.lineno, error - ) - - self.log.info('compiling catalog %s to %s', po_file, mo_file) - - with open(mo_file, 'wb') as outfile: - write_mo(outfile, catalog, use_fuzzy=self.use_fuzzy) - - return catalogs_and_errors - - -class extract_messages(Command): - """Message extraction command for use in ``setup.py`` scripts. - - If correctly installed, this command is available to Setuptools-using - setup scripts automatically. For projects using plain old ``distutils``, - the command needs to be registered explicitly in ``setup.py``:: - - from babel.messages.frontend import extract_messages - - setup( - ... - cmdclass = {'extract_messages': extract_messages} - ) - """ - - description = 'extract localizable strings from the project code' - user_options = [ - ('charset=', None, - 'charset to use in the output file (default "utf-8")'), - ('keywords=', 'k', - 'space-separated list of keywords to look for in addition to the ' - 'defaults (may be repeated multiple times)'), - ('no-default-keywords', None, - 'do not include the default keywords'), - ('mapping-file=', 'F', - 'path to the mapping configuration file'), - ('no-location', None, - 'do not include location comments with filename and line number'), - ('add-location=', None, - 'location lines format. If it is not given or "full", it generates ' - 'the lines with both file name and line number. If it is "file", ' - 'the line number part is omitted. If it is "never", it completely ' - 'suppresses the lines (same as --no-location).'), - ('omit-header', None, - 'do not include msgid "" entry in header'), - ('output-file=', 'o', - 'name of the output file'), - ('width=', 'w', - 'set output line width (default 76)'), - ('no-wrap', None, - 'do not break long message lines, longer than the output line width, ' - 'into several lines'), - ('sort-output', None, - 'generate sorted output (default False)'), - ('sort-by-file', None, - 'sort output by file location (default False)'), - ('msgid-bugs-address=', None, - 'set report address for msgid'), - ('copyright-holder=', None, - 'set copyright holder in output'), - ('project=', None, - 'set project name in output'), - ('version=', None, - 'set project version in output'), - ('add-comments=', 'c', - 'place comment block with TAG (or those preceding keyword lines) in ' - 'output file. Separate multiple TAGs with commas(,)'), # TODO: Support repetition of this argument - ('strip-comments', 's', - 'strip the comment TAGs from the comments.'), - ('input-paths=', None, - 'files or directories that should be scanned for messages. Separate multiple ' - 'files or directories with commas(,)'), # TODO: Support repetition of this argument - ('input-dirs=', None, # TODO (3.x): Remove me. - 'alias for input-paths (does allow files as well as directories).'), - ] - boolean_options = [ - 'no-default-keywords', 'no-location', 'omit-header', 'no-wrap', - 'sort-output', 'sort-by-file', 'strip-comments' - ] - as_args = 'input-paths' - multiple_value_options = ('add-comments', 'keywords') - option_aliases = { - 'keywords': ('--keyword',), - 'mapping-file': ('--mapping',), - 'output-file': ('--output',), - 'strip-comments': ('--strip-comment-tags',), - } - option_choices = { - 'add-location': ('full', 'file', 'never',), - } - - def initialize_options(self): - self.charset = 'utf-8' - self.keywords = None - self.no_default_keywords = False - self.mapping_file = None - self.no_location = False - self.add_location = None - self.omit_header = False - self.output_file = None - self.input_dirs = None - self.input_paths = None - self.width = None - self.no_wrap = False - self.sort_output = False - self.sort_by_file = False - self.msgid_bugs_address = None - self.copyright_holder = None - self.project = None - self.version = None - self.add_comments = None - self.strip_comments = False - self.include_lineno = True - - def finalize_options(self): - if self.input_dirs: - if not self.input_paths: - self.input_paths = self.input_dirs - else: - raise DistutilsOptionError( - 'input-dirs and input-paths are mutually exclusive' - ) - - if self.no_default_keywords: - keywords = {} - else: - keywords = DEFAULT_KEYWORDS.copy() - - keywords.update(parse_keywords(listify_value(self.keywords))) - - self.keywords = keywords - - if not self.keywords: - raise DistutilsOptionError('you must specify new keywords if you ' - 'disable the default ones') - - if not self.output_file: - raise DistutilsOptionError('no output file specified') - if self.no_wrap and self.width: - raise DistutilsOptionError("'--no-wrap' and '--width' are mutually " - "exclusive") - if not self.no_wrap and not self.width: - self.width = 76 - elif self.width is not None: - self.width = int(self.width) - - if self.sort_output and self.sort_by_file: - raise DistutilsOptionError("'--sort-output' and '--sort-by-file' " - "are mutually exclusive") - - if self.input_paths: - if isinstance(self.input_paths, string_types): - self.input_paths = re.split(r',\s*', self.input_paths) - elif self.distribution is not None: - self.input_paths = dict.fromkeys([ - k.split('.', 1)[0] - for k in (self.distribution.packages or ()) - ]).keys() - else: - self.input_paths = [] - - if not self.input_paths: - raise DistutilsOptionError("no input files or directories specified") - - for path in self.input_paths: - if not os.path.exists(path): - raise DistutilsOptionError("Input path: %s does not exist" % path) - - self.add_comments = listify_value(self.add_comments or (), ",") - - if self.distribution: - if not self.project: - self.project = self.distribution.get_name() - if not self.version: - self.version = self.distribution.get_version() - - if self.add_location == 'never': - self.no_location = True - elif self.add_location == 'file': - self.include_lineno = False - - def run(self): - mappings = self._get_mappings() - with open(self.output_file, 'wb') as outfile: - catalog = Catalog(project=self.project, - version=self.version, - msgid_bugs_address=self.msgid_bugs_address, - copyright_holder=self.copyright_holder, - charset=self.charset) - - for path, method_map, options_map in mappings: - def callback(filename, method, options): - if method == 'ignore': - return - - # If we explicitly provide a full filepath, just use that. - # Otherwise, path will be the directory path and filename - # is the relative path from that dir to the file. - # So we can join those to get the full filepath. - if os.path.isfile(path): - filepath = path - else: - filepath = os.path.normpath(os.path.join(path, filename)) - - optstr = '' - if options: - optstr = ' (%s)' % ', '.join(['%s="%s"' % (k, v) for - k, v in options.items()]) - self.log.info('extracting messages from %s%s', filepath, optstr) - - if os.path.isfile(path): - current_dir = os.getcwd() - extracted = check_and_call_extract_file( - path, method_map, options_map, - callback, self.keywords, self.add_comments, - self.strip_comments, current_dir - ) - else: - extracted = extract_from_dir( - path, method_map, options_map, - keywords=self.keywords, - comment_tags=self.add_comments, - callback=callback, - strip_comment_tags=self.strip_comments - ) - for filename, lineno, message, comments, context in extracted: - if os.path.isfile(path): - filepath = filename # already normalized - else: - filepath = os.path.normpath(os.path.join(path, filename)) - - catalog.add(message, None, [(filepath, lineno)], - auto_comments=comments, context=context) - - self.log.info('writing PO template file to %s', self.output_file) - write_po(outfile, catalog, width=self.width, - no_location=self.no_location, - omit_header=self.omit_header, - sort_output=self.sort_output, - sort_by_file=self.sort_by_file, - include_lineno=self.include_lineno) - - def _get_mappings(self): - mappings = [] - - if self.mapping_file: - with open(self.mapping_file, po_file_read_mode) as fileobj: - method_map, options_map = parse_mapping(fileobj) - for path in self.input_paths: - mappings.append((path, method_map, options_map)) - - elif getattr(self.distribution, 'message_extractors', None): - message_extractors = self.distribution.message_extractors - for path, mapping in message_extractors.items(): - if isinstance(mapping, string_types): - method_map, options_map = parse_mapping(StringIO(mapping)) - else: - method_map, options_map = [], {} - for pattern, method, options in mapping: - method_map.append((pattern, method)) - options_map[pattern] = options or {} - mappings.append((path, method_map, options_map)) - - else: - for path in self.input_paths: - mappings.append((path, DEFAULT_MAPPING, {})) - - return mappings - - -def check_message_extractors(dist, name, value): - """Validate the ``message_extractors`` keyword argument to ``setup()``. - - :param dist: the distutils/setuptools ``Distribution`` object - :param name: the name of the keyword argument (should always be - "message_extractors") - :param value: the value of the keyword argument - :raise `DistutilsSetupError`: if the value is not valid - """ - assert name == 'message_extractors' - if not isinstance(value, dict): - raise DistutilsSetupError('the value of the "message_extractors" ' - 'parameter must be a dictionary') - - -class init_catalog(Command): - """New catalog initialization command for use in ``setup.py`` scripts. - - If correctly installed, this command is available to Setuptools-using - setup scripts automatically. For projects using plain old ``distutils``, - the command needs to be registered explicitly in ``setup.py``:: - - from babel.messages.frontend import init_catalog - - setup( - ... - cmdclass = {'init_catalog': init_catalog} - ) - """ - - description = 'create a new catalog based on a POT file' - user_options = [ - ('domain=', 'D', - "domain of PO file (default 'messages')"), - ('input-file=', 'i', - 'name of the input file'), - ('output-dir=', 'd', - 'path to output directory'), - ('output-file=', 'o', - "name of the output file (default " - "'//LC_MESSAGES/.po')"), - ('locale=', 'l', - 'locale for the new localized catalog'), - ('width=', 'w', - 'set output line width (default 76)'), - ('no-wrap', None, - 'do not break long message lines, longer than the output line width, ' - 'into several lines'), - ] - boolean_options = ['no-wrap'] - - def initialize_options(self): - self.output_dir = None - self.output_file = None - self.input_file = None - self.locale = None - self.domain = 'messages' - self.no_wrap = False - self.width = None - - def finalize_options(self): - if not self.input_file: - raise DistutilsOptionError('you must specify the input file') - - if not self.locale: - raise DistutilsOptionError('you must provide a locale for the ' - 'new catalog') - try: - self._locale = Locale.parse(self.locale) - except UnknownLocaleError as e: - raise DistutilsOptionError(e) - - if not self.output_file and not self.output_dir: - raise DistutilsOptionError('you must specify the output directory') - if not self.output_file: - self.output_file = os.path.join(self.output_dir, self.locale, - 'LC_MESSAGES', self.domain + '.po') - - if not os.path.exists(os.path.dirname(self.output_file)): - os.makedirs(os.path.dirname(self.output_file)) - if self.no_wrap and self.width: - raise DistutilsOptionError("'--no-wrap' and '--width' are mutually " - "exclusive") - if not self.no_wrap and not self.width: - self.width = 76 - elif self.width is not None: - self.width = int(self.width) - - def run(self): - self.log.info( - 'creating catalog %s based on %s', self.output_file, self.input_file - ) - - with open(self.input_file, 'rb') as infile: - # Although reading from the catalog template, read_po must be fed - # the locale in order to correctly calculate plurals - catalog = read_po(infile, locale=self.locale) - - catalog.locale = self._locale - catalog.revision_date = datetime.now(LOCALTZ) - catalog.fuzzy = False - - with open(self.output_file, 'wb') as outfile: - write_po(outfile, catalog, width=self.width) - - -class update_catalog(Command): - """Catalog merging command for use in ``setup.py`` scripts. - - If correctly installed, this command is available to Setuptools-using - setup scripts automatically. For projects using plain old ``distutils``, - the command needs to be registered explicitly in ``setup.py``:: - - from babel.messages.frontend import update_catalog - - setup( - ... - cmdclass = {'update_catalog': update_catalog} - ) - - .. versionadded:: 0.9 - """ - - description = 'update message catalogs from a POT file' - user_options = [ - ('domain=', 'D', - "domain of PO file (default 'messages')"), - ('input-file=', 'i', - 'name of the input file'), - ('output-dir=', 'd', - 'path to base directory containing the catalogs'), - ('output-file=', 'o', - "name of the output file (default " - "'//LC_MESSAGES/.po')"), - ('omit-header', None, - "do not include msgid "" entry in header"), - ('locale=', 'l', - 'locale of the catalog to compile'), - ('width=', 'w', - 'set output line width (default 76)'), - ('no-wrap', None, - 'do not break long message lines, longer than the output line width, ' - 'into several lines'), - ('ignore-obsolete=', None, - 'whether to omit obsolete messages from the output'), - ('no-fuzzy-matching', 'N', - 'do not use fuzzy matching'), - ('update-header-comment', None, - 'update target header comment'), - ('previous', None, - 'keep previous msgids of translated messages'), - ] - boolean_options = [ - 'omit-header', 'no-wrap', 'ignore-obsolete', 'no-fuzzy-matching', - 'previous', 'update-header-comment', - ] - - def initialize_options(self): - self.domain = 'messages' - self.input_file = None - self.output_dir = None - self.output_file = None - self.omit_header = False - self.locale = None - self.width = None - self.no_wrap = False - self.ignore_obsolete = False - self.no_fuzzy_matching = False - self.update_header_comment = False - self.previous = False - - def finalize_options(self): - if not self.input_file: - raise DistutilsOptionError('you must specify the input file') - if not self.output_file and not self.output_dir: - raise DistutilsOptionError('you must specify the output file or ' - 'directory') - if self.output_file and not self.locale: - raise DistutilsOptionError('you must specify the locale') - if self.no_wrap and self.width: - raise DistutilsOptionError("'--no-wrap' and '--width' are mutually " - "exclusive") - if not self.no_wrap and not self.width: - self.width = 76 - elif self.width is not None: - self.width = int(self.width) - if self.no_fuzzy_matching and self.previous: - self.previous = False - - def run(self): - po_files = [] - if not self.output_file: - if self.locale: - po_files.append((self.locale, - os.path.join(self.output_dir, self.locale, - 'LC_MESSAGES', - self.domain + '.po'))) - else: - for locale in os.listdir(self.output_dir): - po_file = os.path.join(self.output_dir, locale, - 'LC_MESSAGES', - self.domain + '.po') - if os.path.exists(po_file): - po_files.append((locale, po_file)) - else: - po_files.append((self.locale, self.output_file)) - - if not po_files: - raise DistutilsOptionError('no message catalogs found') - - domain = self.domain - if not domain: - domain = os.path.splitext(os.path.basename(self.input_file))[0] - - with open(self.input_file, 'rb') as infile: - template = read_po(infile) - - for locale, filename in po_files: - self.log.info('updating catalog %s based on %s', filename, self.input_file) - with open(filename, 'rb') as infile: - catalog = read_po(infile, locale=locale, domain=domain) - - catalog.update( - template, self.no_fuzzy_matching, - update_header_comment=self.update_header_comment - ) - - tmpname = os.path.join(os.path.dirname(filename), - tempfile.gettempprefix() + - os.path.basename(filename)) - try: - with open(tmpname, 'wb') as tmpfile: - write_po(tmpfile, catalog, - omit_header=self.omit_header, - ignore_obsolete=self.ignore_obsolete, - include_previous=self.previous, width=self.width) - except: - os.remove(tmpname) - raise - - try: - os.rename(tmpname, filename) - except OSError: - # We're probably on Windows, which doesn't support atomic - # renames, at least not through Python - # If the error is in fact due to a permissions problem, that - # same error is going to be raised from one of the following - # operations - os.remove(filename) - shutil.copy(tmpname, filename) - os.remove(tmpname) - - -class CommandLineInterface(object): - """Command-line interface. - - This class provides a simple command-line interface to the message - extraction and PO file generation functionality. - """ - - usage = '%%prog %s [options] %s' - version = '%%prog %s' % VERSION - commands = { - 'compile': 'compile message catalogs to MO files', - 'extract': 'extract messages from source files and generate a POT file', - 'init': 'create new message catalogs from a POT file', - 'update': 'update existing message catalogs from a POT file' - } - - command_classes = { - 'compile': compile_catalog, - 'extract': extract_messages, - 'init': init_catalog, - 'update': update_catalog, - } - - log = None # Replaced on instance level - - def run(self, argv=None): - """Main entry point of the command-line interface. - - :param argv: list of arguments passed on the command-line - """ - - if argv is None: - argv = sys.argv - - self.parser = optparse.OptionParser(usage=self.usage % ('command', '[args]'), - version=self.version) - self.parser.disable_interspersed_args() - self.parser.print_help = self._help - self.parser.add_option('--list-locales', dest='list_locales', - action='store_true', - help="print all known locales and exit") - self.parser.add_option('-v', '--verbose', action='store_const', - dest='loglevel', const=logging.DEBUG, - help='print as much as possible') - self.parser.add_option('-q', '--quiet', action='store_const', - dest='loglevel', const=logging.ERROR, - help='print as little as possible') - self.parser.set_defaults(list_locales=False, loglevel=logging.INFO) - - options, args = self.parser.parse_args(argv[1:]) - - self._configure_logging(options.loglevel) - if options.list_locales: - identifiers = localedata.locale_identifiers() - longest = max([len(identifier) for identifier in identifiers]) - identifiers.sort() - format = u'%%-%ds %%s' % (longest + 1) - for identifier in identifiers: - locale = Locale.parse(identifier) - output = format % (identifier, locale.english_name) - print(output.encode(sys.stdout.encoding or - getpreferredencoding() or - 'ascii', 'replace')) - return 0 - - if not args: - self.parser.error('no valid command or option passed. ' - 'Try the -h/--help option for more information.') - - cmdname = args[0] - if cmdname not in self.commands: - self.parser.error('unknown command "%s"' % cmdname) - - cmdinst = self._configure_command(cmdname, args[1:]) - return cmdinst.run() - - def _configure_logging(self, loglevel): - self.log = logging.getLogger('babel') - self.log.setLevel(loglevel) - # Don't add a new handler for every instance initialization (#227), this - # would cause duplicated output when the CommandLineInterface as an - # normal Python class. - if self.log.handlers: - handler = self.log.handlers[0] - else: - handler = logging.StreamHandler() - self.log.addHandler(handler) - handler.setLevel(loglevel) - formatter = logging.Formatter('%(message)s') - handler.setFormatter(formatter) - - def _help(self): - print(self.parser.format_help()) - print("commands:") - longest = max([len(command) for command in self.commands]) - format = " %%-%ds %%s" % max(8, longest + 1) - commands = sorted(self.commands.items()) - for name, description in commands: - print(format % (name, description)) - - def _configure_command(self, cmdname, argv): - """ - :type cmdname: str - :type argv: list[str] - """ - cmdclass = self.command_classes[cmdname] - cmdinst = cmdclass() - if self.log: - cmdinst.log = self.log # Use our logger, not distutils'. - assert isinstance(cmdinst, Command) - cmdinst.initialize_options() - - parser = optparse.OptionParser( - usage=self.usage % (cmdname, ''), - description=self.commands[cmdname] - ) - as_args = getattr(cmdclass, "as_args", ()) - for long, short, help in cmdclass.user_options: - name = long.strip("=") - default = getattr(cmdinst, name.replace('-', '_')) - strs = ["--%s" % name] - if short: - strs.append("-%s" % short) - strs.extend(cmdclass.option_aliases.get(name, ())) - choices = cmdclass.option_choices.get(name, None) - if name == as_args: - parser.usage += "<%s>" % name - elif name in cmdclass.boolean_options: - parser.add_option(*strs, action="store_true", help=help) - elif name in cmdclass.multiple_value_options: - parser.add_option(*strs, action="append", help=help, choices=choices) - else: - parser.add_option(*strs, help=help, default=default, choices=choices) - options, args = parser.parse_args(argv) - - if as_args: - setattr(options, as_args.replace('-', '_'), args) - - for key, value in vars(options).items(): - setattr(cmdinst, key, value) - - try: - cmdinst.ensure_finalized() - except DistutilsOptionError as err: - parser.error(str(err)) - - return cmdinst - - -def main(): - return CommandLineInterface().run(sys.argv) - - -def parse_mapping(fileobj, filename=None): - """Parse an extraction method mapping from a file-like object. - - >>> buf = StringIO(''' - ... [extractors] - ... custom = mypackage.module:myfunc - ... - ... # Python source files - ... [python: **.py] - ... - ... # Genshi templates - ... [genshi: **/templates/**.html] - ... include_attrs = - ... [genshi: **/templates/**.txt] - ... template_class = genshi.template:TextTemplate - ... encoding = latin-1 - ... - ... # Some custom extractor - ... [custom: **/custom/*.*] - ... ''') - - >>> method_map, options_map = parse_mapping(buf) - >>> len(method_map) - 4 - - >>> method_map[0] - ('**.py', 'python') - >>> options_map['**.py'] - {} - >>> method_map[1] - ('**/templates/**.html', 'genshi') - >>> options_map['**/templates/**.html']['include_attrs'] - '' - >>> method_map[2] - ('**/templates/**.txt', 'genshi') - >>> options_map['**/templates/**.txt']['template_class'] - 'genshi.template:TextTemplate' - >>> options_map['**/templates/**.txt']['encoding'] - 'latin-1' - - >>> method_map[3] - ('**/custom/*.*', 'mypackage.module:myfunc') - >>> options_map['**/custom/*.*'] - {} - - :param fileobj: a readable file-like object containing the configuration - text to parse - :see: `extract_from_directory` - """ - extractors = {} - method_map = [] - options_map = {} - - parser = RawConfigParser() - parser._sections = OrderedDict(parser._sections) # We need ordered sections - - if PY2: - parser.readfp(fileobj, filename) - else: - parser.read_file(fileobj, filename) - - for section in parser.sections(): - if section == 'extractors': - extractors = dict(parser.items(section)) - else: - method, pattern = [part.strip() for part in section.split(':', 1)] - method_map.append((pattern, method)) - options_map[pattern] = dict(parser.items(section)) - - if extractors: - for idx, (pattern, method) in enumerate(method_map): - if method in extractors: - method = extractors[method] - method_map[idx] = (pattern, method) - - return method_map, options_map - - -def parse_keywords(strings=[]): - """Parse keywords specifications from the given list of strings. - - >>> kw = sorted(parse_keywords(['_', 'dgettext:2', 'dngettext:2,3', 'pgettext:1c,2']).items()) - >>> for keyword, indices in kw: - ... print((keyword, indices)) - ('_', None) - ('dgettext', (2,)) - ('dngettext', (2, 3)) - ('pgettext', ((1, 'c'), 2)) - """ - keywords = {} - for string in strings: - if ':' in string: - funcname, indices = string.split(':') - else: - funcname, indices = string, None - if funcname not in keywords: - if indices: - inds = [] - for x in indices.split(','): - if x[-1] == 'c': - inds.append((int(x[:-1]), 'c')) - else: - inds.append(int(x)) - indices = tuple(inds) - keywords[funcname] = indices - return keywords - - -if __name__ == '__main__': - main() diff --git a/venv/lib/python3.7/site-packages/babel/messages/jslexer.py b/venv/lib/python3.7/site-packages/babel/messages/jslexer.py deleted file mode 100644 index ace0b47..0000000 --- a/venv/lib/python3.7/site-packages/babel/messages/jslexer.py +++ /dev/null @@ -1,185 +0,0 @@ -# -*- coding: utf-8 -*- -""" - babel.messages.jslexer - ~~~~~~~~~~~~~~~~~~~~~~ - - A simple JavaScript 1.5 lexer which is used for the JavaScript - extractor. - - :copyright: (c) 2013-2019 by the Babel Team. - :license: BSD, see LICENSE for more details. -""" -from collections import namedtuple -import re -from babel._compat import unichr - -operators = sorted([ - '+', '-', '*', '%', '!=', '==', '<', '>', '<=', '>=', '=', - '+=', '-=', '*=', '%=', '<<', '>>', '>>>', '<<=', '>>=', - '>>>=', '&', '&=', '|', '|=', '&&', '||', '^', '^=', '(', ')', - '[', ']', '{', '}', '!', '--', '++', '~', ',', ';', '.', ':' -], key=len, reverse=True) - -escapes = {'b': '\b', 'f': '\f', 'n': '\n', 'r': '\r', 't': '\t'} - -name_re = re.compile(r'[\w$_][\w\d$_]*', re.UNICODE) -dotted_name_re = re.compile(r'[\w$_][\w\d$_.]*[\w\d$_.]', re.UNICODE) -division_re = re.compile(r'/=?') -regex_re = re.compile(r'/(?:[^/\\]*(?:\\.[^/\\]*)*)/[a-zA-Z]*', re.DOTALL) -line_re = re.compile(r'(\r\n|\n|\r)') -line_join_re = re.compile(r'\\' + line_re.pattern) -uni_escape_re = re.compile(r'[a-fA-F0-9]{1,4}') - -Token = namedtuple('Token', 'type value lineno') - -_rules = [ - (None, re.compile(r'\s+', re.UNICODE)), - (None, re.compile(r'