nidhal baccouri commited on
Commit
d3c12a3
·
1 Parent(s): c585ffe

updated cli in argparse

Browse files
deep_translator/__main__.py ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import argparse
3
+ from .cli import CLI
4
+
5
+
6
+ def main():
7
+ """
8
+ function responsible for parsing terminal arguments and provide them for further use in the translation process
9
+ """
10
+ parser = argparse.ArgumentParser(add_help=True,
11
+ description="Official CLI for deep-translator",
12
+ usage="dt --help")
13
+
14
+ parser.add_argument('--translator',
15
+ '-trans',
16
+ default='google',
17
+ type=str,
18
+ help="name of the translator you want to use",
19
+ required=True)
20
+ parser.add_argument('--source',
21
+ '-src',
22
+ type=str,
23
+ help="source language to translate from")
24
+ parser.add_argument('--target',
25
+ '-tg',
26
+ type=str,
27
+ help="target language to translate to")
28
+ parser.add_argument('--text',
29
+ '-txt',
30
+ type=str,
31
+ help="text you want to translate")
32
+ parser.add_argument('--languages',
33
+ '-lang',
34
+ action='store_true',
35
+ help="all the languages available with the translator"
36
+ "Run the command deep_translator -trans <translator service> -lang")
37
+
38
+ args = parser.parse_args()
39
+
40
+ cli = CLI()
41
+ if args.languages:
42
+ cli.get_supported_languages(args)
43
+ else:
44
+ cli.translate(args)
45
+
46
+
47
+ if __name__ == "__main__":
48
+ main()
deep_translator/cli.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Console script for deep_translator."""
2
+ import sys
3
+
4
+ from .google_trans import GoogleTranslator
5
+ from .mymemory import MyMemoryTranslator
6
+ from .pons import PonsTranslator
7
+ from .linguee import LingueeTranslator
8
+ from .yandex import YandexTranslator
9
+ from .deepl import DeepL
10
+ from .qcri import QCRI
11
+ from .papago import PapagoTranslator
12
+ from .microsoft import MicrosoftTranslator
13
+ from .libre import LibreTranslator
14
+
15
+
16
+ class CLI(object):
17
+
18
+ translators_dict = None
19
+
20
+ def __init__(self):
21
+ self.translators_dict = {
22
+ 'google': GoogleTranslator,
23
+ 'pons': PonsTranslator,
24
+ 'linguee': LingueeTranslator,
25
+ 'mymemory': MyMemoryTranslator,
26
+ 'deepl': DeepL,
27
+ 'libre': LibreTranslator,
28
+ 'yandex': YandexTranslator,
29
+ 'microsoft': MicrosoftTranslator,
30
+ 'qcri': QCRI,
31
+ 'papago': PapagoTranslator
32
+ }
33
+
34
+ def _get_translator(self, name):
35
+ return self.translators_dict[name]
36
+
37
+ def translate(self, args):
38
+ """
39
+ function used to provide translations from the parsed terminal arguments
40
+ @param args: parsed terminal arguments
41
+ @return: None
42
+ """
43
+ translator = self._get_translator(args.translator)
44
+ res = translator.translate(args.text)
45
+ print(" | Translation from {} to {} |".format(args.source, args.target))
46
+ print("Translated text: \n {}".format(res))
47
+
48
+ def get_supported_languages(self, args):
49
+ """
50
+ function used to return the languages supported by the translator service from the parsed terminal arguments
51
+ @param args: parsed terminal arguments
52
+ @return: None
53
+ """
54
+ translator = self._get_translator(args.translator)
55
+ translator_supported_languages = translator.get_supported_languages(as_dict=True)
56
+ print(f'Languages supported by \'{args.translator}\' are :\n')
57
+ print(translator_supported_languages)
58
+ sys.exit()
59
+
60
+
61
+
deep_translator/main.py DELETED
@@ -1,132 +0,0 @@
1
- """Console script for deep_translator."""
2
-
3
- import click
4
- from .google_trans import GoogleTranslator
5
- from .mymemory import MyMemoryTranslator
6
- from .deepl import DeepL
7
- from .qcri import QCRI
8
- from .linguee import LingueeTranslator
9
- from .pons import PonsTranslator
10
- from .yandex import YandexTranslator
11
- from .microsoft import MicrosoftTranslator
12
- from .papago import PapagoTranslator
13
- from .libre import LibreTranslator
14
-
15
- CONTEXT_SETTINGS = dict(help_option_names=["-h", "--help"])
16
- @click.group()
17
- def cli():
18
- pass
19
-
20
- @cli.command(context_settings=CONTEXT_SETTINGS, no_args_is_help=True)
21
- @click.argument('translator', required=True, default='google', type=str)
22
- @click.option("--source", "-src", required=True, type=str, help="source language to translate from")
23
- @click.option("--target", "-tgt", required=True, type=str, help="target language to translate to")
24
- @click.option("--text", "-txt", type=str,required = True,prompt="Enter the text you want to translate",help="text you want to translate")
25
- @click.option("--api-key",type=str,help="required for DeepL, QCRI, Yandex, Microsoft and Papago translators")
26
- def translate(translator, source, target, text, api_key):
27
- """
28
- Use TRANSLATOR to translate source material into another language.
29
- \f
30
- Directory function to send arguments to the correct translator.
31
- @param translator: translator name parsed from terminal arguments
32
- @return: None
33
- """
34
- api_key_required = ["deepl", "qcri", "yandex", "microsoft", "papago"]
35
- if translator in api_key_required and not api_key:
36
- click.echo(
37
- "This translator requires an api key provided through --api-key")
38
- else:
39
- pass
40
-
41
- if translator == "google":
42
- translator = GoogleTranslator(source=source, target=target)
43
- elif translator == "mymemory":
44
- translator = MyMemoryTranslator(source=source, target=target)
45
- elif translator == "deepl":
46
- translator = DeepL(source=source, target=target, api_key=api_key)
47
- elif translator == "qcri":
48
- translator = QCRI(source=source, target=target, api_key=api_key)
49
- elif translator == "linguee":
50
- translator = LingueeTranslator(source=source, target=target)
51
- elif translator == "pons":
52
- translator = PonsTranslator(source=source, target=target)
53
- elif translator == "yandex":
54
- translator = YandexTranslator(
55
- source=source,
56
- target=target,
57
- api_key=api_key)
58
- elif translator == "microsoft":
59
- translator = MicrosoftTranslator(
60
- source=source,
61
- target=target,
62
- api_key=api_key)
63
- elif translator == "papago":
64
- translator = PapagoTranslator(
65
- source=source,
66
- target=target,
67
- api_key=api_key)
68
- elif translator == "libre":
69
- translator= LibreTranslator(
70
- source=source,
71
- target=target
72
- )
73
- else:
74
- raise AttributeError("The given translator is not supported.")
75
-
76
- res = translator.translate(text)
77
- click.echo(f" | Translation from {source} to {target} |")
78
- click.echo(f"Translated text: \n {res}")
79
- return 0
80
-
81
- @cli.command(context_settings=CONTEXT_SETTINGS, no_args_is_help=True)
82
- @click.argument('translator')
83
- @click.argument('api_key', required=False)
84
- def languages(translator, api_key):
85
- """
86
- Retrieve the list of available languages from the given translator.
87
- @param translator: Translator given by the user.
88
- @param api_key: Optional API key given by the user. Required for some translators.
89
- @return: None
90
- """
91
- translator = translator.lower()
92
- api_key_required = ["deepl", "qcri", "yandex", "microsoft", "papago"]
93
- if translator in api_key_required and not api_key:
94
- click.echo("This translator requires an api key provided through --api-key")
95
- else:
96
- pass
97
-
98
- if translator == "google":
99
- translator = GoogleTranslator
100
- elif translator == "mymemory":
101
- translator = MyMemoryTranslator
102
- elif translator == "qcri":
103
- translator = QCRI(api_key=api_key)
104
- elif translator == "linguee":
105
- translator = LingueeTranslator
106
- elif translator == "pons":
107
- translator = PonsTranslator
108
- elif translator == "yandex":
109
- translator = YandexTranslator(api_key=api_key)
110
- elif translator == "microsoft":
111
- translator = MicrosoftTranslator(api_key=api_key)
112
- elif translator == "papago":
113
- translator = PapagoTranslator(api_key=api_key)
114
- elif translator == "libre":
115
- translator = LibreTranslator
116
- else:
117
- raise AttributeError("The given translator is not supported.")
118
-
119
- supported_languages = translator.get_supported_languages(as_dict=True)
120
- click.echo(f"Languages supported by '{translator}' are :")
121
- for k, v in supported_languages.items():
122
- click.echo(f"|- {k}: {v}")
123
- return 0
124
-
125
- @cli.command()
126
- def list():
127
- """Lists available translators."""
128
- click.echo("Available translators include: Google, MyMemory, QCRI, Linguee, Pons, Yandex, Microsoft (Bing), Papago and LibreTranslate.")
129
- return 0
130
-
131
- if __name__ == "__main__":
132
- cli()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
poetry.lock CHANGED
@@ -16,17 +16,17 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
16
 
17
  [[package]]
18
  name = "attrs"
19
- version = "21.2.0"
20
  description = "Classes Without Boilerplate"
21
  category = "dev"
22
  optional = false
23
  python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
24
 
25
  [package.extras]
26
- dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"]
27
  docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
28
- tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"]
29
- tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"]
30
 
31
  [[package]]
32
  name = "babel"
@@ -88,7 +88,7 @@ pycparser = "*"
88
 
89
  [[package]]
90
  name = "charset-normalizer"
91
- version = "2.0.7"
92
  description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
93
  category = "main"
94
  optional = false
@@ -97,23 +97,11 @@ python-versions = ">=3.5.0"
97
  [package.extras]
98
  unicode_backport = ["unicodedata2"]
99
 
100
- [[package]]
101
- name = "click"
102
- version = "8.0.3"
103
- description = "Composable command line interface toolkit"
104
- category = "main"
105
- optional = false
106
- python-versions = ">=3.6"
107
-
108
- [package.dependencies]
109
- colorama = {version = "*", markers = "platform_system == \"Windows\""}
110
- importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
111
-
112
  [[package]]
113
  name = "colorama"
114
  version = "0.4.4"
115
  description = "Cross-platform colored terminal text."
116
- category = "main"
117
  optional = false
118
  python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
119
 
@@ -130,7 +118,7 @@ toml = ["toml"]
130
 
131
  [[package]]
132
  name = "cryptography"
133
- version = "35.0.0"
134
  description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
135
  category = "dev"
136
  optional = false
@@ -141,7 +129,7 @@ cffi = ">=1.12"
141
 
142
  [package.extras]
143
  docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"]
144
- docstest = ["doc8", "pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"]
145
  pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"]
146
  sdist = ["setuptools_rust (>=0.11.4)"]
147
  ssh = ["bcrypt (>=3.1.5)"]
@@ -173,11 +161,11 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
173
 
174
  [[package]]
175
  name = "importlib-metadata"
176
- version = "4.8.2"
177
  description = "Read metadata from Python packages"
178
- category = "main"
179
  optional = false
180
- python-versions = ">=3.6"
181
 
182
  [package.dependencies]
183
  typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""}
@@ -186,7 +174,7 @@ zipp = ">=0.5"
186
  [package.extras]
187
  docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
188
  perf = ["ipython"]
189
- testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"]
190
 
191
  [[package]]
192
  name = "iniconfig"
@@ -224,11 +212,11 @@ i18n = ["Babel (>=2.7)"]
224
 
225
  [[package]]
226
  name = "keyring"
227
- version = "23.2.1"
228
  description = "Store and access your passwords safely."
229
  category = "dev"
230
  optional = false
231
- python-versions = ">=3.6"
232
 
233
  [package.dependencies]
234
  importlib-metadata = ">=3.6"
@@ -237,8 +225,8 @@ pywin32-ctypes = {version = "<0.1.0 || >0.1.0,<0.1.1 || >0.1.1", markers = "sys_
237
  SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""}
238
 
239
  [package.extras]
240
- docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
241
- testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy"]
242
 
243
  [[package]]
244
  name = "markupsafe"
@@ -261,14 +249,14 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
261
 
262
  [[package]]
263
  name = "pkginfo"
264
- version = "1.7.1"
265
  description = "Query metadatdata from sdists / bdists / installed packages."
266
  category = "dev"
267
  optional = false
268
  python-versions = "*"
269
 
270
  [package.extras]
271
- testing = ["nose", "coverage"]
272
 
273
  [[package]]
274
  name = "pluggy"
@@ -303,7 +291,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
303
 
304
  [[package]]
305
  name = "pygments"
306
- version = "2.10.0"
307
  description = "Pygments is a syntax highlighting package written in Python."
308
  category = "dev"
309
  optional = false
@@ -311,7 +299,7 @@ python-versions = ">=3.5"
311
 
312
  [[package]]
313
  name = "pyparsing"
314
- version = "3.0.6"
315
  description = "Python parsing module"
316
  category = "dev"
317
  optional = false
@@ -372,11 +360,11 @@ python-versions = "*"
372
 
373
  [[package]]
374
  name = "readme-renderer"
375
- version = "30.0"
376
  description = "readme_renderer is a library for rendering \"readme\" descriptions for Warehouse"
377
  category = "dev"
378
  optional = false
379
- python-versions = "*"
380
 
381
  [package.dependencies]
382
  bleach = ">=2.1.0"
@@ -388,7 +376,7 @@ md = ["cmarkgfm (>=0.5.0,<0.7.0)"]
388
 
389
  [[package]]
390
  name = "requests"
391
- version = "2.26.0"
392
  description = "Python HTTP for Humans."
393
  category = "main"
394
  optional = false
@@ -417,11 +405,11 @@ requests = ">=2.0.1,<3.0.0"
417
 
418
  [[package]]
419
  name = "rfc3986"
420
- version = "1.5.0"
421
  description = "Validating URI References per RFC 3986"
422
  category = "dev"
423
  optional = false
424
- python-versions = "*"
425
 
426
  [package.extras]
427
  idna2008 = ["idna"]
@@ -464,7 +452,7 @@ python-versions = ">=3.6"
464
 
465
  [[package]]
466
  name = "sphinx"
467
- version = "4.3.0"
468
  description = "Python documentation generator"
469
  category = "dev"
470
  optional = false
@@ -476,6 +464,7 @@ babel = ">=1.3"
476
  colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""}
477
  docutils = ">=0.14,<0.18"
478
  imagesize = "*"
 
479
  Jinja2 = ">=2.3"
480
  packaging = "*"
481
  Pygments = ">=2.0"
@@ -490,7 +479,7 @@ sphinxcontrib-serializinghtml = ">=1.1.5"
490
 
491
  [package.extras]
492
  docs = ["sphinxcontrib-websupport"]
493
- lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.900)", "docutils-stubs", "types-typed-ast", "types-pkg-resources", "types-requests"]
494
  test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"]
495
 
496
  [[package]]
@@ -590,7 +579,7 @@ telegram = ["requests"]
590
 
591
  [[package]]
592
  name = "twine"
593
- version = "3.6.0"
594
  description = "Collection of utilities for publishing packages on PyPI"
595
  category = "dev"
596
  optional = false
@@ -600,24 +589,25 @@ python-versions = ">=3.6"
600
  colorama = ">=0.4.3"
601
  importlib-metadata = ">=3.6"
602
  keyring = ">=15.1"
603
- pkginfo = ">=1.4.2"
604
  readme-renderer = ">=21.0"
605
  requests = ">=2.20"
606
  requests-toolbelt = ">=0.8.0,<0.9.0 || >0.9.0"
607
  rfc3986 = ">=1.4.0"
608
  tqdm = ">=4.14"
 
609
 
610
  [[package]]
611
  name = "typing-extensions"
612
- version = "4.0.0"
613
  description = "Backported and Experimental Type Hints for Python 3.6+"
614
- category = "main"
615
  optional = false
616
  python-versions = ">=3.6"
617
 
618
  [[package]]
619
  name = "urllib3"
620
- version = "1.26.7"
621
  description = "HTTP library with thread-safe connection pooling, file post, and more."
622
  category = "main"
623
  optional = false
@@ -638,20 +628,20 @@ python-versions = "*"
638
 
639
  [[package]]
640
  name = "zipp"
641
- version = "3.6.0"
642
  description = "Backport of pathlib-compatible object wrapper for zip files"
643
- category = "main"
644
  optional = false
645
- python-versions = ">=3.6"
646
 
647
  [package.extras]
648
  docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
649
- testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
650
 
651
  [metadata]
652
  lock-version = "1.1"
653
  python-versions = "^3.7"
654
- content-hash = "b07152dec26ab024bb88d96ed0662e0d575390d70ef05ca6c03c9468cf22d699"
655
 
656
  [metadata.files]
657
  alabaster = [
@@ -663,8 +653,8 @@ atomicwrites = [
663
  {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
664
  ]
665
  attrs = [
666
- {file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"},
667
- {file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"},
668
  ]
669
  babel = [
670
  {file = "Babel-2.9.1-py2.py3-none-any.whl", hash = "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9"},
@@ -735,12 +725,8 @@ cffi = [
735
  {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"},
736
  ]
737
  charset-normalizer = [
738
- {file = "charset-normalizer-2.0.7.tar.gz", hash = "sha256:e019de665e2bcf9c2b64e2e5aa025fa991da8720daa3c1138cadd2fd1856aed0"},
739
- {file = "charset_normalizer-2.0.7-py3-none-any.whl", hash = "sha256:f7af805c321bfa1ce6714c51f254e0d5bb5e5834039bc17db7ebe3a4cec9492b"},
740
- ]
741
- click = [
742
- {file = "click-8.0.3-py3-none-any.whl", hash = "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3"},
743
- {file = "click-8.0.3.tar.gz", hash = "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b"},
744
  ]
745
  colorama = [
746
  {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
@@ -801,26 +787,26 @@ coverage = [
801
  {file = "coverage-5.5.tar.gz", hash = "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c"},
802
  ]
803
  cryptography = [
804
- {file = "cryptography-35.0.0-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:d57e0cdc1b44b6cdf8af1d01807db06886f10177469312fbde8f44ccbb284bc9"},
805
- {file = "cryptography-35.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:ced40344e811d6abba00295ced98c01aecf0c2de39481792d87af4fa58b7b4d6"},
806
- {file = "cryptography-35.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:54b2605e5475944e2213258e0ab8696f4f357a31371e538ef21e8d61c843c28d"},
807
- {file = "cryptography-35.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:7b7ceeff114c31f285528ba8b390d3e9cfa2da17b56f11d366769a807f17cbaa"},
808
- {file = "cryptography-35.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d69645f535f4b2c722cfb07a8eab916265545b3475fdb34e0be2f4ee8b0b15e"},
809
- {file = "cryptography-35.0.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a2d0e0acc20ede0f06ef7aa58546eee96d2592c00f450c9acb89c5879b61992"},
810
- {file = "cryptography-35.0.0-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:07bb7fbfb5de0980590ddfc7f13081520def06dc9ed214000ad4372fb4e3c7f6"},
811
- {file = "cryptography-35.0.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:7eba2cebca600a7806b893cb1d541a6e910afa87e97acf2021a22b32da1df52d"},
812
- {file = "cryptography-35.0.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:18d90f4711bf63e2fb21e8c8e51ed8189438e6b35a6d996201ebd98a26abbbe6"},
813
- {file = "cryptography-35.0.0-cp36-abi3-win32.whl", hash = "sha256:c10c797ac89c746e488d2ee92bd4abd593615694ee17b2500578b63cad6b93a8"},
814
- {file = "cryptography-35.0.0-cp36-abi3-win_amd64.whl", hash = "sha256:7075b304cd567694dc692ffc9747f3e9cb393cc4aa4fb7b9f3abd6f5c4e43588"},
815
- {file = "cryptography-35.0.0-pp36-pypy36_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a688ebcd08250eab5bb5bca318cc05a8c66de5e4171a65ca51db6bd753ff8953"},
816
- {file = "cryptography-35.0.0-pp36-pypy36_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d99915d6ab265c22873f1b4d6ea5ef462ef797b4140be4c9d8b179915e0985c6"},
817
- {file = "cryptography-35.0.0-pp36-pypy36_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:928185a6d1ccdb816e883f56ebe92e975a262d31cc536429041921f8cb5a62fd"},
818
- {file = "cryptography-35.0.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ebeddd119f526bcf323a89f853afb12e225902a24d29b55fe18dd6fcb2838a76"},
819
- {file = "cryptography-35.0.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:22a38e96118a4ce3b97509443feace1d1011d0571fae81fc3ad35f25ba3ea999"},
820
- {file = "cryptography-35.0.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb80e8a1f91e4b7ef8b33041591e6d89b2b8e122d787e87eeb2b08da71bb16ad"},
821
- {file = "cryptography-35.0.0-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:abb5a361d2585bb95012a19ed9b2c8f412c5d723a9836418fab7aaa0243e67d2"},
822
- {file = "cryptography-35.0.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:1ed82abf16df40a60942a8c211251ae72858b25b7421ce2497c2eb7a1cee817c"},
823
- {file = "cryptography-35.0.0.tar.gz", hash = "sha256:9933f28f70d0517686bd7de36166dda42094eac49415459d9bdf5e7df3e0086d"},
824
  ]
825
  docutils = [
826
  {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"},
@@ -835,8 +821,8 @@ imagesize = [
835
  {file = "imagesize-1.3.0.tar.gz", hash = "sha256:cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d"},
836
  ]
837
  importlib-metadata = [
838
- {file = "importlib_metadata-4.8.2-py3-none-any.whl", hash = "sha256:53ccfd5c134223e497627b9815d5030edf77d2ed573922f7a0b8f8bb81a1c100"},
839
- {file = "importlib_metadata-4.8.2.tar.gz", hash = "sha256:75bdec14c397f528724c1bfd9709d660b33a4d2e77387a3358f20b848bb5e5fb"},
840
  ]
841
  iniconfig = [
842
  {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
@@ -851,8 +837,8 @@ jinja2 = [
851
  {file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"},
852
  ]
853
  keyring = [
854
- {file = "keyring-23.2.1-py3-none-any.whl", hash = "sha256:bd2145a237ed70c8ce72978b497619ddfcae640b6dcf494402d5143e37755c6e"},
855
- {file = "keyring-23.2.1.tar.gz", hash = "sha256:6334aee6073db2fb1f30892697b1730105b5e9a77ce7e61fca6b435225493efe"},
856
  ]
857
  markupsafe = [
858
  {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
@@ -895,8 +881,8 @@ packaging = [
895
  {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
896
  ]
897
  pkginfo = [
898
- {file = "pkginfo-1.7.1-py2.py3-none-any.whl", hash = "sha256:37ecd857b47e5f55949c41ed061eb51a0bee97a87c969219d144c0e023982779"},
899
- {file = "pkginfo-1.7.1.tar.gz", hash = "sha256:e7432f81d08adec7297633191bbf0bd47faf13cd8724c3a13250e51d542635bd"},
900
  ]
901
  pluggy = [
902
  {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
@@ -911,12 +897,12 @@ pycparser = [
911
  {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
912
  ]
913
  pygments = [
914
- {file = "Pygments-2.10.0-py3-none-any.whl", hash = "sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380"},
915
- {file = "Pygments-2.10.0.tar.gz", hash = "sha256:f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6"},
916
  ]
917
  pyparsing = [
918
- {file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"},
919
- {file = "pyparsing-3.0.6.tar.gz", hash = "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"},
920
  ]
921
  pytest = [
922
  {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
@@ -935,20 +921,20 @@ pywin32-ctypes = [
935
  {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"},
936
  ]
937
  readme-renderer = [
938
- {file = "readme_renderer-30.0-py2.py3-none-any.whl", hash = "sha256:3286806450d9961d6e3b5f8a59f77e61503799aca5155c8d8d40359b4e1e1adc"},
939
- {file = "readme_renderer-30.0.tar.gz", hash = "sha256:8299700d7a910c304072a7601eafada6712a5b011a20139417e1b1e9f04645d8"},
940
  ]
941
  requests = [
942
- {file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24"},
943
- {file = "requests-2.26.0.tar.gz", hash = "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"},
944
  ]
945
  requests-toolbelt = [
946
  {file = "requests-toolbelt-0.9.1.tar.gz", hash = "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0"},
947
  {file = "requests_toolbelt-0.9.1-py2.py3-none-any.whl", hash = "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f"},
948
  ]
949
  rfc3986 = [
950
- {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"},
951
- {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"},
952
  ]
953
  secretstorage = [
954
  {file = "SecretStorage-3.3.1-py3-none-any.whl", hash = "sha256:422d82c36172d88d6a0ed5afdec956514b189ddbfb72fefab0c8a1cee4eaf71f"},
@@ -967,8 +953,8 @@ soupsieve = [
967
  {file = "soupsieve-2.3.1.tar.gz", hash = "sha256:b8d49b1cd4f037c7082a9683dfa1801aa2597fb11c3a1155b7a5b94829b4f1f9"},
968
  ]
969
  sphinx = [
970
- {file = "Sphinx-4.3.0-py3-none-any.whl", hash = "sha256:7e2b30da5f39170efcd95c6270f07669d623c276521fee27ad6c380f49d2bf5b"},
971
- {file = "Sphinx-4.3.0.tar.gz", hash = "sha256:6d051ab6e0d06cba786c4656b0fe67ba259fe058410f49e95bee6e49c4052cbf"},
972
  ]
973
  sphinxcontrib-applehelp = [
974
  {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"},
@@ -1003,22 +989,22 @@ tqdm = [
1003
  {file = "tqdm-4.62.3.tar.gz", hash = "sha256:d359de7217506c9851b7869f3708d8ee53ed70a1b8edbba4dbcb47442592920d"},
1004
  ]
1005
  twine = [
1006
- {file = "twine-3.6.0-py3-none-any.whl", hash = "sha256:916070f8ecbd1985ebed5dbb02b9bda9a092882a96d7069d542d4fc0bb5c673c"},
1007
- {file = "twine-3.6.0.tar.gz", hash = "sha256:4caad5ef4722e127b3749052fcbffaaf71719b19d4fd4973b29c469957adeba2"},
1008
  ]
1009
  typing-extensions = [
1010
- {file = "typing_extensions-4.0.0-py3-none-any.whl", hash = "sha256:829704698b22e13ec9eaf959122315eabb370b0884400e9818334d8b677023d9"},
1011
- {file = "typing_extensions-4.0.0.tar.gz", hash = "sha256:2cdf80e4e04866a9b3689a51869016d36db0814d84b8d8a568d22781d45d27ed"},
1012
  ]
1013
  urllib3 = [
1014
- {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"},
1015
- {file = "urllib3-1.26.7.tar.gz", hash = "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"},
1016
  ]
1017
  webencodings = [
1018
  {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
1019
  {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
1020
  ]
1021
  zipp = [
1022
- {file = "zipp-3.6.0-py3-none-any.whl", hash = "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc"},
1023
- {file = "zipp-3.6.0.tar.gz", hash = "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"},
1024
  ]
 
16
 
17
  [[package]]
18
  name = "attrs"
19
+ version = "21.4.0"
20
  description = "Classes Without Boilerplate"
21
  category = "dev"
22
  optional = false
23
  python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
24
 
25
  [package.extras]
26
+ dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"]
27
  docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
28
+ tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"]
29
+ tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"]
30
 
31
  [[package]]
32
  name = "babel"
 
88
 
89
  [[package]]
90
  name = "charset-normalizer"
91
+ version = "2.0.11"
92
  description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
93
  category = "main"
94
  optional = false
 
97
  [package.extras]
98
  unicode_backport = ["unicodedata2"]
99
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  [[package]]
101
  name = "colorama"
102
  version = "0.4.4"
103
  description = "Cross-platform colored terminal text."
104
+ category = "dev"
105
  optional = false
106
  python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
107
 
 
118
 
119
  [[package]]
120
  name = "cryptography"
121
+ version = "36.0.1"
122
  description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
123
  category = "dev"
124
  optional = false
 
129
 
130
  [package.extras]
131
  docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"]
132
+ docstest = ["pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"]
133
  pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"]
134
  sdist = ["setuptools_rust (>=0.11.4)"]
135
  ssh = ["bcrypt (>=3.1.5)"]
 
161
 
162
  [[package]]
163
  name = "importlib-metadata"
164
+ version = "4.10.1"
165
  description = "Read metadata from Python packages"
166
+ category = "dev"
167
  optional = false
168
+ python-versions = ">=3.7"
169
 
170
  [package.dependencies]
171
  typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""}
 
174
  [package.extras]
175
  docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
176
  perf = ["ipython"]
177
+ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"]
178
 
179
  [[package]]
180
  name = "iniconfig"
 
212
 
213
  [[package]]
214
  name = "keyring"
215
+ version = "23.5.0"
216
  description = "Store and access your passwords safely."
217
  category = "dev"
218
  optional = false
219
+ python-versions = ">=3.7"
220
 
221
  [package.dependencies]
222
  importlib-metadata = ">=3.6"
 
225
  SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""}
226
 
227
  [package.extras]
228
+ docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"]
229
+ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy"]
230
 
231
  [[package]]
232
  name = "markupsafe"
 
249
 
250
  [[package]]
251
  name = "pkginfo"
252
+ version = "1.8.2"
253
  description = "Query metadatdata from sdists / bdists / installed packages."
254
  category = "dev"
255
  optional = false
256
  python-versions = "*"
257
 
258
  [package.extras]
259
+ testing = ["coverage", "nose"]
260
 
261
  [[package]]
262
  name = "pluggy"
 
291
 
292
  [[package]]
293
  name = "pygments"
294
+ version = "2.11.2"
295
  description = "Pygments is a syntax highlighting package written in Python."
296
  category = "dev"
297
  optional = false
 
299
 
300
  [[package]]
301
  name = "pyparsing"
302
+ version = "3.0.7"
303
  description = "Python parsing module"
304
  category = "dev"
305
  optional = false
 
360
 
361
  [[package]]
362
  name = "readme-renderer"
363
+ version = "32.0"
364
  description = "readme_renderer is a library for rendering \"readme\" descriptions for Warehouse"
365
  category = "dev"
366
  optional = false
367
+ python-versions = ">=3.6"
368
 
369
  [package.dependencies]
370
  bleach = ">=2.1.0"
 
376
 
377
  [[package]]
378
  name = "requests"
379
+ version = "2.27.1"
380
  description = "Python HTTP for Humans."
381
  category = "main"
382
  optional = false
 
405
 
406
  [[package]]
407
  name = "rfc3986"
408
+ version = "2.0.0"
409
  description = "Validating URI References per RFC 3986"
410
  category = "dev"
411
  optional = false
412
+ python-versions = ">=3.7"
413
 
414
  [package.extras]
415
  idna2008 = ["idna"]
 
452
 
453
  [[package]]
454
  name = "sphinx"
455
+ version = "4.4.0"
456
  description = "Python documentation generator"
457
  category = "dev"
458
  optional = false
 
464
  colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""}
465
  docutils = ">=0.14,<0.18"
466
  imagesize = "*"
467
+ importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""}
468
  Jinja2 = ">=2.3"
469
  packaging = "*"
470
  Pygments = ">=2.0"
 
479
 
480
  [package.extras]
481
  docs = ["sphinxcontrib-websupport"]
482
+ lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.931)", "docutils-stubs", "types-typed-ast", "types-requests"]
483
  test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"]
484
 
485
  [[package]]
 
579
 
580
  [[package]]
581
  name = "twine"
582
+ version = "3.8.0"
583
  description = "Collection of utilities for publishing packages on PyPI"
584
  category = "dev"
585
  optional = false
 
589
  colorama = ">=0.4.3"
590
  importlib-metadata = ">=3.6"
591
  keyring = ">=15.1"
592
+ pkginfo = ">=1.8.1"
593
  readme-renderer = ">=21.0"
594
  requests = ">=2.20"
595
  requests-toolbelt = ">=0.8.0,<0.9.0 || >0.9.0"
596
  rfc3986 = ">=1.4.0"
597
  tqdm = ">=4.14"
598
+ urllib3 = ">=1.26.0"
599
 
600
  [[package]]
601
  name = "typing-extensions"
602
+ version = "4.0.1"
603
  description = "Backported and Experimental Type Hints for Python 3.6+"
604
+ category = "dev"
605
  optional = false
606
  python-versions = ">=3.6"
607
 
608
  [[package]]
609
  name = "urllib3"
610
+ version = "1.26.8"
611
  description = "HTTP library with thread-safe connection pooling, file post, and more."
612
  category = "main"
613
  optional = false
 
628
 
629
  [[package]]
630
  name = "zipp"
631
+ version = "3.7.0"
632
  description = "Backport of pathlib-compatible object wrapper for zip files"
633
+ category = "dev"
634
  optional = false
635
+ python-versions = ">=3.7"
636
 
637
  [package.extras]
638
  docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
639
+ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
640
 
641
  [metadata]
642
  lock-version = "1.1"
643
  python-versions = "^3.7"
644
+ content-hash = "2877a59ad1ac817881dcea5583bd7f07310ab5da4301dda5dadbe598b9ec6511"
645
 
646
  [metadata.files]
647
  alabaster = [
 
653
  {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
654
  ]
655
  attrs = [
656
+ {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"},
657
+ {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"},
658
  ]
659
  babel = [
660
  {file = "Babel-2.9.1-py2.py3-none-any.whl", hash = "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9"},
 
725
  {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"},
726
  ]
727
  charset-normalizer = [
728
+ {file = "charset-normalizer-2.0.11.tar.gz", hash = "sha256:98398a9d69ee80548c762ba991a4728bfc3836768ed226b3945908d1a688371c"},
729
+ {file = "charset_normalizer-2.0.11-py3-none-any.whl", hash = "sha256:2842d8f5e82a1f6aa437380934d5e1cd4fcf2003b06fed6940769c164a480a45"},
 
 
 
 
730
  ]
731
  colorama = [
732
  {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
 
787
  {file = "coverage-5.5.tar.gz", hash = "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c"},
788
  ]
789
  cryptography = [
790
+ {file = "cryptography-36.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:73bc2d3f2444bcfeac67dd130ff2ea598ea5f20b40e36d19821b4df8c9c5037b"},
791
+ {file = "cryptography-36.0.1-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:2d87cdcb378d3cfed944dac30596da1968f88fb96d7fc34fdae30a99054b2e31"},
792
+ {file = "cryptography-36.0.1-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74d6c7e80609c0f4c2434b97b80c7f8fdfaa072ca4baab7e239a15d6d70ed73a"},
793
+ {file = "cryptography-36.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:6c0c021f35b421ebf5976abf2daacc47e235f8b6082d3396a2fe3ccd537ab173"},
794
+ {file = "cryptography-36.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d59a9d55027a8b88fd9fd2826c4392bd487d74bf628bb9d39beecc62a644c12"},
795
+ {file = "cryptography-36.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a817b961b46894c5ca8a66b599c745b9a3d9f822725221f0e0fe49dc043a3a3"},
796
+ {file = "cryptography-36.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:94ae132f0e40fe48f310bba63f477f14a43116f05ddb69d6fa31e93f05848ae2"},
797
+ {file = "cryptography-36.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:7be0eec337359c155df191d6ae00a5e8bbb63933883f4f5dffc439dac5348c3f"},
798
+ {file = "cryptography-36.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e0344c14c9cb89e76eb6a060e67980c9e35b3f36691e15e1b7a9e58a0a6c6dc3"},
799
+ {file = "cryptography-36.0.1-cp36-abi3-win32.whl", hash = "sha256:4caa4b893d8fad33cf1964d3e51842cd78ba87401ab1d2e44556826df849a8ca"},
800
+ {file = "cryptography-36.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:391432971a66cfaf94b21c24ab465a4cc3e8bf4a939c1ca5c3e3a6e0abebdbcf"},
801
+ {file = "cryptography-36.0.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bb5829d027ff82aa872d76158919045a7c1e91fbf241aec32cb07956e9ebd3c9"},
802
+ {file = "cryptography-36.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebc15b1c22e55c4d5566e3ca4db8689470a0ca2babef8e3a9ee057a8b82ce4b1"},
803
+ {file = "cryptography-36.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:596f3cd67e1b950bc372c33f1a28a0692080625592ea6392987dba7f09f17a94"},
804
+ {file = "cryptography-36.0.1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:30ee1eb3ebe1644d1c3f183d115a8c04e4e603ed6ce8e394ed39eea4a98469ac"},
805
+ {file = "cryptography-36.0.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec63da4e7e4a5f924b90af42eddf20b698a70e58d86a72d943857c4c6045b3ee"},
806
+ {file = "cryptography-36.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca238ceb7ba0bdf6ce88c1b74a87bffcee5afbfa1e41e173b1ceb095b39add46"},
807
+ {file = "cryptography-36.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:ca28641954f767f9822c24e927ad894d45d5a1e501767599647259cbf030b903"},
808
+ {file = "cryptography-36.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:39bdf8e70eee6b1c7b289ec6e5d84d49a6bfa11f8b8646b5b3dfe41219153316"},
809
+ {file = "cryptography-36.0.1.tar.gz", hash = "sha256:53e5c1dc3d7a953de055d77bef2ff607ceef7a2aac0353b5d630ab67f7423638"},
810
  ]
811
  docutils = [
812
  {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"},
 
821
  {file = "imagesize-1.3.0.tar.gz", hash = "sha256:cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d"},
822
  ]
823
  importlib-metadata = [
824
+ {file = "importlib_metadata-4.10.1-py3-none-any.whl", hash = "sha256:899e2a40a8c4a1aec681feef45733de8a6c58f3f6a0dbed2eb6574b4387a77b6"},
825
+ {file = "importlib_metadata-4.10.1.tar.gz", hash = "sha256:951f0d8a5b7260e9db5e41d429285b5f451e928479f19d80818878527d36e95e"},
826
  ]
827
  iniconfig = [
828
  {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
 
837
  {file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"},
838
  ]
839
  keyring = [
840
+ {file = "keyring-23.5.0-py3-none-any.whl", hash = "sha256:b0d28928ac3ec8e42ef4cc227822647a19f1d544f21f96457965dc01cf555261"},
841
+ {file = "keyring-23.5.0.tar.gz", hash = "sha256:9012508e141a80bd1c0b6778d5c610dd9f8c464d75ac6774248500503f972fb9"},
842
  ]
843
  markupsafe = [
844
  {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
 
881
  {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
882
  ]
883
  pkginfo = [
884
+ {file = "pkginfo-1.8.2-py2.py3-none-any.whl", hash = "sha256:c24c487c6a7f72c66e816ab1796b96ac6c3d14d49338293d2141664330b55ffc"},
885
+ {file = "pkginfo-1.8.2.tar.gz", hash = "sha256:542e0d0b6750e2e21c20179803e40ab50598d8066d51097a0e382cba9eb02bff"},
886
  ]
887
  pluggy = [
888
  {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
 
897
  {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
898
  ]
899
  pygments = [
900
+ {file = "Pygments-2.11.2-py3-none-any.whl", hash = "sha256:44238f1b60a76d78fc8ca0528ee429702aae011c265fe6a8dd8b63049ae41c65"},
901
+ {file = "Pygments-2.11.2.tar.gz", hash = "sha256:4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a"},
902
  ]
903
  pyparsing = [
904
+ {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"},
905
+ {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"},
906
  ]
907
  pytest = [
908
  {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
 
921
  {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"},
922
  ]
923
  readme-renderer = [
924
+ {file = "readme_renderer-32.0-py3-none-any.whl", hash = "sha256:a50a0f2123a4c1145ac6f420e1a348aafefcc9211c846e3d51df05fe3d865b7d"},
925
+ {file = "readme_renderer-32.0.tar.gz", hash = "sha256:b512beafa6798260c7d5af3e1b1f097e58bfcd9a575da7c4ddd5e037490a5b85"},
926
  ]
927
  requests = [
928
+ {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"},
929
+ {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"},
930
  ]
931
  requests-toolbelt = [
932
  {file = "requests-toolbelt-0.9.1.tar.gz", hash = "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0"},
933
  {file = "requests_toolbelt-0.9.1-py2.py3-none-any.whl", hash = "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f"},
934
  ]
935
  rfc3986 = [
936
+ {file = "rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd"},
937
+ {file = "rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c"},
938
  ]
939
  secretstorage = [
940
  {file = "SecretStorage-3.3.1-py3-none-any.whl", hash = "sha256:422d82c36172d88d6a0ed5afdec956514b189ddbfb72fefab0c8a1cee4eaf71f"},
 
953
  {file = "soupsieve-2.3.1.tar.gz", hash = "sha256:b8d49b1cd4f037c7082a9683dfa1801aa2597fb11c3a1155b7a5b94829b4f1f9"},
954
  ]
955
  sphinx = [
956
+ {file = "Sphinx-4.4.0-py3-none-any.whl", hash = "sha256:5da895959511473857b6d0200f56865ed62c31e8f82dd338063b84ec022701fe"},
957
+ {file = "Sphinx-4.4.0.tar.gz", hash = "sha256:6caad9786055cb1fa22b4a365c1775816b876f91966481765d7d50e9f0dd35cc"},
958
  ]
959
  sphinxcontrib-applehelp = [
960
  {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"},
 
989
  {file = "tqdm-4.62.3.tar.gz", hash = "sha256:d359de7217506c9851b7869f3708d8ee53ed70a1b8edbba4dbcb47442592920d"},
990
  ]
991
  twine = [
992
+ {file = "twine-3.8.0-py3-none-any.whl", hash = "sha256:d0550fca9dc19f3d5e8eadfce0c227294df0a2a951251a4385797c8a6198b7c8"},
993
+ {file = "twine-3.8.0.tar.gz", hash = "sha256:8efa52658e0ae770686a13b675569328f1fba9837e5de1867bfe5f46a9aefe19"},
994
  ]
995
  typing-extensions = [
996
+ {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"},
997
+ {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"},
998
  ]
999
  urllib3 = [
1000
+ {file = "urllib3-1.26.8-py2.py3-none-any.whl", hash = "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed"},
1001
+ {file = "urllib3-1.26.8.tar.gz", hash = "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"},
1002
  ]
1003
  webencodings = [
1004
  {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
1005
  {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
1006
  ]
1007
  zipp = [
1008
+ {file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"},
1009
+ {file = "zipp-3.7.0.tar.gz", hash = "sha256:9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d"},
1010
  ]
pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
  [tool.poetry]
2
  name = "deep-translator"
3
- version = "1.6.1"
4
  description = "A flexible free and unlimited python tool to translate between different languages in a simple way using multiple translators"
5
  license = "MIT"
6
  authors = ["Nidhal Baccouri <[email protected]>"]
@@ -23,22 +23,17 @@ classifiers = [
23
  "Topic :: Text Processing :: Linguistic",
24
  "Operating System :: OS Independent"]
25
  packages = [{include="deep_translator"}]
26
-
27
- include = [ ]
28
-
29
  [tool.poetry.scripts]
30
- deep-translator = 'deep_translator.main:cli'
31
- dt = 'deep_translator.main:cli'
32
 
33
  [tool.poetry.dependencies]
34
  python = "^3.7"
35
  beautifulsoup4 = "^4.9.1"
36
  requests = "^2.23.0"
37
- click = "^8.0.1"
38
 
39
  [tool.poetry.dev-dependencies]
40
  wheel = "flake8"
41
- #tox = "^3.24.0"
42
  coverage = "^5.5"
43
  Sphinx = "^4.1.1"
44
  twine = "^3.4.2"
 
1
  [tool.poetry]
2
  name = "deep-translator"
3
+ version = "1.7.0"
4
  description = "A flexible free and unlimited python tool to translate between different languages in a simple way using multiple translators"
5
  license = "MIT"
6
  authors = ["Nidhal Baccouri <[email protected]>"]
 
23
  "Topic :: Text Processing :: Linguistic",
24
  "Operating System :: OS Independent"]
25
  packages = [{include="deep_translator"}]
 
 
 
26
  [tool.poetry.scripts]
27
+ deep-translator = 'deep_translator.__main__:main'
28
+ dt = 'deep_translator.__main__:main'
29
 
30
  [tool.poetry.dependencies]
31
  python = "^3.7"
32
  beautifulsoup4 = "^4.9.1"
33
  requests = "^2.23.0"
 
34
 
35
  [tool.poetry.dev-dependencies]
36
  wheel = "flake8"
 
37
  coverage = "^5.5"
38
  Sphinx = "^4.1.1"
39
  twine = "^3.4.2"