PyFunceble-dev 4.3.0a9__py3-none-any.whl → 4.3.0a10__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. PyFunceble/checker/availability/base.py +0 -1
  2. PyFunceble/checker/availability/domain.py +0 -1
  3. PyFunceble/checker/availability/extras/base.py +18 -18
  4. PyFunceble/checker/availability/extras/etoxic.py +0 -1
  5. PyFunceble/checker/availability/extras/parked.py +1 -2
  6. PyFunceble/checker/availability/extras/rules.py +64 -5
  7. PyFunceble/checker/availability/extras/subject_switch.py +1 -1
  8. PyFunceble/checker/availability/ip.py +0 -1
  9. PyFunceble/checker/availability/url.py +0 -1
  10. PyFunceble/checker/reputation/base.py +0 -1
  11. PyFunceble/cli/processes/migrator.py +0 -1
  12. PyFunceble/cli/processes/workers/base.py +5 -3
  13. PyFunceble/cli/processes/workers/dir_files_sorter.py +0 -1
  14. PyFunceble/cli/processes/workers/file_sorter.py +0 -1
  15. PyFunceble/cli/processes/workers/file_sorter_base.py +0 -1
  16. PyFunceble/cli/processes/workers/migrator.py +0 -1
  17. PyFunceble/cli/processes/workers/miner.py +7 -9
  18. PyFunceble/cli/processes/workers/tester.py +2 -6
  19. PyFunceble/cli/scripts/iana.py +11 -1
  20. PyFunceble/cli/scripts/public_suffix.py +14 -1
  21. PyFunceble/cli/system/launcher.py +10 -1
  22. PyFunceble/cli/utils/version.py +27 -15
  23. PyFunceble/config/loader.py +43 -12
  24. PyFunceble/downloader/base.py +13 -3
  25. PyFunceble/helpers/download.py +147 -20
  26. PyFunceble/helpers/hash.py +10 -18
  27. PyFunceble/query/dns/nameserver.py +12 -6
  28. PyFunceble/query/dns/query_tool.py +3 -1
  29. PyFunceble/query/http_status_code.py +9 -7
  30. PyFunceble/query/requests/adapter/base.py +36 -4
  31. PyFunceble/query/requests/adapter/http.py +2 -3
  32. PyFunceble/query/requests/adapter/https.py +2 -2
  33. PyFunceble/query/requests/requester.py +70 -41
  34. PyFunceble/storage.py +1 -4
  35. {PyFunceble_dev-4.3.0a9.dist-info → PyFunceble_dev-4.3.0a10.dist-info}/METADATA +142 -149
  36. {PyFunceble_dev-4.3.0a9.dist-info → PyFunceble_dev-4.3.0a10.dist-info}/RECORD +40 -40
  37. {PyFunceble_dev-4.3.0a9.dist-info → PyFunceble_dev-4.3.0a10.dist-info}/WHEEL +1 -1
  38. {PyFunceble_dev-4.3.0a9.dist-info → PyFunceble_dev-4.3.0a10.dist-info}/LICENSE +0 -0
  39. {PyFunceble_dev-4.3.0a9.dist-info → PyFunceble_dev-4.3.0a10.dist-info}/entry_points.txt +0 -0
  40. {PyFunceble_dev-4.3.0a9.dist-info → PyFunceble_dev-4.3.0a10.dist-info}/top_level.txt +0 -0
@@ -58,8 +58,8 @@ from typing import Optional, Union
58
58
  import requests
59
59
  import requests.exceptions
60
60
  import urllib3.exceptions
61
+ from box import Box
61
62
 
62
- import PyFunceble.facility
63
63
  import PyFunceble.storage
64
64
  from PyFunceble.dataset.user_agent import UserAgentDataset
65
65
  from PyFunceble.query.dns.query_tool import DNSQueryTool
@@ -132,6 +132,8 @@ class Requester:
132
132
  _max_redirects: int = 60
133
133
  _proxy_pattern: dict = {}
134
134
 
135
+ config: Optional[Box] = None
136
+
135
137
  session: Optional[requests.Session] = None
136
138
  dns_query_tool: Optional[DNSQueryTool] = None
137
139
 
@@ -144,7 +146,13 @@ class Requester:
144
146
  max_redirects: Optional[int] = None,
145
147
  dns_query_tool: Optional[DNSQueryTool] = None,
146
148
  proxy_pattern: Optional[dict] = None,
149
+ config: Optional[Box] = None,
147
150
  ) -> None:
151
+ if config is not None:
152
+ self.config = config
153
+ else:
154
+ self.config = Box({}, default_box=True)
155
+
148
156
  if max_retries is not None:
149
157
  self.max_retries = max_retries
150
158
  else:
@@ -207,27 +215,45 @@ class Requester:
207
215
  @functools.wraps(func)
208
216
  def wrapper(self, *args, **kwargs):
209
217
  # pylint: disable=no-member
210
- PyFunceble.facility.Logger.debug(
211
- "Started %r request to %r with %r",
212
- verb.upper(),
213
- args[0],
214
- kwargs,
215
- )
216
218
  req = getattr(self.session, verb.lower())(*args, **kwargs)
217
-
218
- PyFunceble.facility.Logger.debug(
219
- "Finished %r request to %r with %r",
220
- verb.upper(),
221
- args[0],
222
- kwargs,
223
- )
224
-
225
219
  return req
226
220
 
227
221
  return wrapper
228
222
 
229
223
  return request_method
230
224
 
225
+ @property
226
+ def headers(self) -> dict:
227
+ """
228
+ Provides the headers to use.
229
+ """
230
+
231
+ return self.session.headers
232
+
233
+ @headers.setter
234
+ @recreate_session
235
+ def headers(self, value: dict) -> None:
236
+ """
237
+ Sets the headers to use.
238
+
239
+ :param value:
240
+ The headers to set.
241
+ """
242
+
243
+ self.session.headers.update(value)
244
+
245
+ def set_config(self, config: Box) -> "Requester":
246
+ """
247
+ Sets the configuration to work with.
248
+
249
+ :param config:
250
+ The configuration to work with.
251
+ """
252
+
253
+ self.config = config
254
+
255
+ return self
256
+
231
257
  @property
232
258
  def max_retries(self) -> int:
233
259
  """
@@ -276,13 +302,12 @@ class Requester:
276
302
  Try to guess the value from the configuration and set it.
277
303
  """
278
304
 
279
- if PyFunceble.facility.ConfigLoader.is_already_loaded() and bool(
280
- PyFunceble.storage.CONFIGURATION.max_http_retries
281
- ):
282
- self.set_max_retries(
283
- bool(PyFunceble.storage.CONFIGURATION.max_http_retries)
284
- )
285
- else:
305
+ try:
306
+ if isinstance(self.config.max_http_retries, int):
307
+ self.set_max_retries(self.config.max_http_retries)
308
+ else:
309
+ self.set_max_retries(self.STD_MAX_RETRIES)
310
+ except: # pylint: disable=bare-except
286
311
  self.set_max_retries(self.STD_MAX_RETRIES)
287
312
 
288
313
  return self
@@ -373,14 +398,13 @@ class Requester:
373
398
  Try to guess the value from the configuration and set it.
374
399
  """
375
400
 
376
- if PyFunceble.facility.ConfigLoader.is_already_loaded() and bool(
377
- PyFunceble.storage.CONFIGURATION.verify_ssl_certificate
378
- ):
379
- self.set_verify_certificate(
380
- bool(PyFunceble.storage.CONFIGURATION.verify_ssl_certificate)
381
- )
382
- else:
383
- self.set_verify_certificate(self.STD_VERIFY_CERTIFICATE)
401
+ try:
402
+ if isinstance(self.config.verify_ssl_certificate, bool):
403
+ self.set_verify_certificate(self.config.verify_ssl_certificate)
404
+ else:
405
+ self.set_verify_certificate(self.STD_VERIFY_CERTIFICATE)
406
+ except: # pylint: disable=bare-except
407
+ self.set_max_retries(self.STD_MAX_RETRIES)
384
408
 
385
409
  return self
386
410
 
@@ -433,11 +457,12 @@ class Requester:
433
457
  Try to guess the value from the configuration and set it.
434
458
  """
435
459
 
436
- if PyFunceble.facility.ConfigLoader.is_already_loaded() and bool(
437
- PyFunceble.storage.CONFIGURATION.lookup.timeout
438
- ):
439
- self.set_timeout(PyFunceble.storage.CONFIGURATION.lookup.timeout)
440
- else:
460
+ try:
461
+ if isinstance(self.config.lookup.timeout, (int, float)):
462
+ self.set_timeout(self.config.lookup.timeout)
463
+ else:
464
+ self.set_timeout(self.STD_TIMEOUT)
465
+ except: # pylint: disable=bare-except
441
466
  self.set_timeout(self.STD_TIMEOUT)
442
467
 
443
468
  return self
@@ -485,11 +510,12 @@ class Requester:
485
510
  Try to guess the value from the configuration and set it.
486
511
  """
487
512
 
488
- if PyFunceble.facility.ConfigLoader.is_already_loaded() and bool(
489
- PyFunceble.storage.CONFIGURATION.proxy
490
- ):
491
- self.set_proxy_pattern(PyFunceble.storage.CONFIGURATION.proxy)
492
- else:
513
+ try:
514
+ if self.config.proxy:
515
+ self.set_proxy_pattern(self.config.proxy)
516
+ else:
517
+ self.set_proxy_pattern({})
518
+ except: # pylint: disable=bare-except
493
519
  self.set_proxy_pattern({})
494
520
 
495
521
  return self
@@ -551,7 +577,10 @@ class Requester:
551
577
  ),
552
578
  )
553
579
 
554
- custom_headers = {"User-Agent": UserAgentDataset().get_latest()}
580
+ if PyFunceble.storage.USER_AGENTS:
581
+ custom_headers = {"User-Agent": UserAgentDataset().get_latest()}
582
+ else:
583
+ custom_headers = {}
555
584
 
556
585
  session.headers.update(custom_headers)
557
586
 
PyFunceble/storage.py CHANGED
@@ -52,7 +52,6 @@ License:
52
52
  """
53
53
 
54
54
  import os
55
- import secrets
56
55
  from typing import Optional
57
56
 
58
57
  from box import Box
@@ -61,7 +60,7 @@ from dotenv import load_dotenv
61
60
  from PyFunceble.storage_facility import get_config_directory
62
61
 
63
62
  PROJECT_NAME: str = "PyFunceble"
64
- PROJECT_VERSION: str = "4.3.0a9.dev (Blue Duckling: Tulip)"
63
+ PROJECT_VERSION: str = "4.3.0a10.dev (Blue Duckling: Tulip)"
65
64
 
66
65
  DISTRIBUTED_CONFIGURATION_FILENAME: str = ".PyFunceble_production.yaml"
67
66
 
@@ -73,8 +72,6 @@ ENV_FILENAME: str = ".pyfunceble-env"
73
72
  SHORT_REPO_LINK: str = "https://pyfunceble.github.io"
74
73
  REPO_LINK: str = "https://github.com/funilrys/PyFunceble"
75
74
 
76
- NOT_RESOLVED_STD_HOSTNAME: str = f"{secrets.token_hex(12)}.mock-resolver.pyfunceble.com"
77
-
78
75
  IANA: Optional[dict] = {}
79
76
  PUBLIC_SUFFIX: Optional[dict] = {}
80
77
  USER_AGENTS: Optional[dict] = {}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyFunceble-dev
3
- Version: 4.3.0a9
3
+ Version: 4.3.0a10
4
4
  Summary: The tool to check the availability or syntax of domain, IP or URL.
5
5
  Home-page: https://github.com/funilrys/PyFunceble
6
6
  Author: funilrys
@@ -22,176 +22,169 @@ Classifier: License :: OSI Approved
22
22
  Requires-Python: >=3.9, <4
23
23
  Description-Content-Type: text/markdown
24
24
  License-File: LICENSE
25
- Requires-Dist: packaging
26
- Requires-Dist: dnspython[doh]~=2.6.0
27
25
  Requires-Dist: python-box[all]~=6.0.0
28
- Requires-Dist: python-dotenv
29
- Requires-Dist: requests[socks]<3
30
- Requires-Dist: domain2idna~=1.12.0
31
26
  Requires-Dist: colorama
27
+ Requires-Dist: requests[socks]<3
32
28
  Requires-Dist: setuptools>=65.5.1
33
- Requires-Dist: shtab
34
- Requires-Dist: inflection
35
- Requires-Dist: PyMySQL
36
- Requires-Dist: cryptography>=42.0
37
- Requires-Dist: SQLAlchemy~=2.0
29
+ Requires-Dist: dnspython[DOH]~=2.6.0
38
30
  Requires-Dist: alembic
31
+ Requires-Dist: packaging
32
+ Requires-Dist: python-dotenv
33
+ Requires-Dist: SQLAlchemy~=2.0
34
+ Requires-Dist: inflection
35
+ Requires-Dist: shtab
36
+ Requires-Dist: domain2idna~=1.12.0
39
37
  Requires-Dist: PyYAML
40
- Provides-Extra: all
41
- Requires-Dist: mkdocs~=1.5; extra == "all"
42
- Requires-Dist: mkdocs-material~=9.5; extra == "all"
43
- Requires-Dist: packaging; extra == "all"
44
- Requires-Dist: mkdocs-section-index~=0.3; extra == "all"
45
- Requires-Dist: requests[socks]<3; extra == "all"
46
- Requires-Dist: mkdocstrings[python]~=0.26; extra == "all"
47
- Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "all"
48
- Requires-Dist: setuptools>=65.5.1; extra == "all"
49
- Requires-Dist: PyMySQL; extra == "all"
50
- Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "all"
51
- Requires-Dist: cryptography>=42.0; extra == "all"
52
- Requires-Dist: mkdocs-gen-files~=0.5; extra == "all"
53
- Requires-Dist: flake8; extra == "all"
54
- Requires-Dist: isort; extra == "all"
55
- Requires-Dist: python-box[all]~=6.0.0; extra == "all"
56
- Requires-Dist: colorama; extra == "all"
57
- Requires-Dist: zipp>=3.19.1; extra == "all"
58
- Requires-Dist: mkdocs-literate-nav~=0.6; extra == "all"
59
- Requires-Dist: shtab; extra == "all"
60
- Requires-Dist: psycopg2-binary; extra == "all"
61
- Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "all"
62
- Requires-Dist: dnspython[doh]~=2.6.0; extra == "all"
63
- Requires-Dist: pymdown-extensions~=10.9; extra == "all"
64
- Requires-Dist: pylint; extra == "all"
65
- Requires-Dist: SQLAlchemy~=2.0; extra == "all"
66
- Requires-Dist: tox; extra == "all"
67
- Requires-Dist: black; extra == "all"
68
- Requires-Dist: coverage; extra == "all"
69
- Requires-Dist: python-dotenv; extra == "all"
70
- Requires-Dist: domain2idna~=1.12.0; extra == "all"
71
- Requires-Dist: inflection; extra == "all"
72
- Requires-Dist: alembic; extra == "all"
73
- Requires-Dist: PyYAML; extra == "all"
74
- Provides-Extra: dev
75
- Requires-Dist: pylint; extra == "dev"
76
- Requires-Dist: isort; extra == "dev"
77
- Requires-Dist: black; extra == "dev"
78
- Requires-Dist: flake8; extra == "dev"
38
+ Requires-Dist: PyMySQL
79
39
  Provides-Extra: docs
80
- Requires-Dist: mkdocs~=1.5; extra == "docs"
81
- Requires-Dist: mkdocs-material~=9.5; extra == "docs"
82
- Requires-Dist: mkdocs-section-index~=0.3; extra == "docs"
83
- Requires-Dist: zipp>=3.19.1; extra == "docs"
40
+ Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "docs"
84
41
  Requires-Dist: mkdocstrings[python]~=0.26; extra == "docs"
85
- Requires-Dist: mkdocs-literate-nav~=0.6; extra == "docs"
86
42
  Requires-Dist: pymdown-extensions~=10.9; extra == "docs"
87
43
  Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "docs"
88
- Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "docs"
89
44
  Requires-Dist: mkdocs-gen-files~=0.5; extra == "docs"
90
- Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "docs"
91
- Provides-Extra: full
92
- Requires-Dist: mkdocs~=1.5; extra == "full"
93
- Requires-Dist: mkdocs-material~=9.5; extra == "full"
94
- Requires-Dist: packaging; extra == "full"
95
- Requires-Dist: mkdocs-section-index~=0.3; extra == "full"
96
- Requires-Dist: requests[socks]<3; extra == "full"
97
- Requires-Dist: mkdocstrings[python]~=0.26; extra == "full"
98
- Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "full"
99
- Requires-Dist: setuptools>=65.5.1; extra == "full"
100
- Requires-Dist: PyMySQL; extra == "full"
101
- Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "full"
102
- Requires-Dist: cryptography>=42.0; extra == "full"
103
- Requires-Dist: mkdocs-gen-files~=0.5; extra == "full"
104
- Requires-Dist: flake8; extra == "full"
105
- Requires-Dist: isort; extra == "full"
106
- Requires-Dist: python-box[all]~=6.0.0; extra == "full"
107
- Requires-Dist: colorama; extra == "full"
108
- Requires-Dist: zipp>=3.19.1; extra == "full"
109
- Requires-Dist: mkdocs-literate-nav~=0.6; extra == "full"
110
- Requires-Dist: shtab; extra == "full"
111
- Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "full"
112
- Requires-Dist: dnspython[doh]~=2.6.0; extra == "full"
113
- Requires-Dist: pymdown-extensions~=10.9; extra == "full"
114
- Requires-Dist: pylint; extra == "full"
115
- Requires-Dist: SQLAlchemy~=2.0; extra == "full"
116
- Requires-Dist: tox; extra == "full"
117
- Requires-Dist: black; extra == "full"
118
- Requires-Dist: coverage; extra == "full"
119
- Requires-Dist: python-dotenv; extra == "full"
120
- Requires-Dist: domain2idna~=1.12.0; extra == "full"
121
- Requires-Dist: inflection; extra == "full"
122
- Requires-Dist: alembic; extra == "full"
123
- Requires-Dist: PyYAML; extra == "full"
124
- Provides-Extra: postgresql
125
- Requires-Dist: packaging; extra == "postgresql"
126
- Requires-Dist: dnspython[doh]~=2.6.0; extra == "postgresql"
127
- Requires-Dist: python-box[all]~=6.0.0; extra == "postgresql"
128
- Requires-Dist: python-dotenv; extra == "postgresql"
129
- Requires-Dist: requests[socks]<3; extra == "postgresql"
130
- Requires-Dist: domain2idna~=1.12.0; extra == "postgresql"
131
- Requires-Dist: colorama; extra == "postgresql"
132
- Requires-Dist: setuptools>=65.5.1; extra == "postgresql"
133
- Requires-Dist: shtab; extra == "postgresql"
134
- Requires-Dist: inflection; extra == "postgresql"
135
- Requires-Dist: PyMySQL; extra == "postgresql"
136
- Requires-Dist: cryptography>=42.0; extra == "postgresql"
137
- Requires-Dist: SQLAlchemy~=2.0; extra == "postgresql"
138
- Requires-Dist: psycopg2; extra == "postgresql"
139
- Requires-Dist: alembic; extra == "postgresql"
140
- Requires-Dist: PyYAML; extra == "postgresql"
141
- Provides-Extra: postgresql-binary
142
- Requires-Dist: packaging; extra == "postgresql-binary"
143
- Requires-Dist: dnspython[doh]~=2.6.0; extra == "postgresql-binary"
144
- Requires-Dist: python-box[all]~=6.0.0; extra == "postgresql-binary"
145
- Requires-Dist: python-dotenv; extra == "postgresql-binary"
146
- Requires-Dist: requests[socks]<3; extra == "postgresql-binary"
147
- Requires-Dist: domain2idna~=1.12.0; extra == "postgresql-binary"
148
- Requires-Dist: colorama; extra == "postgresql-binary"
149
- Requires-Dist: setuptools>=65.5.1; extra == "postgresql-binary"
150
- Requires-Dist: shtab; extra == "postgresql-binary"
151
- Requires-Dist: inflection; extra == "postgresql-binary"
152
- Requires-Dist: PyMySQL; extra == "postgresql-binary"
153
- Requires-Dist: cryptography>=42.0; extra == "postgresql-binary"
154
- Requires-Dist: SQLAlchemy~=2.0; extra == "postgresql-binary"
155
- Requires-Dist: psycopg2-binary; extra == "postgresql-binary"
156
- Requires-Dist: alembic; extra == "postgresql-binary"
157
- Requires-Dist: PyYAML; extra == "postgresql-binary"
45
+ Requires-Dist: mkdocs-material~=9.5; extra == "docs"
46
+ Requires-Dist: mkdocs-section-index~=0.3; extra == "docs"
47
+ Requires-Dist: mkdocs~=1.5; extra == "docs"
48
+ Requires-Dist: mkdocs-literate-nav~=0.6; extra == "docs"
49
+ Requires-Dist: zipp>=3.19.1; extra == "docs"
50
+ Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "docs"
51
+ Provides-Extra: dev
52
+ Requires-Dist: black; extra == "dev"
53
+ Requires-Dist: flake8; extra == "dev"
54
+ Requires-Dist: pylint; extra == "dev"
55
+ Requires-Dist: isort; extra == "dev"
56
+ Provides-Extra: test
57
+ Requires-Dist: tox; extra == "test"
58
+ Requires-Dist: coverage; extra == "test"
158
59
  Provides-Extra: psql
159
- Requires-Dist: packaging; extra == "psql"
160
- Requires-Dist: dnspython[doh]~=2.6.0; extra == "psql"
161
60
  Requires-Dist: python-box[all]~=6.0.0; extra == "psql"
162
- Requires-Dist: python-dotenv; extra == "psql"
163
- Requires-Dist: requests[socks]<3; extra == "psql"
164
- Requires-Dist: domain2idna~=1.12.0; extra == "psql"
61
+ Requires-Dist: psycopg2; extra == "psql"
165
62
  Requires-Dist: colorama; extra == "psql"
63
+ Requires-Dist: requests[socks]<3; extra == "psql"
166
64
  Requires-Dist: setuptools>=65.5.1; extra == "psql"
167
- Requires-Dist: shtab; extra == "psql"
168
- Requires-Dist: inflection; extra == "psql"
169
- Requires-Dist: PyMySQL; extra == "psql"
170
- Requires-Dist: cryptography>=42.0; extra == "psql"
171
- Requires-Dist: SQLAlchemy~=2.0; extra == "psql"
172
- Requires-Dist: psycopg2; extra == "psql"
65
+ Requires-Dist: dnspython[DOH]~=2.6.0; extra == "psql"
173
66
  Requires-Dist: alembic; extra == "psql"
67
+ Requires-Dist: packaging; extra == "psql"
68
+ Requires-Dist: python-dotenv; extra == "psql"
69
+ Requires-Dist: SQLAlchemy~=2.0; extra == "psql"
70
+ Requires-Dist: inflection; extra == "psql"
71
+ Requires-Dist: shtab; extra == "psql"
72
+ Requires-Dist: domain2idna~=1.12.0; extra == "psql"
174
73
  Requires-Dist: PyYAML; extra == "psql"
74
+ Requires-Dist: PyMySQL; extra == "psql"
175
75
  Provides-Extra: psql-binary
176
- Requires-Dist: packaging; extra == "psql-binary"
177
- Requires-Dist: dnspython[doh]~=2.6.0; extra == "psql-binary"
178
76
  Requires-Dist: python-box[all]~=6.0.0; extra == "psql-binary"
179
- Requires-Dist: python-dotenv; extra == "psql-binary"
180
- Requires-Dist: requests[socks]<3; extra == "psql-binary"
181
- Requires-Dist: domain2idna~=1.12.0; extra == "psql-binary"
182
77
  Requires-Dist: colorama; extra == "psql-binary"
78
+ Requires-Dist: requests[socks]<3; extra == "psql-binary"
183
79
  Requires-Dist: setuptools>=65.5.1; extra == "psql-binary"
184
- Requires-Dist: shtab; extra == "psql-binary"
185
- Requires-Dist: inflection; extra == "psql-binary"
186
- Requires-Dist: PyMySQL; extra == "psql-binary"
187
- Requires-Dist: cryptography>=42.0; extra == "psql-binary"
188
- Requires-Dist: SQLAlchemy~=2.0; extra == "psql-binary"
189
- Requires-Dist: psycopg2-binary; extra == "psql-binary"
80
+ Requires-Dist: dnspython[DOH]~=2.6.0; extra == "psql-binary"
190
81
  Requires-Dist: alembic; extra == "psql-binary"
82
+ Requires-Dist: packaging; extra == "psql-binary"
83
+ Requires-Dist: python-dotenv; extra == "psql-binary"
84
+ Requires-Dist: psycopg2-binary; extra == "psql-binary"
85
+ Requires-Dist: SQLAlchemy~=2.0; extra == "psql-binary"
86
+ Requires-Dist: inflection; extra == "psql-binary"
87
+ Requires-Dist: shtab; extra == "psql-binary"
88
+ Requires-Dist: domain2idna~=1.12.0; extra == "psql-binary"
191
89
  Requires-Dist: PyYAML; extra == "psql-binary"
192
- Provides-Extra: test
193
- Requires-Dist: coverage; extra == "test"
194
- Requires-Dist: tox; extra == "test"
90
+ Requires-Dist: PyMySQL; extra == "psql-binary"
91
+ Provides-Extra: postgresql
92
+ Requires-Dist: python-box[all]~=6.0.0; extra == "postgresql"
93
+ Requires-Dist: psycopg2; extra == "postgresql"
94
+ Requires-Dist: colorama; extra == "postgresql"
95
+ Requires-Dist: requests[socks]<3; extra == "postgresql"
96
+ Requires-Dist: setuptools>=65.5.1; extra == "postgresql"
97
+ Requires-Dist: dnspython[DOH]~=2.6.0; extra == "postgresql"
98
+ Requires-Dist: alembic; extra == "postgresql"
99
+ Requires-Dist: packaging; extra == "postgresql"
100
+ Requires-Dist: python-dotenv; extra == "postgresql"
101
+ Requires-Dist: SQLAlchemy~=2.0; extra == "postgresql"
102
+ Requires-Dist: inflection; extra == "postgresql"
103
+ Requires-Dist: shtab; extra == "postgresql"
104
+ Requires-Dist: domain2idna~=1.12.0; extra == "postgresql"
105
+ Requires-Dist: PyYAML; extra == "postgresql"
106
+ Requires-Dist: PyMySQL; extra == "postgresql"
107
+ Provides-Extra: postgresql-binary
108
+ Requires-Dist: python-box[all]~=6.0.0; extra == "postgresql-binary"
109
+ Requires-Dist: colorama; extra == "postgresql-binary"
110
+ Requires-Dist: requests[socks]<3; extra == "postgresql-binary"
111
+ Requires-Dist: setuptools>=65.5.1; extra == "postgresql-binary"
112
+ Requires-Dist: dnspython[DOH]~=2.6.0; extra == "postgresql-binary"
113
+ Requires-Dist: alembic; extra == "postgresql-binary"
114
+ Requires-Dist: packaging; extra == "postgresql-binary"
115
+ Requires-Dist: python-dotenv; extra == "postgresql-binary"
116
+ Requires-Dist: psycopg2-binary; extra == "postgresql-binary"
117
+ Requires-Dist: SQLAlchemy~=2.0; extra == "postgresql-binary"
118
+ Requires-Dist: inflection; extra == "postgresql-binary"
119
+ Requires-Dist: shtab; extra == "postgresql-binary"
120
+ Requires-Dist: domain2idna~=1.12.0; extra == "postgresql-binary"
121
+ Requires-Dist: PyYAML; extra == "postgresql-binary"
122
+ Requires-Dist: PyMySQL; extra == "postgresql-binary"
123
+ Provides-Extra: full
124
+ Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "full"
125
+ Requires-Dist: mkdocstrings[python]~=0.26; extra == "full"
126
+ Requires-Dist: isort; extra == "full"
127
+ Requires-Dist: packaging; extra == "full"
128
+ Requires-Dist: shtab; extra == "full"
129
+ Requires-Dist: requests[socks]<3; extra == "full"
130
+ Requires-Dist: tox; extra == "full"
131
+ Requires-Dist: mkdocs-gen-files~=0.5; extra == "full"
132
+ Requires-Dist: mkdocs-section-index~=0.3; extra == "full"
133
+ Requires-Dist: alembic; extra == "full"
134
+ Requires-Dist: mkdocs-literate-nav~=0.6; extra == "full"
135
+ Requires-Dist: python-box[all]~=6.0.0; extra == "full"
136
+ Requires-Dist: black; extra == "full"
137
+ Requires-Dist: domain2idna~=1.12.0; extra == "full"
138
+ Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "full"
139
+ Requires-Dist: colorama; extra == "full"
140
+ Requires-Dist: python-dotenv; extra == "full"
141
+ Requires-Dist: SQLAlchemy~=2.0; extra == "full"
142
+ Requires-Dist: zipp>=3.19.1; extra == "full"
143
+ Requires-Dist: PyYAML; extra == "full"
144
+ Requires-Dist: coverage; extra == "full"
145
+ Requires-Dist: pymdown-extensions~=10.9; extra == "full"
146
+ Requires-Dist: mkdocs-material~=9.5; extra == "full"
147
+ Requires-Dist: setuptools>=65.5.1; extra == "full"
148
+ Requires-Dist: dnspython[DOH]~=2.6.0; extra == "full"
149
+ Requires-Dist: flake8; extra == "full"
150
+ Requires-Dist: mkdocs~=1.5; extra == "full"
151
+ Requires-Dist: pylint; extra == "full"
152
+ Requires-Dist: inflection; extra == "full"
153
+ Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "full"
154
+ Requires-Dist: PyMySQL; extra == "full"
155
+ Provides-Extra: all
156
+ Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "all"
157
+ Requires-Dist: mkdocstrings[python]~=0.26; extra == "all"
158
+ Requires-Dist: isort; extra == "all"
159
+ Requires-Dist: packaging; extra == "all"
160
+ Requires-Dist: shtab; extra == "all"
161
+ Requires-Dist: requests[socks]<3; extra == "all"
162
+ Requires-Dist: tox; extra == "all"
163
+ Requires-Dist: mkdocs-gen-files~=0.5; extra == "all"
164
+ Requires-Dist: mkdocs-section-index~=0.3; extra == "all"
165
+ Requires-Dist: alembic; extra == "all"
166
+ Requires-Dist: mkdocs-literate-nav~=0.6; extra == "all"
167
+ Requires-Dist: python-box[all]~=6.0.0; extra == "all"
168
+ Requires-Dist: black; extra == "all"
169
+ Requires-Dist: domain2idna~=1.12.0; extra == "all"
170
+ Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "all"
171
+ Requires-Dist: colorama; extra == "all"
172
+ Requires-Dist: python-dotenv; extra == "all"
173
+ Requires-Dist: SQLAlchemy~=2.0; extra == "all"
174
+ Requires-Dist: zipp>=3.19.1; extra == "all"
175
+ Requires-Dist: PyYAML; extra == "all"
176
+ Requires-Dist: coverage; extra == "all"
177
+ Requires-Dist: pymdown-extensions~=10.9; extra == "all"
178
+ Requires-Dist: mkdocs-material~=9.5; extra == "all"
179
+ Requires-Dist: setuptools>=65.5.1; extra == "all"
180
+ Requires-Dist: dnspython[DOH]~=2.6.0; extra == "all"
181
+ Requires-Dist: psycopg2-binary; extra == "all"
182
+ Requires-Dist: flake8; extra == "all"
183
+ Requires-Dist: mkdocs~=1.5; extra == "all"
184
+ Requires-Dist: pylint; extra == "all"
185
+ Requires-Dist: inflection; extra == "all"
186
+ Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "all"
187
+ Requires-Dist: PyMySQL; extra == "all"
195
188
 
196
189
  ![image](https://raw.githubusercontent.com/PyFunceble/logo/dev/Green/HD/RM.png)
197
190