PyFunceble-dev 4.3.0a5__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.
- PyFunceble/checker/availability/base.py +0 -1
- PyFunceble/checker/availability/domain.py +0 -1
- PyFunceble/checker/availability/extras/base.py +18 -18
- PyFunceble/checker/availability/extras/etoxic.py +0 -1
- PyFunceble/checker/availability/extras/parked.py +1 -2
- PyFunceble/checker/availability/extras/rules.py +64 -5
- PyFunceble/checker/availability/extras/subject_switch.py +1 -1
- PyFunceble/checker/availability/ip.py +0 -1
- PyFunceble/checker/availability/url.py +0 -1
- PyFunceble/checker/reputation/base.py +0 -1
- PyFunceble/cli/processes/migrator.py +0 -1
- PyFunceble/cli/processes/workers/base.py +5 -3
- PyFunceble/cli/processes/workers/dir_files_sorter.py +0 -1
- PyFunceble/cli/processes/workers/file_sorter.py +0 -1
- PyFunceble/cli/processes/workers/file_sorter_base.py +0 -1
- PyFunceble/cli/processes/workers/migrator.py +0 -1
- PyFunceble/cli/processes/workers/miner.py +7 -9
- PyFunceble/cli/processes/workers/tester.py +2 -6
- PyFunceble/cli/scripts/iana.py +11 -1
- PyFunceble/cli/scripts/public_suffix.py +14 -1
- PyFunceble/cli/system/launcher.py +27 -14
- PyFunceble/cli/utils/version.py +27 -15
- PyFunceble/config/loader.py +43 -12
- PyFunceble/downloader/base.py +13 -3
- PyFunceble/helpers/download.py +147 -20
- PyFunceble/helpers/hash.py +10 -18
- PyFunceble/query/dns/nameserver.py +12 -6
- PyFunceble/query/dns/query_tool.py +3 -1
- PyFunceble/query/http_status_code.py +9 -7
- PyFunceble/query/platform.py +7 -8
- PyFunceble/query/requests/adapter/base.py +36 -4
- PyFunceble/query/requests/adapter/http.py +2 -3
- PyFunceble/query/requests/adapter/https.py +2 -2
- PyFunceble/query/requests/requester.py +70 -41
- PyFunceble/storage.py +1 -4
- {PyFunceble_dev-4.3.0a5.dist-info → PyFunceble_dev-4.3.0a10.dist-info}/METADATA +173 -68
- {PyFunceble_dev-4.3.0a5.dist-info → PyFunceble_dev-4.3.0a10.dist-info}/RECORD +41 -41
- {PyFunceble_dev-4.3.0a5.dist-info → PyFunceble_dev-4.3.0a10.dist-info}/WHEEL +1 -1
- {PyFunceble_dev-4.3.0a5.dist-info → PyFunceble_dev-4.3.0a10.dist-info}/LICENSE +0 -0
- {PyFunceble_dev-4.3.0a5.dist-info → PyFunceble_dev-4.3.0a10.dist-info}/entry_points.txt +0 -0
- {PyFunceble_dev-4.3.0a5.dist-info → PyFunceble_dev-4.3.0a10.dist-info}/top_level.txt +0 -0
@@ -55,7 +55,6 @@ import urllib.parse
|
|
55
55
|
import requests
|
56
56
|
|
57
57
|
import PyFunceble.facility
|
58
|
-
import PyFunceble.storage
|
59
58
|
from PyFunceble.query.requests.adapter.base import RequestAdapterBase
|
60
59
|
|
61
60
|
|
@@ -117,10 +116,10 @@ class RequestHTTPAdapter(RequestAdapterBase):
|
|
117
116
|
request.headers["Host"] = parsed_url.hostname
|
118
117
|
else:
|
119
118
|
self.poolmanager.connection_pool_kw.pop(
|
120
|
-
"server_hostname",
|
119
|
+
"server_hostname", self.NOT_RESOLVED_STD_HOSTNAME
|
121
120
|
)
|
122
121
|
self.poolmanager.connection_pool_kw.pop(
|
123
|
-
"assert_hostname",
|
122
|
+
"assert_hostname", self.NOT_RESOLVED_STD_HOSTNAME
|
124
123
|
)
|
125
124
|
|
126
125
|
return self.fake_response()
|
@@ -125,10 +125,10 @@ class RequestHTTPSAdapter(RequestAdapterBase):
|
|
125
125
|
request.headers["Host"] = parsed_url.hostname
|
126
126
|
else:
|
127
127
|
self.poolmanager.connection_pool_kw.pop(
|
128
|
-
"server_hostname",
|
128
|
+
"server_hostname", self.NOT_RESOLVED_STD_HOSTNAME
|
129
129
|
)
|
130
130
|
self.poolmanager.connection_pool_kw.pop(
|
131
|
-
"assert_hostname",
|
131
|
+
"assert_hostname", self.NOT_RESOLVED_STD_HOSTNAME
|
132
132
|
)
|
133
133
|
|
134
134
|
self.poolmanager.connection_pool_kw.pop(
|
@@ -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
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
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
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
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
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
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
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
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
|
-
|
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.
|
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.
|
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
|
@@ -19,94 +19,172 @@ Classifier: Intended Audience :: Developers
|
|
19
19
|
Classifier: Programming Language :: Python
|
20
20
|
Classifier: Programming Language :: Python :: 3
|
21
21
|
Classifier: License :: OSI Approved
|
22
|
-
Requires-Python: >=3.
|
22
|
+
Requires-Python: >=3.9, <4
|
23
23
|
Description-Content-Type: text/markdown
|
24
24
|
License-File: LICENSE
|
25
|
-
Requires-Dist: SQLAlchemy[postgresql_psycopg2binary]~=2.0
|
26
25
|
Requires-Dist: python-box[all]~=6.0.0
|
27
|
-
Requires-Dist:
|
26
|
+
Requires-Dist: colorama
|
28
27
|
Requires-Dist: requests[socks]<3
|
29
|
-
Requires-Dist: alembic
|
30
28
|
Requires-Dist: setuptools>=65.5.1
|
29
|
+
Requires-Dist: dnspython[DOH]~=2.6.0
|
30
|
+
Requires-Dist: alembic
|
31
|
+
Requires-Dist: packaging
|
31
32
|
Requires-Dist: python-dotenv
|
33
|
+
Requires-Dist: SQLAlchemy~=2.0
|
32
34
|
Requires-Dist: inflection
|
33
|
-
Requires-Dist: cryptography~=42.0
|
34
|
-
Requires-Dist: packaging
|
35
35
|
Requires-Dist: shtab
|
36
|
-
Requires-Dist:
|
37
|
-
Requires-Dist: colorama
|
36
|
+
Requires-Dist: domain2idna~=1.12.0
|
38
37
|
Requires-Dist: PyYAML
|
39
38
|
Requires-Dist: PyMySQL
|
40
|
-
Provides-Extra: dev
|
41
|
-
Requires-Dist: isort; extra == "dev"
|
42
|
-
Requires-Dist: black; extra == "dev"
|
43
|
-
Requires-Dist: pylint; extra == "dev"
|
44
|
-
Requires-Dist: flake8; extra == "dev"
|
45
39
|
Provides-Extra: docs
|
46
40
|
Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "docs"
|
41
|
+
Requires-Dist: mkdocstrings[python]~=0.26; extra == "docs"
|
47
42
|
Requires-Dist: pymdown-extensions~=10.9; extra == "docs"
|
48
|
-
Requires-Dist:
|
43
|
+
Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "docs"
|
44
|
+
Requires-Dist: mkdocs-gen-files~=0.5; extra == "docs"
|
49
45
|
Requires-Dist: mkdocs-material~=9.5; extra == "docs"
|
46
|
+
Requires-Dist: mkdocs-section-index~=0.3; extra == "docs"
|
50
47
|
Requires-Dist: mkdocs~=1.5; extra == "docs"
|
51
|
-
Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "docs"
|
52
|
-
Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "docs"
|
53
48
|
Requires-Dist: mkdocs-literate-nav~=0.6; extra == "docs"
|
54
|
-
Requires-Dist:
|
55
|
-
Requires-Dist: mkdocs-
|
56
|
-
|
57
|
-
|
58
|
-
Requires-Dist:
|
59
|
-
Requires-Dist:
|
60
|
-
Requires-Dist:
|
61
|
-
|
62
|
-
Requires-Dist:
|
63
|
-
Requires-Dist:
|
64
|
-
Requires-Dist: SQLAlchemy[postgresql_psycopg2binary]~=2.0; extra == "full"
|
65
|
-
Requires-Dist: mkdocs-section-index~=0.3; extra == "full"
|
66
|
-
Requires-Dist: mkdocstrings[python]~=0.26; extra == "full"
|
67
|
-
Requires-Dist: PyMySQL; extra == "full"
|
68
|
-
Requires-Dist: python-box[all]~=6.0.0; extra == "full"
|
69
|
-
Requires-Dist: flake8; extra == "full"
|
70
|
-
Requires-Dist: setuptools>=65.5.1; extra == "full"
|
71
|
-
Requires-Dist: python-dotenv; extra == "full"
|
72
|
-
Requires-Dist: packaging; extra == "full"
|
73
|
-
Requires-Dist: mkdocs-literate-nav~=0.6; extra == "full"
|
74
|
-
Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "full"
|
75
|
-
Requires-Dist: requests[socks]<3; extra == "full"
|
76
|
-
Requires-Dist: domain2idna~=1.12.0; extra == "full"
|
77
|
-
Requires-Dist: pymdown-extensions~=10.9; extra == "full"
|
78
|
-
Requires-Dist: cryptography~=42.0; extra == "full"
|
79
|
-
Requires-Dist: dnspython[doh]~=2.6.0; extra == "full"
|
80
|
-
Requires-Dist: black; extra == "full"
|
81
|
-
Requires-Dist: coverage; extra == "full"
|
82
|
-
Requires-Dist: colorama; extra == "full"
|
83
|
-
Requires-Dist: PyYAML; extra == "full"
|
84
|
-
Requires-Dist: alembic; extra == "full"
|
85
|
-
Requires-Dist: shtab; extra == "full"
|
86
|
-
Requires-Dist: mkdocs-material~=9.5; extra == "full"
|
87
|
-
Requires-Dist: isort; extra == "full"
|
88
|
-
Requires-Dist: mkdocs-gen-files~=0.5; extra == "full"
|
89
|
-
Requires-Dist: pylint; extra == "full"
|
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"
|
90
59
|
Provides-Extra: psql
|
91
|
-
Requires-Dist: SQLAlchemy[postgresql_psycopg2binary]~=2.0; extra == "psql"
|
92
60
|
Requires-Dist: python-box[all]~=6.0.0; extra == "psql"
|
93
|
-
Requires-Dist:
|
61
|
+
Requires-Dist: psycopg2; extra == "psql"
|
62
|
+
Requires-Dist: colorama; extra == "psql"
|
94
63
|
Requires-Dist: requests[socks]<3; extra == "psql"
|
95
|
-
Requires-Dist: alembic; extra == "psql"
|
96
64
|
Requires-Dist: setuptools>=65.5.1; extra == "psql"
|
65
|
+
Requires-Dist: dnspython[DOH]~=2.6.0; extra == "psql"
|
66
|
+
Requires-Dist: alembic; extra == "psql"
|
67
|
+
Requires-Dist: packaging; extra == "psql"
|
97
68
|
Requires-Dist: python-dotenv; extra == "psql"
|
69
|
+
Requires-Dist: SQLAlchemy~=2.0; extra == "psql"
|
98
70
|
Requires-Dist: inflection; extra == "psql"
|
99
|
-
Requires-Dist: cryptography~=42.0; extra == "psql"
|
100
|
-
Requires-Dist: packaging; extra == "psql"
|
101
71
|
Requires-Dist: shtab; extra == "psql"
|
102
|
-
Requires-Dist:
|
103
|
-
Requires-Dist: psycopg2; extra == "psql"
|
104
|
-
Requires-Dist: colorama; extra == "psql"
|
72
|
+
Requires-Dist: domain2idna~=1.12.0; extra == "psql"
|
105
73
|
Requires-Dist: PyYAML; extra == "psql"
|
106
74
|
Requires-Dist: PyMySQL; extra == "psql"
|
107
|
-
Provides-Extra:
|
108
|
-
Requires-Dist:
|
109
|
-
Requires-Dist:
|
75
|
+
Provides-Extra: psql-binary
|
76
|
+
Requires-Dist: python-box[all]~=6.0.0; extra == "psql-binary"
|
77
|
+
Requires-Dist: colorama; extra == "psql-binary"
|
78
|
+
Requires-Dist: requests[socks]<3; extra == "psql-binary"
|
79
|
+
Requires-Dist: setuptools>=65.5.1; extra == "psql-binary"
|
80
|
+
Requires-Dist: dnspython[DOH]~=2.6.0; extra == "psql-binary"
|
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"
|
89
|
+
Requires-Dist: PyYAML; extra == "psql-binary"
|
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"
|
110
188
|
|
111
189
|

|
112
190
|
|
@@ -156,6 +234,7 @@ Happy testing with PyFunceble!
|
|
156
234
|
- [Installation](#installation)
|
157
235
|
- [Packages \& Versioning](#packages--versioning)
|
158
236
|
- [PyPi - Python Package Index](#pypi---python-package-index)
|
237
|
+
- [Optional Dependencies](#optional-dependencies)
|
159
238
|
- [pyfunceble](#pyfunceble)
|
160
239
|
- [pyfunceble-dev](#pyfunceble-dev)
|
161
240
|
- [Container Image Registry](#container-image-registry)
|
@@ -219,10 +298,36 @@ the OS specific packages _(see below)_.
|
|
219
298
|
Here is an overview of the packages and where they are hosted.
|
220
299
|
|
221
300
|
| Package | PyPi Link |
|
222
|
-
|
301
|
+
| -------------- | ---------------------------------------- |
|
223
302
|
| pyfunceble | https://pypi.org/project/PyFunceble |
|
224
303
|
| pyfunceble-dev | https://pypi.org/project/PyFunceblee-dev |
|
225
304
|
|
305
|
+
### Optional Dependencies
|
306
|
+
|
307
|
+
The following dependencies are optional and can be installed if you need them.
|
308
|
+
|
309
|
+
| Dependency | Description |
|
310
|
+
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
311
|
+
| `all` | Install all functional dependencies. Basically all but `dev`, `test` and `docs`. _When a binary and non binary version is available, the binary version is installed._ |
|
312
|
+
| `full` | Install all dependencies listed below. _When a binary and non binary version is available, the binary version is installed._ |
|
313
|
+
| `psql`, `postgresql` | **Build** and install the dependencies required to interact with PostgreSQL. |
|
314
|
+
| `psql-binary`, `postgresql-binary` | **Install** the dependencies required to interact with PostgreSQL - from binary. |
|
315
|
+
| `docs` | Install the dependencies required to build the documentation. |
|
316
|
+
| `test` | Install the dependencies required to run the tests. |
|
317
|
+
| `dev` | Install the dependencies required to develop PyFunceble. |
|
318
|
+
|
319
|
+
They are intended to be installed through the following syntax:
|
320
|
+
|
321
|
+
```shell
|
322
|
+
pip3 install --user {pkg}[{dependency}]
|
323
|
+
```
|
324
|
+
|
325
|
+
As an example if you want to install the `docs` and `test` dependencies, you should run:
|
326
|
+
|
327
|
+
```shell
|
328
|
+
pip3 install --user pyfunceble[docs,test]
|
329
|
+
```
|
330
|
+
|
226
331
|
### pyfunceble
|
227
332
|
|
228
333
|
You can install the **pyfunceble** through `pip3`:
|
@@ -255,7 +360,7 @@ is available. :smile:
|
|
255
360
|
Here is an overview of the packages and where they are hosted.
|
256
361
|
|
257
362
|
| Host | Package | Link |
|
258
|
-
|
363
|
+
| ---------- | -------------- | -------------------------------------------------------------------------------------------------------- |
|
259
364
|
| Docker Hub | pyfunceble | [https://hub.docker.com/r/pyfunceble/pyfunceble](https://hub.docker.com/r/pyfunceble/pyfunceble) |
|
260
365
|
| Docker Hub | pyfunceble-dev | [https://hub.docker.com/r/pyfunceble/pyfunceble-dev](https://hub.docker.com/r/pyfunceble/pyfunceble-dev) |
|
261
366
|
|
@@ -305,7 +410,7 @@ this is probably for you.
|
|
305
410
|
Here is an overview of the packages and where they are hosted.
|
306
411
|
|
307
412
|
| Host | Package | Repository |
|
308
|
-
|
413
|
+
| ------ | -------------- | ----------------------------------------------------------------------- |
|
309
414
|
| GitHub | pyfunceble | `git+https://github.com/funilrys/PyFunceble.git@master#egg=PyFunceble` |
|
310
415
|
| GitHub | pyfunceble-dev | `git+https://github.com/funilrys/PyFunceble.git@dev#egg=PyFunceble-dev` |
|
311
416
|
| GitLab | pyfunceble | `git+https://gitlab.com/funilrys/PyFunceble.git@master#egg=PyFunceble` |
|
@@ -474,7 +579,7 @@ From source:
|
|
474
579
|
|
475
580
|
```shell
|
476
581
|
# Install dependencies.
|
477
|
-
pip install --user
|
582
|
+
pip install --user .[docs]
|
478
583
|
# Serve documentation locally.
|
479
584
|
mkdocs serve
|
480
585
|
# Open Documentation with browser.
|